- Zone dangereuse (compte) : le bouton "Supprimer mon compte" est rouge.
- Pages préférences/paramétrage : contenu centré et élargi (32rem -> 56rem)
au lieu de coller à gauche sur un écran large.
- Page recettes : l'onglet "Favoris" est sélectionné par défaut.
- Ajout de apps/web/cypress/e2e/recipes.cy.ts (onglets, recherche, sélection
master-detail, favori, suppression, lien nouvelle recette).
- Catalogue de référence (ingrédients/régimes/allergènes) : la colonne
`name` (le libellé français, utilisé comme clé unique) devient `key`, un
slug stable et opaque au sens produit (ex. "vegetarien", "boeuf_hache").
Le libellé lui-même déménage entièrement côté client, dans
apps/web/src/locales/fr/translation.json sous le namespace `catalog.*`,
résolu via `t(\`catalog.ingredients.${key}\`)` etc. — même schéma que
IngredientCategory/IngredientSubcategory. Migration Prisma
(rename + backfill des ~456 lignes déjà seedées), seed/service/tests API
et composants web mis à jour en conséquence.
- apps/api/src/utils/slugify.ts + scripts/generate-catalog-i18n.ts
(regénère le fichier de traduction depuis reference-seed-data.ts).
- 102 tests Mocha + 32 scénarios Cucumber passent contre la base migrée.
Note : cypress run plante dans cet environnement (le processus GPU
Chromium/Electron crash même headless, indépendamment des flags) — les
recipes.cy.ts n'ont pas pu être exécutés ici ; vérifiés par lecture du code
source des composants visés et par un passage manuel dans le navigateur de
prévisualisation.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
17 lines
769 B
TypeScript
17 lines
769 B
TypeScript
import assert from "node:assert/strict";
|
|
import { Then } from "@cucumber/cucumber";
|
|
import { slugify } from "../../src/utils/slugify.js";
|
|
import type { CustomWorld } from "../support/world.js";
|
|
|
|
// The feature file still names an item by its French label, for
|
|
// readability — the response itself carries only the slug `key` (see
|
|
// reference.service.ts), so this slugifies the expected label before
|
|
// comparing.
|
|
Then(
|
|
"the reference list response should include {string}",
|
|
function (this: CustomWorld, name: string) {
|
|
const keys = (this.response.body as Array<{ key: string }>).map((item) => item.key);
|
|
const expectedKey = slugify(name);
|
|
assert.ok(keys.includes(expectedKey), `expected ${JSON.stringify(keys)} to include "${expectedKey}"`);
|
|
},
|
|
);
|