Skip to content

feat: design & quality uplift (Suspect Web, Case Archive, world switcher, renderer decomposition) #207

feat: design & quality uplift (Suspect Web, Case Archive, world switcher, renderer decomposition)

feat: design & quality uplift (Suspect Web, Case Archive, world switcher, renderer decomposition) #207

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
# Cancel a PR's superseded in-flight runs when a new commit is pushed; main runs
# are keyed by ref and never auto-cancelled.
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
check:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [24.x]
steps:
- uses: actions/checkout@v5
- name: Install pnpm
# Version comes from the "packageManager" field in package.json.
uses: pnpm/action-setup@v6
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: ${{ matrix.node-version }}
cache: "pnpm"
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run checks (prettier, eslint, stylelint, typecheck, vitest, build)
run: pnpm check
# End-to-end Playwright specs. Non-blocking (continue-on-error) and the visual
# snapshot test is excluded: the committed screenshot baselines are
# platform-specific and the Linux baseline can drift from macOS-generated ones,
# so it stays a local/manual check (`pnpm e2e`). This job still surfaces real
# structural/behavioral layout regressions on every PR.
e2e:
runs-on: ubuntu-latest
needs: check
continue-on-error: true
# Hard backstop: e2e runs the suite against a `next dev` server (see
# playwright.config.ts), which cold-compiles each route on first hit; this
# caps a hung run rather than letting it idle for the default 6h.
timeout-minutes: 20
strategy:
matrix:
node-version: [24.x]
steps:
- uses: actions/checkout@v5
- name: Install pnpm
uses: pnpm/action-setup@v6
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: ${{ matrix.node-version }}
cache: "pnpm"
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Install Playwright browsers
run: pnpm exec playwright install --with-deps chromium
- name: Run e2e (excluding visual snapshot)
run: pnpm exec playwright test --grep-invert "matches snapshot"