first commit

This commit is contained in:
2026-07-21 16:50:58 +02:00
commit 256599626e
407 changed files with 30489 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
Feature: Construire un bento en 3 étapes
En tant qu'utilisateur
Je veux choisir une base puis une variante
Afin d'obtenir une recette ordonnée et partageable
@int-builder-continue-after-base
Scenario: Afficher le bouton continuer après choix base
Given je suis sur l'étape base
When je sélectionne une base salée
Then le bouton continuer apparaît
And un texte historique de la base est visible
@int-builder-variant-filter
Scenario: Filtrer les variantes par base
Given j'ai choisi la base "onigiri-base"
When j'ouvre l'étape variante
Then seules les variantes compatibles sont affichées
+10
View File
@@ -0,0 +1,10 @@
Feature: Chemins d'assets publics compatibles BASE_URL
En tant qu'application déployée derrière un base path Vite (ou via Capacitor)
Je veux que tous les assets publics soient résolus via publicAssetHref
Afin qu'aucun chemin absolu `/...` ne casse au runtime
@int-public-asset-base-path
Scenario: Préfixer logo, tour d'accueil, fallback ingrédient et images catalogue par BASE_URL
Given Vite expose un base path "/ben-to/"
When les composants chargent les assets publics (logo, tour, fallback, catalogue)
Then chaque URL est préfixée par "/ben-to"
+32
View File
@@ -0,0 +1,32 @@
Feature: En-têtes de sécurité et Content-Security-Policy
En tant qu'application web servie publiquement
Je veux un ensemble d'en-têtes de sécurité durcis (CSP, X-Frame-Options, etc.)
Afin de limiter la surface d'attaque (XSS, clickjacking, exfiltration)
@int-csp-html-injection
Scenario: Le HTML injecte la balise meta Content-Security-Policy
Given le plugin CSP est activé en production
When l'index HTML de production est généré
Then il contient une balise meta http-equiv "Content-Security-Policy"
And la directive "frame-ancestors" vaut "'none'"
And la directive "object-src" vaut "'none'"
And aucune directive n'autorise "unsafe-eval" hors dev
@int-csp-matomo-origin
Scenario: La CSP s'adapte à la configuration Matomo
Given la variable de build "VITE_MATOMO_URL" vaut "https://analytics.example.com/"
When la CSP est calculée pour la production
Then la directive "script-src" autorise l'origine "https://analytics.example.com"
And la directive "connect-src" autorise l'origine "https://analytics.example.com"
And la directive "img-src" autorise l'origine "https://analytics.example.com"
And la directive "default-src" reste limitée à "'self'"
@int-csp-serve-json
Scenario: dist/serve.json expose les en-têtes à servir
Given le build de production est exécuté
When le fichier "dist/serve.json" est écrit
Then il contient une règle ciblant les pages HTML avec une "Content-Security-Policy"
And il contient "X-Content-Type-Options" avec la valeur "nosniff"
And il contient "X-Frame-Options" avec la valeur "DENY"
And il contient "Referrer-Policy" avec la valeur "strict-origin-when-cross-origin"
And il contient "Permissions-Policy" désactivant caméra, micro et géolocalisation
+10
View File
@@ -0,0 +1,10 @@
Feature: Modale première visite
En tant qu'utilisateur sur la page d'accueil
Je veux un court tour des fonctionnalités
Afin de comprendre le constructeur avant de commencer
@int-welcome-tour-dismiss
Scenario: Mémoriser la fermeture du tour d'accueil
Given aucune entrée de tour n'est encore enregistrée localement
When l'utilisateur enregistre la fermeture pour la version courante du tour
Then le stockage local contient la version attendue du tour