39 lines
1.5 KiB
Markdown
39 lines
1.5 KiB
Markdown
# Testing
|
|
|
|
Assume nothing about correctness — prove it with tests.
|
|
|
|
## Unit Tests
|
|
|
|
- Write the test first for non-trivial logic (TDD). Implement until it passes.
|
|
- Every new function/method/module with logic gets unit tests.
|
|
- Run existing tests after every change. Fix breaks before moving on.
|
|
|
|
## Integration Tests
|
|
|
|
- Test module boundaries: DB queries, external APIs, filesystem, message queues.
|
|
- Use real dependencies (or containers) — not mocks. Mocks belong in unit tests.
|
|
- Target 70/20/10 ratio: unit/integration/E2E.
|
|
|
|
## End-to-End Tests
|
|
|
|
- Critical user journeys only (~10% of suite). Test API endpoints with integration tests, not E2E.
|
|
|
|
## Browser Automation
|
|
|
|
Choose the right tool for the job:
|
|
|
|
| Tool | Use When |
|
|
|------|----------|
|
|
| **Claude in Chrome** | Authenticated sites, user's logged-in session needed |
|
|
| **Playwright MCP** | Cross-browser testing, E2E test suites, CI-style validation |
|
|
| **Puppeteer MCP** | Quick DOM scripting, page scraping, lightweight checks |
|
|
| **Chrome DevTools MCP** | Deep debugging (performance traces, network waterfall, memory) |
|
|
|
|
- Prefer Playwright for repeatable E2E tests (deterministic, headless-capable).
|
|
- Use Claude in Chrome when the test requires an existing authenticated session.
|
|
- Use DevTools MCP for performance profiling and network analysis, not functional tests.
|
|
|
|
## After Every Change
|
|
|
|
- Run the test suite, report results, fix failures before continuing.
|
|
- If no test framework exists, flag it and propose a testing strategy.
|