name: Shared Component Visual Tests on: pull_request: {} merge_group: types: [checks_requested] push: branches: [develop, master] concurrency: group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} cancel-in-progress: true permissions: {} # No permissions required jobs: testStorybook: name: "Run Visual Tests" runs-on: ubuntu-24.04 permissions: actions: read issues: read pull-requests: read steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: persist-credentials: false repository: element-hq/element-web - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6 with: cache: "pnpm" node-version: "lts/*" - name: Install dependencies working-directory: packages/shared-components run: pnpm install --frozen-lockfile - name: Get installed Playwright version working-directory: packages/shared-components id: playwright run: echo "version=$(pnpm list @playwright/test --depth=0 --json | jq -r '.[].devDependencies["@playwright/test"].version')" >> $GITHUB_OUTPUT - name: Cache playwright binaries uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5 id: playwright-cache with: path: ~/.cache/ms-playwright key: ${{ runner.os }}-${{ runner.arch }}-playwright-${{ steps.playwright.outputs.version }}-onlyshell - name: Install Playwright browsers working-directory: packages/shared-components if: steps.playwright-cache.outputs.cache-hit != 'true' run: "pnpm playwright install --with-deps --only-shell" - name: Run Visual tests working-directory: packages/shared-components run: "pnpm test:storybook --run" # Workaround for vis silently adding new baselines if they didn't exist # Can be removed once https://github.com/repobuddy/visual-testing/issues/516 is released - run: | git add -N . git diff --exit-code - name: Upload received images & diffs if: always() uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7 with: name: received-images path: packages/shared-components/__vis__/linux