chore: daily metrics snapshot 2026-05-22 #1483
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| check: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: pnpm/action-setup@v5 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: 22 | |
| cache: pnpm | |
| - run: pnpm install --frozen-lockfile | |
| - run: pnpm lint | |
| - run: pnpm typecheck | |
| - run: pnpm test -- --run | |
| bundle: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: pnpm/action-setup@v5 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: 22 | |
| cache: pnpm | |
| - run: pnpm install --frozen-lockfile | |
| - run: pnpm build | |
| env: | |
| NEXT_PUBLIC_SUPABASE_URL: ${{ secrets.NEXT_PUBLIC_SUPABASE_URL }} | |
| NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY: ${{ secrets.NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY }} | |
| SENTRY_ORG: ${{ secrets.SENTRY_ORG }} | |
| SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} | |
| - run: pnpm test:bundle | |
| visual: | |
| runs-on: ubuntu-latest | |
| needs: [check] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: pnpm/action-setup@v5 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: 22 | |
| cache: pnpm | |
| - run: pnpm install --frozen-lockfile | |
| - run: npx playwright install --with-deps chromium | |
| - name: Build Storybook | |
| run: pnpm build-storybook | |
| - name: Run visual regression tests | |
| run: | | |
| npx http-server storybook-static --port 6099 --silent & | |
| npx wait-on http://localhost:6099/index.json --timeout 30000 | |
| pnpm test:visual | |
| env: | |
| STORYBOOK_URL: http://localhost:6099 | |
| BASE_URL: http://localhost:6099 | |
| - name: Upload diff artifacts | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: visual-regression-diffs | |
| path: test-results/ | |
| retention-days: 14 | |
| e2e: | |
| runs-on: ubuntu-latest | |
| needs: [check, bundle] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: pnpm/action-setup@v5 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: 22 | |
| cache: pnpm | |
| - run: pnpm install --frozen-lockfile | |
| - run: npx playwright install --with-deps chromium | |
| - name: Run unauthenticated E2E tests | |
| run: pnpm test:e2e -- e2e/auth.spec.ts e2e/public-routes.spec.ts | |
| env: | |
| NEXT_PUBLIC_SUPABASE_URL: ${{ secrets.NEXT_PUBLIC_SUPABASE_URL }} | |
| NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY: ${{ secrets.NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY }} | |
| gate: | |
| if: always() | |
| runs-on: ubuntu-latest | |
| needs: [check, bundle, e2e, visual] | |
| steps: | |
| - name: Check required jobs | |
| run: | | |
| if [[ "${{ needs.check.result }}" != "success" ]]; then | |
| echo "check job failed" | |
| exit 1 | |
| fi | |
| if [[ "${{ needs.bundle.result }}" != "success" ]]; then | |
| echo "bundle job failed" | |
| exit 1 | |
| fi | |
| if [[ "${{ needs.e2e.result }}" != "success" ]]; then | |
| echo "e2e job failed" | |
| exit 1 | |
| fi | |
| if [[ "${{ needs.visual.result }}" != "success" ]]; then | |
| echo "visual job failed" | |
| exit 1 | |
| fi | |
| echo "All required jobs passed" |