diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..1539c8b --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,3 @@ +# Instructions du projet + +Avant toute action de génération de code, lis attentivement le fichier `specs\dev-conventions.md` pour prendre connaissance de l'ensemble des normes de développement à appliquer impérativement \ No newline at end of file diff --git a/specs/dev-conventions.md b/specs/dev-conventions.md index 572e70e..0636313 100644 --- a/specs/dev-conventions.md +++ b/specs/dev-conventions.md @@ -206,6 +206,35 @@ directement à l'utilisateur). ## Tests +### Couverture obligatoire pour tout ajout + +- **Ajout front autonome** (un composant réutilisable, sans routeur ni + backend — `components/ui/*`) : test Cypress en **mode composant** + (`cypress/component/*.cy.tsx`, voir `CheckboxOption.cy.tsx`/ + `RadioOption.cy.tsx`) — monte le composant seul, sans app autour. +- **Ajout front non autonome** (n'a de sens que dans son contexte de + page/layout — un élément de sidebar, une section d'une page existante) : + test Cypress en **mode layout**, un spec `.cy.ts` classique dans + `cypress/e2e/` (voir `layout.cy.ts`, `sidebar.cy.ts`, + `planning-page.cy.ts`) — pas de scénario Gherkin, juste la page routée + normalement. +- **Toute nouvelle fonctionnalité front** (un vrai parcours utilisateur, pas + juste un composant/élément isolé) : test Cypress **e2e**, un scénario + Gherkin ("En tant que... je veux...") dans un `.feature` + ses définitions + d'étapes, en réutilisant `cypress/support/step_definitions/ + common.steps.ts` quand c'est possible (voir `planning.feature`, + `recipe-sources.feature`). S'ajoute au test "mode layout" ci-dessus, ne le + remplace pas — une fonctionnalité a généralement les deux : le layout qui + l'affiche, et le parcours qui l'utilise. +- **Tout ajout back testable** (logique pure, endpoint, service — tout ce + qui n'est pas du pur câblage/de la config) : test Mocha + Chai dans + `apps/api/test/`, même convention que le reste de la suite (voir + ci-dessous). "Testable" exclut les routes déjà couvertes par les tests + d'intégration du module (pas de doublon), pas la logique métier + elle-même. + +### Conventions générales + - **`apps/api`** — Mocha + Chai, contre une vraie base Postgres isolée (`.env.test`, jamais la même base que `pnpm dev:api`), pas de mocks de la base ou des services internes. Seule exception : le premier module à parler