Guidelines for testing the application with Vitest, including unit tests, integration tests (emulator), AI tests, and eval suites for LLM features
All testing guidance lives in this directory. Read the relevant file for your task:
| Type | File | When to use |
|---|---|---|
| Unit tests | unit.md | Framework setup, mocks, colocated tests |
| Writing tests | write-tests.md | What to test, what to skip, workflow |
| LLM tests | llm.md | Tests that call real LLMs (pnpm test-ai) |
| Eval suite | eval.md | Cross-model comparison, LLM-as-judge |
| Integration |
| integration.md |
Emulator-backed tests (pnpm test-integration) |
| E2E tests | e2e.md | Real email workflow tests from inbox-zero-e2e repo |
Prefer behavior-focused assertions; avoid freezing prompt copy or internal call shapes unless those exact values are the contract under test.
pnpm test -- path/to/file.test.ts # Single unit test
pnpm test --run # All unit tests
pnpm test-integration # Integration tests (emulator)
pnpm test-ai ai-regression/your-feature # Live AI regression test
EVAL_MODELS=all pnpm test-ai eval/your-feature # Eval across models