Problem
.github/workflows/e2e-tests.yml is the only PR/push workflow, and it runs a single job: npm ci, npx playwright install, npm run test:e2e. The unit suite (vitest, ~20 test files in tests/ and src/), ESLint, and any typecheck never execute in CI. Consequences:
- Red code merges silently: a failing unit test, a lint error, or a type error in an unused module does not block a PR — the e2e suite (which currently exercises only a few journeys) can pass while the unit suite is red.
- The repo's own gates are unenforced: the project ships
npm run lint and npm test scripts; nothing runs them automatically, so their value depends on every contributor remembering.
- The companion infra issues (typecheck script, codegen verification) have no home: any "add X to CI" work is unmoored until the CI pipeline is the place where checks run.
Root cause
The CI workflow was added for e2e coverage only (the unit/lint steps either were never added or were removed with the backend CI cleanup).
Why this is architecturally hard
- Adding unit + lint + typecheck jobs is straightforward, but the ordering and caching matter:
npm ci is shared, Playwright browsers are a heavy install that should not run on every job, and vitest/next build can conflict on cache dirs.
- The e2e workflow currently assumes a running app+backend (the specs hit real routes); a unit/lint job must NOT depend on the backend, so the workflow needs job separation (unit first, e2e after).
- Deciding the merge gate (required checks) is a repo-administration step; the workflow must be the artifact that makes it possible.
Proposed design
Add unit-test, lint, and typecheck jobs (or steps) to .github/workflows/e2e-tests.yml (or a new ci.yml), run them on every PR and push to main, and document the required-check expectations. Verify the jobs pass on the current tree.
Acceptance criteria
Service
Tests
Out of scope
OpenAPI codegen verification (open issue #272) and the backend CI.
Getting started
npm test && npm run lint && npx tsc --noEmit
Good first files to read: .github/workflows/e2e-tests.yml, package.json.
Problem
.github/workflows/e2e-tests.ymlis the only PR/push workflow, and it runs a single job:npm ci,npx playwright install,npm run test:e2e. The unit suite (vitest, ~20 test files intests/andsrc/), ESLint, and any typecheck never execute in CI. Consequences:npm run lintandnpm testscripts; nothing runs them automatically, so their value depends on every contributor remembering.Root cause
The CI workflow was added for e2e coverage only (the unit/lint steps either were never added or were removed with the backend CI cleanup).
Why this is architecturally hard
npm ciis shared, Playwright browsers are a heavy install that should not run on every job, and vitest/next build can conflict on cache dirs.Proposed design
Add unit-test, lint, and typecheck jobs (or steps) to
.github/workflows/e2e-tests.yml(or a newci.yml), run them on every PR and push to main, and document the required-check expectations. Verify the jobs pass on the current tree.Acceptance criteria
Service
Tests
Out of scope
OpenAPI codegen verification (open issue #272) and the backend CI.
Getting started
Good first files to read:
.github/workflows/e2e-tests.yml,package.json.