Convertit les parcours utilisateur (goal-driven, "en tant que X je peux Y") en scénarios Gherkin, en réutilisant l'infra Cucumber déjà validée par le smoke test (PR #24). Retire le smoke test jetable maintenant superflu. 8 fichiers .feature ajoutés, chacun avec son fichier de step definitions au même basename (convention de découverte du préprocesseur — voir login-smoke.ts) : - auth.feature : inscription (succès, erreur validation, email déjà pris), connexion (succès, identifiants invalides), déconnexion - onboarding.feature : les 3 scénarios déjà couverts (wizard complet, étapes sautées, rejoindre un foyer pendant l'onboarding) — dépend de household-settings.ts et preferences.ts pour ses steps de création/rejoint de foyer et de sélection de régime/allergies - household-settings.feature : créer un foyer, rejoindre par code d'invitation, renommer (autosave), retirer un membre, supprimer le foyer, quitter le foyer - account.feature : suppression de compte (mauvais mot de passe, succès, annulation) - recipe-form.feature : les 4 scénarios déjà couverts inchangés (ajout d'ingrédient + création, régression crypto.randomUUID, exclusion/ réinclusion d'ingrédient, préchargement + édition d'une recette existante) - recipes.feature : bascule favori, suppression d'une recette - preferences.feature : autosave du régime, autosave des allergies - user-preferences.feature : changement de thème (autosave) En contrepartie, les anciens .cy.ts perdent uniquement les it() migrés vers Gherkin — les scénarios de layout/affichage pur (catalogue de recettes, tabs, recherche, panneau de détail, sidebar, planning grid, etc.) restent en Cypress classique, conformément au découpage "parcours utilisateur (Cucumber) vs layout (Cypress pur)" déjà en place pour les component tests. auth.cy.ts, onboarding.cy.ts et recipe-form.cy.ts sont supprimés : 100% de leur contenu a migré. Les commentaires "voir auth.cy.ts pour la justification" désormais obsolètes (fichier supprimé) sont remplacés par une explication autonome du mock cy.intercept. Vérifié statiquement : les 246 steps Gherkin des 8 .feature résolvent chacun vers exactement une définition (0 non résolu, 0 ambigu) et `pnpm exec biome check` est propre sur tout cypress/. Reste à confirmer en CI que les scénarios passent réellement (pas seulement qu'ils se résolvent).
64 lines
2.6 KiB
Gherkin
64 lines
2.6 KiB
Gherkin
Feature: Household settings
|
|
As a signed-in user
|
|
I want to create, join, manage, or leave a household
|
|
So that I can share a batch-cooking plan with the people I cook with
|
|
|
|
Scenario: Creates a household
|
|
Given I am signed in as "Alice" "Martin"
|
|
And creating a household will succeed
|
|
When I visit "/parametres/foyer"
|
|
And I fill in the "houseName" field with "Chez Alice"
|
|
And I click the button "Créer"
|
|
Then the household creation request should have been made with name "Chez Alice"
|
|
And I should see "ABCD2345"
|
|
|
|
Scenario: Joins a household by invite code
|
|
Given I am signed in as "Alice" "Martin"
|
|
And joining a household will succeed
|
|
When I visit "/parametres/foyer"
|
|
And I fill in the "inviteCode" field with "abcd2345"
|
|
And I click the button "Rejoindre"
|
|
Then the household join request should have been made with invite code "ABCD2345"
|
|
And I should see "Bob Dupont"
|
|
|
|
Scenario: Autosaves the household name
|
|
Given I am signed in as "Alice" "Martin"
|
|
And my household id is 1
|
|
And the household request returns the two-member household
|
|
And renaming the household will succeed
|
|
When I visit "/parametres/foyer"
|
|
And I clear the "houseName" field
|
|
And I fill in the "houseName" field with "Chez les Martin"
|
|
Then the household rename request should have been made with name "Chez les Martin"
|
|
And I should see "Enregistré ✓"
|
|
|
|
Scenario: Removes a member
|
|
Given I am signed in as "Alice" "Martin"
|
|
And my household id is 1
|
|
And the household request returns the two-member household
|
|
And removing Bob from the household will succeed
|
|
When I visit "/parametres/foyer"
|
|
And I click "Retirer" for the member "Bob Dupont"
|
|
Then the member removal request should have been made
|
|
And I should not see "Bob Dupont"
|
|
|
|
Scenario: Deletes the household after confirming
|
|
Given I am signed in as "Alice" "Martin"
|
|
And my household id is 1
|
|
And the household request returns the two-member household
|
|
And deleting the household will succeed
|
|
When I visit "/parametres/foyer"
|
|
And I click the button "Supprimer le foyer"
|
|
And I click the button "Confirmer la suppression"
|
|
Then the household deletion request should have been made
|
|
And I should see "Créer un foyer"
|
|
|
|
Scenario: Leaves the household
|
|
Given I am signed in as "Bob" "Dupont"
|
|
And my user id is 2
|
|
And my household id is 1
|
|
And the household request returns the two-member household
|
|
And leaving the household will succeed
|
|
When I visit "/parametres/foyer"
|
|
And I click the button "Quitter le foyer"
|
|
Then the household leave request should have been made
|