Testing
This guide describes how to run Mission Control tests locally.
Quick start (repo root)
make setup
make check
make check is the closest thing to “CI parity”:
- backend: lint + typecheck + unit tests (with scoped coverage gate)
- frontend: lint + typecheck + unit tests (Vitest) + production build
Backend tests
From repo root:
make backend-test
make backend-coverage
Or from backend/:
cd backend
uv run pytest
Notes:
- Some tests may require a running Postgres (see root
compose.yml). make backend-coverageenforces a strict coverage gate on a scoped set of modules.
Frontend tests
From repo root:
make frontend-test
Or from frontend/:
cd frontend
npm run test
npm run test:watch
End-to-end (Cypress)
The frontend has Cypress configured in frontend/cypress/.
Typical flow:
- Start the stack (or start backend + frontend separately)
- Run Cypress
Example (two terminals):
# terminal 1
cp .env.example .env
docker compose -f compose.yml --env-file .env up -d --build
# terminal 2
cd frontend
npm run e2e
Or run interactively:
cd frontend
npm run e2e:open