This guide covers maintainer-focused workflows and CI details.
npm run setup
npm run lint
npm run lint:typed
npm run typecheck:prod
npm test
npm run quality:ci
npm run test:parity:headed
npm run test:flake:soak
npm run test:coverage
npm run build
npm run test:smokenpm test includes architecture boundary checks (see src/architecture/layer-boundaries.test.ts).
Optional strictness ratchet for tests:
npm run typecheck:testtypecheck:test is currently non-blocking in CI.
Before publishing/consuming from a repo branch:
npm run build
npm run test:smokeRelease preflight:
npm pack --dry-runWorkflows run on GitHub-hosted ubuntu-latest runners.
Primary CI workflow (.github/workflows/ci.yml) has these jobs:
quality-ci: runs as a Node20/22matrix, installs Chromium, runsnpm run quality:ci, thennpm run test:coverage.headed-parity: installs Chromium, runsxvfb-run -a npm run test:parity:headed; suite resolution fails fast if configured parity suites resolve to zero files.build: runs as a Node20/22matrix and executesnpm run build,npm run typecheck:prod, and packaging/install dry-run checks.consumer-smoke: runsnpm run test:smokeafterquality-ci,headed-parity, andbuildsucceed.
Optional soak workflow:
.github/workflows/flake-soak.yml: scheduled/manual multi-iteration integration soak; uploads JSON failure-rate report artifact.
The current recorder is Playwright-codegen-first. Chrome DevTools Recorder JSON remains supported as an import path, and legacy YAML may still contain older codegen-jsonl / codegen-fallback source tags.
Configured in vitest.config.ts:
- Lines: 82%
- Functions: 90%
- Branches: 65%
- Statements: 80%
See snapshot notes in docs/test-coverage-report.md.
- Project license: MIT (
LICENSE) - Playwright attribution:
THIRD_PARTY_NOTICES.md