# Bancs de test de la cascade de rejeu TestFlow

Ce répertoire contient 8 cas de test manuels, chacun isolant **un seul** maillon de la cascade de
résolution et/ou un seul niveau de la procédure d'alertes. Le **scénario JSON ne change jamais**
(11 étapes identiques dans les 8 dossiers) ; seule la page testée (`iframe-content.html`, l'iframe
"Cadre de paiement") varie, avec une seule modification ciblée sur l'étape 8 (`#pay-mode-2`,
"Virement bancaire") à chaque fois — pour que chaque cas isole clairement sa propre cause.

## Comment lancer un cas

Chaque `scenario.json` porte son propre champ `"url"` (hébergé sous
`https://bacasable.transitionagile.fr/TestFlow/Tests/TestN/top-frame.html`) : TestFlow y navigue
automatiquement au démarrage (`session-start`), inutile d'ouvrir la page manuellement au préalable.

1. Assurez-vous que le contenu de ce répertoire est bien déployé à cette adresse (mêmes chemins
   relatifs : `Tests/TestN/top-frame.html` et `Tests/TestN/iframe-content.html`).
2. Activez n'importe quel onglet Firefox classique (pas `about:debugging`, pas la fenêtre
   TestFlow), puis cliquez sur l'icône TestFlow — c'est cet onglet qui sera navigué vers la page du
   test.
3. Dans la fenêtre TestFlow, glissez-y `TestN/scenario.json`, puis cliquez sur "Démarrer le test".
4. Comparez le résultat obtenu (journal exporté, alertes, tableau "Résultat") à ce que décrit le
   `README.md` du dossier `TestN/`.

Si vous préférez tester en local sans hébergement (ex: ouverture directe du fichier), retirez le
champ `"url"` du `scenario.json` concerné et ouvrez `TestN/top-frame.html` vous-même avant de
lancer la campagne (voir `AIDE.md` section 2 pour les contraintes `file://`).

## Matrice des cas

| # | Maillon testé | Modification sur `#pay-mode-2` | Résultat attendu |
|---|---|---|---|
| [Test1](Test1/README.md) | Sélecteur strict | Aucune | ✅ Succès, aucune alerte |
| [Test2](Test2/README.md) | Ancrage textuel | `id` changé, libellé + position identiques | 🔧 Mineure |
| [Test3](Test3/README.md) | Score de confiance | `id` changé + libellé dupliqué ailleurs (ancrage ambigu), position identique | 🔧 Mineure |
| [Test4](Test4/README.md) | Ancrage + position | `id` changé, libellé identique, élément déplacé | 📝 Moyenne (position) |
| [Test5](Test5/README.md) | Vérification sans guérison | `id` **inchangé**, libellé reformulé | 📝 Moyenne (libellé) |
| [Test6](Test6/README.md) | Vérification sans guérison | `id` **inchangé**, libellé sans rapport | 🚨 Forte (libellé) |
| [Test7](Test7/README.md) | IA | `id` + libellé changés (ancrage et confiance échouent) | 📝/🚨 selon jugement IA — **nécessite un fournisseur IA configuré** |
| [Test8](Test8/README.md) | Cascade épuisée | Option supprimée, aucun remplacement | 🔴 Majeure + ticket Mantis — **ne cliquez sur rien pendant l'Édition Flash** |

## Points d'attention

- **Seuils utilisés** (`extension/config.js` au moment de la construction de ces fixtures) :
  `CONFIDENCE_SCORE_THRESHOLD` = 75/100, `CONFIDENCE_SCORE_MARGIN` = 12 points,
  `POSITION_CHANGE_THRESHOLD_RATIO` = 15 % de la diagonale du viewport. Les déplacements de
  position utilisés dans Test3/Test4 sont volontairement très généreux (500 à 1200 px, très
  au-delà du seuil réel ~98px pour un iframe de 260px de haut) pour rester robustes à de petites
  imprécisions de rendu.
- **Le champ `rect` de l'étape 8** (`scenario.json`, identique dans les 8 dossiers) est une
  **estimation** de la position réelle de `#pay-mode-2` dans la mise en page nominale (Test1), pas
  une mesure exacte. Si Test2/Test5/Test6 (qui ne doivent PAS déclencher de changement de
  position) signalent à tort une position modifiée dans le rapport exporté, relancez Test1, notez
  la position réelle remontée, et corrigez le champ `rect` dans les 8 copies de `scenario.json`.
- **Test7 nécessite un fournisseur IA configuré** (⚙️ Réglages de TestFlow) pour aboutir — sans IA
  configurée, la cascade tombera en échec total (comme Test8) au lieu de démontrer la résolution IA.
- **Test8** exige de laisser expirer le compte à rebours de l'Édition Flash (15s) sans cliquer,
  pour obtenir un échec réellement total plutôt qu'une correction manuelle.
- Ces bancs de test sont des documents de référence à vérifier manuellement (pas de script
  d'automatisation) — TestFlow n'a aujourd'hui aucune infrastructure de test headless.
