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).
33 lines
1.4 KiB
Gherkin
33 lines
1.4 KiB
Gherkin
Feature: Managing a recipe from the catalog
|
|
As a signed-in user
|
|
I want to favorite or delete one of my recipes
|
|
So that I can curate my catalog as it grows
|
|
|
|
Background:
|
|
Given I am signed in as "Alice" "Martin"
|
|
And my household id is 1
|
|
And the disliked ingredients list is empty
|
|
|
|
Scenario: Toggles a recipe's favorite from the detail panel and reflects it in the table
|
|
Given the recipe catalog contains "Omelette"
|
|
And recipe 2's detail is available
|
|
And toggling recipe 2's favorite will succeed
|
|
When I visit "/recettes/2"
|
|
Then the recipe "Omelette" should not be marked as favorite
|
|
When I click the favorite star
|
|
Then the favorite request should have been made
|
|
And the favorite star should be marked as favorite
|
|
And the recipe "Omelette" should be marked as favorite
|
|
|
|
Scenario: Deletes a recipe after a two-step confirmation, then clears the selection
|
|
Given the recipe catalog contains "Omelette"
|
|
And recipe 2's detail is available
|
|
And deleting recipe 2 will succeed
|
|
When I visit "/recettes/2"
|
|
Then the recipe detail panel heading should be "Omelette"
|
|
When I click "Supprimer" in the recipe detail panel
|
|
And I confirm the deletion in the recipe detail panel
|
|
Then the delete request should have been made
|
|
And the URL should match the recipes list
|
|
And the recipe "Omelette" should not be visible in the table
|
|
And I should see "Sélectionnez une recette dans le tableau"
|