Skip to main content

Continuous integration

.github/workflows/test.yml runs on every push to main and every pull request. A newer run on the same ref cancels an older one. It needs no secrets: everything it runs is offline.

Jobs​

Typecheck and unit tests (Ubuntu, Node 22, 15-minute limit):

  1. npm ci
  2. npm run typecheck: every workspace and the root tooling project.
  3. npm run docs:reference -- --check: fails if the generated reference pages in these docs are out of date with the code.
  4. npm run test:coverage: Vitest with the per-layer coverage gates.
  5. Uploads coverage/ as an artifact, kept 14 days.

End-to-end (Ubuntu, Node 22, 20-minute limit):

  1. npm ci
  2. npx playwright install --with-deps chromium
  3. npm run test:e2e: builds, starts a fresh test Worker, runs every spec with two retries.
  4. On failure, uploads playwright-report/ and test-results/ (traces, screenshots, video), kept 14 days.

Reproducing a failure locally​

npm run test:all # the same steps as CI, in order
CI=1 npm run test:e2e # force a fresh Worker and CI retries
npx playwright show-trace test-results/<test>/trace.zip
FailureUsually
docs:reference -- --checkA capability, tool, prompt, scenario or the Claim schema changed. Run npm run docs:reference and commit the result.
A coverage gateNew code without tests, or tests deleted. The summary names the layer.
e2e/api.spec.ts offline guardThe test Worker is not offline. Check e2e/worker.env.
An e2e timeout on the web serverThe build failed, or :8799 is taken by something else.

Deploys​

CI does not deploy. Deploys are either manual (npm run deploy) or through Workers Builds. See Deploying.