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@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 with: cache: "pnpm" node-version: "lts/*" - name: Install dependencies working-directory: packages/shared-components run: pnpm install --frozen-lockfile - name: Setup playwright uses: ./.github/actions/setup-playwright with: write-cache: ${{ github.event_name != 'merge_group' }} - name: Run Visual tests working-directory: packages/shared-components run: "pnpm test:storybook --run" - name: Detect stale screenshots run: | if diff -rq __baselines__ __results__ | grep "^Only in __baselines__"; then exit 1 fi working-directory: packages/shared-components/__vis__/linux - name: Upload received images & diffs if: always() uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: name: received-images path: packages/shared-components/__vis__/linux