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).
67 lines
3.1 KiB
Gherkin
67 lines
3.1 KiB
Gherkin
Feature: Onboarding wizard
|
|
As a newly signed-up user
|
|
I want to set my diet, household, and allergens
|
|
So that my profile is ready before I start planning meals
|
|
|
|
Background:
|
|
Given the planning request returns nothing
|
|
|
|
Scenario: Walks through all three steps, creating a household on the way, and lands on the home page
|
|
Given the diets reference list has options
|
|
And selecting the diet will succeed
|
|
And the household request returns no household
|
|
And creating a household will succeed
|
|
And the allergies reference list has options
|
|
And updating allergies will succeed
|
|
And I have signed up
|
|
Then the URL should include "/onboarding/regime"
|
|
And I should see "Étape 1 sur 3"
|
|
When I select "Végétarien" from the "diet" field
|
|
And I click the button "Continuer"
|
|
Then the diet update request should have been made with diet id 2
|
|
And the URL should include "/onboarding/foyer"
|
|
And I should see "Étape 2 sur 3"
|
|
When 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 the URL should include "/onboarding/allergenes"
|
|
And I should see "Étape 3 sur 3"
|
|
And I should see the section "Allergies"
|
|
And I should see the section "Intolérances"
|
|
When I check the checkbox "Arachides"
|
|
And I click the button "Terminer"
|
|
Then the allergies update request should have been made with allergy id 1
|
|
And the URL should be the home page
|
|
And I should see the heading "Planning de la semaine"
|
|
|
|
Scenario: Lets the regime and allergens steps be skipped without changing anything
|
|
Given the diets reference list is empty
|
|
And selecting the diet will succeed
|
|
And the household request returns no household
|
|
And the allergies reference list is empty
|
|
And updating allergies will succeed
|
|
And I have signed up
|
|
Then the URL should include "/onboarding/regime"
|
|
When I click the button "Continuer"
|
|
Then the diet update request should have been made with no diet id
|
|
And the URL should include "/onboarding/foyer"
|
|
When I click the button "Passer cette étape"
|
|
Then the URL should include "/onboarding/allergenes"
|
|
When I click the button "Terminer"
|
|
Then the allergies update request should have been made with no allergy ids
|
|
And the URL should be the home page
|
|
|
|
Scenario: Lets the household step be completed by joining an existing household instead of creating one
|
|
Given the diets reference list is empty
|
|
And selecting the diet will succeed
|
|
And the household request returns no household
|
|
And joining a household will succeed
|
|
And the allergies reference list is empty
|
|
And updating allergies will succeed
|
|
And I have signed up
|
|
When I click the button "Continuer"
|
|
Then the URL should include "/onboarding/foyer"
|
|
When 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 the URL should include "/onboarding/allergenes"
|