ci(deps): bump the actions group across 1 directory with 9 updates #53
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 | ||
|
Check failure on line 1 in .github/workflows/ci.yml
|
||
| on: | ||
| push: | ||
| branches: [main] | ||
| pull_request: | ||
| branches: [main] | ||
| # Cancel obsolete runs on the same ref. Keeps queues short and the | ||
| # PR feedback loop fast. | ||
| concurrency: | ||
| group: ${{ github.workflow }}-${{ github.ref }} | ||
| cancel-in-progress: true | ||
| permissions: | ||
| contents: read | ||
| jobs: | ||
| typecheck: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | ||
| - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 | ||
| with: | ||
| node-version: 20 | ||
| cache: npm | ||
| - run: npm ci | ||
| - run: npm run typecheck | ||
| lint: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | ||
| - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 | ||
| with: | ||
| node-version: 20 | ||
| cache: npm | ||
| - run: npm ci | ||
| - run: npm run lint | ||
| test: | ||
| runs-on: ubuntu-latest | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| node-version: [20, 22] | ||
| steps: | ||
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | ||
| - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 | ||
| with: | ||
| node-version: ${{ matrix.node-version }} | ||
| cache: npm | ||
| - run: npm ci | ||
| # Coverage thresholds live in vitest.config.ts; this command | ||
| # fails the job if any file group regresses below floor. | ||
| - run: npm run test:coverage | ||
| - name: Upload coverage report | ||
| if: matrix.node-version == 20 | ||
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | ||
| with: | ||
| name: coverage-report | ||
| path: coverage/ | ||
| retention-days: 7 | ||
| build: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | ||
| - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 | ||
| with: | ||
| node-version: 20 | ||
| cache: npm | ||
| - run: npm ci | ||
| - run: npm run build | ||
| - name: Bundle-size budget | ||
| # Hard ceiling on per-route gzip + brotli weight. Budgets are | ||
| # current size + ~3% headroom so a careless dep import fails | ||
| # the job before merging instead of being noticed in Lighthouse | ||
| # weeks later. | ||
| run: npm run size:check | ||
| # End-to-end + browser-axe sweep against the real production build. | ||
| # Catches regressions JSDOM-axe can't see (focus order in the live ARIA | ||
| # tree, computed contrast, route/CSP/hydration glitches). Runs after | ||
| # unit/build because it consumes the same artifact. | ||
| e2e: | ||
| runs-on: ubuntu-latest | ||
| needs: [typecheck, lint, test, build] | ||
| steps: | ||
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | ||
| - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 | ||
| with: | ||
| node-version: 20 | ||
| cache: npm | ||
| - run: npm ci | ||
| - name: Install Playwright browsers | ||
| # All three desktop engines plus the mobile emulations rely on | ||
| # chromium and webkit (firefox is its own bin). Skipping any | ||
| # would silently drop projects from playwright.config.ts. | ||
| run: npx playwright install --with-deps chromium firefox webkit | ||
| - run: npm run test:e2e | ||
| - name: Upload Playwright report | ||
| if: failure() | ||
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | ||
| with: | ||
| name: playwright-report | ||
| path: playwright-report/ | ||
| retention-days: 14 | ||
| # Visual regression sweep. Pinned-input deterministic build | ||
| # (NEXT_PUBLIC_MTG_DETERMINISTIC=1) plus reduced-motion + | ||
| # animation-disabled snapshots make the diff a function of layout | ||
| # and theme only. Linux baselines are committed under | ||
| # e2e/__screenshots__/; first run after baseline drift uploads the | ||
| # diff so reviewers can inspect what changed without checking out | ||
| # the branch. Trigger workflow_dispatch with refresh_baselines=true | ||
| # to overwrite committed baselines, then download + commit the | ||
| # uploaded snapshot artifact. | ||
| visual: | ||
| runs-on: ubuntu-latest | ||
| needs: [typecheck, lint, test, build] | ||
| # Skip when no Linux baselines are committed yet — first-time | ||
| # bootstrapping populates them via the Visual Baseline Refresh | ||
| # workflow (workflow_dispatch). After that, this job becomes a | ||
| # required check on every push. | ||
| if: ${{ hashFiles('e2e/__screenshots__/**/*-linux.png') != '' }} | ||
| steps: | ||
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | ||
| - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 | ||
| with: | ||
| node-version: 20 | ||
| cache: npm | ||
| - run: npm ci | ||
| - name: Install Playwright browsers | ||
| run: npx playwright install --with-deps chromium | ||
| - name: Run visual regression | ||
| run: npm run test:visual | ||
| - name: Upload diff + report on failure | ||
| if: failure() | ||
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | ||
| with: | ||
| name: visual-report | ||
| path: | | ||
| playwright-report-visual/ | ||
| test-results/ | ||
| e2e/__screenshots__/ | ||
| retention-days: 14 | ||