Tests
Protocole TDD
Règle non négociable de CLAUDE.md :
RED → GREEN → REFACTOR. Sans exception.
- RED : écrire le test, vérifier qu'il échoue pour la bonne raison
- GREEN : code minimal qui fait passer le test
- REFACTOR : améliorer sans casser, relancer les tests
Aucun code d'implémentation sans test rouge préalable.
L'agent tdd-specialist enforce ce cycle à chaque feature / bug fix. Il refuse d'écrire du code avant un test rouge.
Outils
| Niveau | Outil | Version | Emplacement |
|---|---|---|---|
| Unitaire / intégration | Jest + Testing Library | ^30 / ^16 | __tests__/ colocalisé avec le code |
| E2E | Playwright | ^1.59 | tests/e2e/ |
Commandes (racine)
| Commande | Action |
|---|---|
npm test | Jest en watch (dev) |
npm test -- --ci | Jest en mode CI (no watch, no interactive) |
npm run test:coverage | Jest avec coverage (seuils définis dans jest.config.ts) |
npm run test:e2e | Playwright (headless) |
npm run test:e2e -- --ui | Playwright UI mode (debug) |
Convention des tests
Jest
- Colocation :
src/lib/parsers/bourso.ts→src/lib/parsers/__tests__/bourso.test.ts - Noms en anglais, descriptions en français ou anglais selon le contexte
- Aucun mock de la base de données : pour les tests d'intégration Prisma, utiliser une base réelle (container Postgres jetable). La parité dev/prod est une exigence (ADR-001).
- Fixtures financières : toujours en
Decimal(jamaisnumber)
Playwright
- Un scénario E2E par user journey critique : login, import CSV, création de compte, plan budgétaire, dashboard
- Tests déterministes : seed de données avant chaque scénario
- Screenshots de régression (optionnel) sur les routes clés
Cadre CI
Le pipeline GitHub Actions exécute :
npm cinpm run type-checknpm test -- --cinpm run test:e2e(sur label PRe2eou avant mergemain)npm run build
Merge sur main bloqué si l'un de ces étages échoue (CLAUDE.md : « merger sur main avec des tests en échec » est interdit).
Règles dures
Interdits CLAUDE.md
- Code d'implémentation sans test rouge préalable
console.logde debug laissé dans le code@ts-ignoreoueslint-disablesans commentaire explicatif- Merge
mainavec tests en échec
Voir aussi
- Structure du projet
- Parsers CSV — exemple concret de TDD