Trois ajustements successifs sur le dialogue de sélection de recette (RecipePickerDialog), demandés en continu après le premier correctif de débordement : 1. Dialogue élargi et à hauteur fixe (95vw plafonné à 85rem, 80vh) au lieu de dépendre du contenu, avec la répartition liste/détail redéfinie en fractions du dialogue lui-même (3fr/2fr) plutôt qu'en vw — cette dernière suivait la largeur du viewport, sans rapport avec la largeur désormais fixe du dialogue. 2. Le formulaire de revue d'import (ex-ImportRecipePage) est extrait dans un composant partagé, RecipeImportForm — toujours monté en page autonome (route directe/rechargement), mais désormais aussi intégré comme une étape du dialogue lui-même quand un item de source a besoin d'une résolution manuelle, au lieu de naviguer et perdre le contexte du picker (recherche, filtres, créneau). 3. Cliquer sur une recette dans le dialogue ne fait plus que la sélectionner/prévisualiser (RecipeDetailPanel, comme /recettes) — plus de saut automatique vers l'étape suivante. Un nouveau pied de dialogue (Dialog.tsx gagne une prop ) porte Confirmer/ Fermer : Confirmer agit sur la sélection en cours (recette réelle → étape portions existante ; item de source pas encore importé → import transparent ou formulaire intégré, point 2). Les onglets réguliers gagnent leur propre paire maître-détail (RecipeTable + RecipeDetailPanel, showActions=false) sur ce même modèle ; les onglets source prévisualisent désormais aussi les items déjà importés en interne (RecipeSourcesPanel), plus de saut direct. Cypress (planning.feature/planning.ts) mis à jour en conséquence : sélectionner puis confirmer sont deux étapes distinctes, le clic sur la ligne ne déclenche plus rien tout seul. Bug pré-existant trouvé en testant en direct (sans rapport avec ce qui précède) : l'import d'une recette source plante avec une contrainte d'unicité Prisma dès que deux lignes d'ingrédient se résolvent au même ingrédient catalogue — signalé séparément (tâche en arrière-plan), pas corrigé ici. Vérifié en direct (navigateur, comptes de test) : sélection sans saut d'écran, pied de dialogue activé/désactivé correctement, Confirmer sur un item de source non résolu bascule vers le formulaire intégré, Fermer ferme bien le dialogue. pnpm exec tsc -b --force (web) — propre. pnpm exec biome check — propre. pnpm --filter web build — propre. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
59 lines
3.1 KiB
Gherkin
59 lines
3.1 KiB
Gherkin
Feature: Adding a recipe to the planning
|
|
As a signed-in user
|
|
I want to add a recipe to a planning slot even when I haven't imported it yet
|
|
So that browsing an external source and planning it is a single trip
|
|
|
|
Background:
|
|
Given I am signed in as "Alice" "Martin"
|
|
And my household id is 1
|
|
And today is frozen at "2026-08-17T09:00:00.000Z"
|
|
And the household request returns no household
|
|
And the recipe catalog contains nothing
|
|
And the ingredient and diet catalog is available for import
|
|
And the sources reference list has options
|
|
And the household has enabled TheMealDB
|
|
And browsing TheMealDB returns some items
|
|
And the planning request returns nothing
|
|
|
|
Scenario: Selecting a source item only previews it, the footer's Confirmer is what acts on it
|
|
Given previewing TheMealDB item "9999" is available
|
|
When I visit "/"
|
|
And I click the add button for the first empty planning slot
|
|
And I click the button "TheMealDB"
|
|
And I click the source item "Fish Pie"
|
|
Then the recipe detail panel heading should be "Fish Pie"
|
|
And the URL should be the home page
|
|
|
|
Scenario: Confirming a not-yet-imported source item lands on the embedded review form since an ingredient needs resolving
|
|
Given previewing TheMealDB item "9999" is available
|
|
And importing the previewed item will succeed and return id 99
|
|
And adding the imported recipe to the planning will succeed
|
|
When I visit "/"
|
|
And I click the add button for the first empty planning slot
|
|
And I click the button "TheMealDB"
|
|
And I click the source item "Fish Pie"
|
|
And I click the button "Confirmer"
|
|
Then I should see "Cette recette sera automatiquement ajoutée à votre planning une fois importée."
|
|
|
|
When I choose an ingredient for the unresolved line "some mystery paste"
|
|
And I select the ingredient "Sel" from the picker
|
|
And I select unit "unité" for the first ingredient
|
|
And I fill in the last ingredient's quantity with "1" and unit "unité"
|
|
And I click the button "Importer"
|
|
Then the planning add request should have included recipe 99, weekDay "lundi", meal "petit-dejeuner", and portions 4
|
|
And the recipe picker dialog should be closed
|
|
And the recipe "Fish Pie" should appear in the first planning slot with 4 portions
|
|
|
|
Scenario: Confirming a fully-resolved not-yet-imported item adds it to the planning transparently, with no review screen at all
|
|
Given previewing TheMealDB item "7777" is fully resolved as "Ratatouille"
|
|
And importing item "7777" will succeed and return id 100
|
|
And adding recipe 100 to the planning will succeed
|
|
When I visit "/"
|
|
And I click the add button for the first empty planning slot
|
|
And I click the button "TheMealDB"
|
|
And I click the source item "Ratatouille"
|
|
And I click the button "Confirmer"
|
|
Then the import request for "7777" should have included the name "Ratatouille"
|
|
And the planning add request should have included recipe 100, weekDay "lundi", meal "petit-dejeuner", and portions 4
|
|
And the recipe picker dialog should be closed
|
|
And the recipe "Ratatouille" should appear in the first planning slot with 4 portions
|