Skip to content

Contributing

import { Steps, Aside } from ‘@astrojs/starlight/components’;

  • Node.js ≥ 20 (developed on 24)
  • pnpm ≥ 9 (developed on 11)
  • Git
  1. Clone the repository and install dependencies:

    Terminal window
    pnpm install
  2. Install Playwright’s browser binary (once per machine):

    Terminal window
    pnpm exec playwright install chromium
  3. Run the full check suite:

    Terminal window
    pnpm test
    pnpm typecheck
    pnpm lint
    pnpm build
  4. Make your change.

  5. Re-run the check suite before opening a PR.

Command What it does
pnpm build Turbo runs build in every package
pnpm test Turbo runs test in every package (vitest)
pnpm typecheck Turbo runs tsc --noEmit in every package
pnpm lint ESLint over the whole workspace
Terminal window
# terminal 1
pnpm --filter example-react-vite dev
# terminal 2
pnpm --filter @frontend-qa/cli build
node packages/cli/dist/index.js scan --url http://localhost:5173

The scan writes to examples/react-vite/.local/frontend-qa/runs/<runId>/report.json.

  1. New module under packages/browser/src/collectors/ (or a fresh package).
  2. Implements QACollector<T> from @frontend-qa/core.
  3. A Zod result schema in packages/shared/src/schemas/.
  4. toIssues maps the result to the Issue model with an evidence tag.
  5. Unit + integration test.
  6. Update docs/FLOW.md and docs/TESTING.md.
  • No any — external data enters as unknown and is Zod-validated.
  • No default exports at package boundaries.
  • Prettier defaults; ESLint enforces.
  • Conventional commits (feat(browser): …).

Publishing to npm is owner-only and never done from an automated session — see Roadmap for the planned release process.