batchCooking/apps/web/cypress/e2e/auth.feature
Nicolas aaace15b51 test(web): refactor user journeys into Cucumber scenarios
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).
2026-08-19 13:38:20 +02:00

63 lines
2.6 KiB
Gherkin

Feature: Signup and login
As a visitor
I want to create a profile or log into an existing one
So that I can access my household's batch-cooking planning
Background:
Given I am not signed in
Scenario: Signing up creates a profile and starts the onboarding wizard
Given the signup request will succeed
And the diets reference list is empty
When I sign up with:
| firstName | Alice |
| lastName | Martin |
| email | alice@example.com |
| password | correct-horse-battery-staple |
Then the signup request should have been made
And the URL should include "/onboarding/regime"
And I should see "Étape 1 sur 3"
Scenario: Signing up shows a client-side validation error without calling the API
Given the signup request is being watched
When I sign up with:
| firstName | A |
| lastName | B |
| email | a@example.com |
| password | short |
Then I should see "8 caractères minimum"
And the signup request should not have been made
Scenario: Signing up shows the API's error when the email is already taken
Given the signup request will fail because the email is already used
When I sign up with:
| firstName | Alice |
| lastName | Martin |
| email | alice@example.com |
| password | correct-horse-battery-staple |
Then the signup request should have been made
And I should see "Cet email est déjà utilisé"
Scenario: Logging in lands on the home page
Given the login request will succeed
And the planning request returns nothing
When I log in with email "alice@example.com" and password "correct-horse-battery-staple"
Then the login request should have been made
And I should see "Bonjour Alice"
Scenario: Logging in shows an error on invalid credentials
Given the login request will fail because the credentials are invalid
When I log in with email "alice@example.com" and password "wrong-password"
Then the login request should have been made
And I should see "Email ou mot de passe incorrect"
Scenario: Logging out returns to the login page
Given I am signed in as "Alice" "Martin"
And my household id is 1
And the planning request returns nothing
And the logout request will succeed
When I visit "/"
And I open the account menu
And I click the button "Se déconnecter"
Then the logout request should have been made
And the URL should include "/login"