Correction de comportement sur la gestion des recettes de sources externes — l'implémentation précédente avait dérivé d'une lecture erronée du besoin : - Plus aucun bouton d'import nulle part. Parcourir une source (RecipesPage, hors planning) ne fait plus jamais que prévisualiser — RecipeDetailPanel n'affiche plus de lien "Importer cette recette", seulement un bouton icône discret vers la page d'origine quand la recette en a une (nouveau .recipe-detail-panel__source-link, même emplacement que l'étoile favori). - Une recette externe n'est importée dans la base qu'au moment où quelqu'un l'ajoute effectivement à son planning — jamais avant. RecipePickerDialog.handleSelectDraftItem est désormais le seul endroit de toute l'appli qui importe quoi que ce soit : cliquer sur un item pas encore importé y déclenche une tentative d'import transparente (POST /sources/.../import puis POST /planning/items), sans écran intermédiaire, dès que rien ne manque (tryBuildCompleteImport, nouveau apps/web/src/features/recipes/ recipe-import-draft.ts). Seul un ingrédient non résolu (ou une erreur réseau) fait encore basculer vers l'écran de revue existant (ImportRecipePage), pré-rempli, pour compléter ce qui manque. - RecipeSourcesPanel gagne onSelectDraftItem (remplace planningSlot, qui n'a plus de raison d'être puisqu'il n'y a plus de lien d'import à qui le transmettre) : quand ce callback est fourni (RecipePickerDialog uniquement), un item pas encore importé n'est plus prévisualisé sur place, il est remonté tel quel à l'appelant. Tests : - planning.feature : le scénario existant retire l'étape "je clique le lien Importer cette recette" (redirection désormais automatique puisque le draft de test a un ingrédient non résolu) ; nouveau scénario pour le chemin transparent (draft entièrement résolu, aucun écran de revue). - recipe-sources.feature : le scénario qui important depuis /recettes (hors planning) est supprimé — cette capacité n'existe plus hors planning. Le scénario de deep-link vérifie maintenant l'absence du bouton d'import et la présence du lien discret. - pnpm exec tsc -b --force (web) — propre. - pnpm exec biome check — propre. - pnpm --filter web build — propre. - Cypress non exécutable localement sur cette machine (crash GPU Electron connu) — scénarios vérifiés par relecture attentive contre le markup/les clés i18n réels ; CI (GitHub Actions) fera foi à l'exécution. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
47 lines
2.5 KiB
Gherkin
47 lines
2.5 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 reflects whatever's been added so far
|
|
|
|
Scenario: Adds a not-yet-imported source item to a planning slot, landing on the review screen 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"
|
|
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 URL should be the home page
|
|
And the recipe "Fish Pie" should appear in the first planning slot with 4 portions
|
|
|
|
Scenario: Adds a fully-resolved not-yet-imported item to a planning slot 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"
|
|
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 URL should be the home page
|