expria-backend/docs/GOLDEN_DATASET.md

9.6 KiB

GOLDEN_DATASET.md — Expria / Coach TCF Canada

Document de référence — Version 1.0 Ce fichier contient les tests manuels à rejouer après CHAQUE session Claude Code, avant de passer à la session suivante ou de déployer en production. Un seul test en rouge = la modification est refusée, on revient en arrière.


Principe d'utilisation

  1. Avant chaque session Claude Code : sauvegarder le code (commit Git)
  2. Après chaque session Claude Code : rejouer TOUS les tests du groupe concerné
  3. Si un test échoue : ne pas continuer, identifier la régression, corriger d'abord
  4. En cas de doute : rejouer le dataset complet (section 7)

Comptes de test à créer dans Supabase avant de commencer :

Compte Plan Usage
test.free@expria.local free Tester les parcours Free
test.standard@expria.local standard Tester les parcours Standard
test.premium@expria.local premium Tester les parcours Premium
test.quota@expria.local free (5/5 simulations utilisées) Tester le blocage quota

Ces comptes sont créés via script SQL dans Supabase (ne pas les créer manuellement). Voir supabase/seeds/test_accounts.sql.


Groupe 1 — Authentification

Ces tests vérifient que l'accès à l'application fonctionne correctement.

# Test Compte Résultat attendu /
A1 Inscription avec email valide Nouveau compte Compte créé, plan = "free", redirection dashboard
A2 Connexion avec email + mot de passe valides test.free Dashboard Free affiché, compteur simulations visible
A3 Connexion avec mot de passe incorrect test.free Message d'erreur, pas de redirection
A4 Déconnexion test.free Redirection page d'accueil, session détruite
A5 Accès direct à /dashboard sans être connecté Redirection vers /login

Groupe 2 — Plan Free (Découverte)

Ces tests vérifient le parcours complet d'un utilisateur Free.

# Test Compte Résultat attendu /
B1 Dashboard Free affiché après connexion test.free Compteur "X/5 simulations", aperçu flouté du dashboard Premium visible
B2 Lancer une simulation EE Tâche 1 test.free (quota < 5) Interface de production affichée, pas de tips
B3 Soumettre une production EE test.free (quota < 5) Rapport affiché : score + NCLC visibles, critères floutés avec cadenas
B4 Vérifier le rapport flouté test.free Au moins 1 élément flouté avec mention "Disponible en Standard"
B5 Lancer une simulation EO Tâche 1 test.free (quota < 5) Interface d'enregistrement audio affichée
B6 Cliquer sur EO Tâche 2 live test.free Cadenas affiché + message "Exclusivité Premium"
B7 Tenter une 6e simulation test.quota Modal de blocage avec boutons "Standard" et "Premium"
B8 Cliquer "Plus tard" dans le modal de blocage test.quota Modal fermé, pas de redirection
B9 Cliquer "Mode Examen" test.free Cadenas + message "Exclusivité Premium"

Groupe 3 — Plan Standard

Ces tests vérifient le parcours complet d'un utilisateur Standard.

# Test Compte Résultat attendu /
C1 Dashboard Standard après connexion test.standard Historique visible, bouton "Choisir une tâche" actif, mode examen verrouillé
C2 Lancer une simulation EE sans limite test.standard Simulation accessible sans vérification de quota
C3 Toggle "Suggestions d'idées" activé test.standard Suggestions d'idées visibles pendant la simulation
C4 Toggle "Mode focus" activé test.standard Tips masqués pendant la simulation
C5 Soumettre une production EE test.standard Rapport complet : score, critères, erreurs, modèle, exercices — rien flouté
C6 Vérifier l'enregistrement dans le dashboard test.standard Production apparaît dans l'historique avec date, tâche, score
C7 Cliquer sur une production dans l'historique test.standard Rapport complet de cette production affiché
C8 Cliquer sur "Mode Examen" test.standard Message "Réservé au plan Premium" + bouton upgrade
C9 Cliquer sur "EO Tâche 2 live" test.standard Cadenas + message "Exclusivité Premium"
C10 Indice de préparation après 5 productions test.standard (5 prod.) Section indice visible avec score et message interprétatif

Groupe 4 — Plan Premium

Ces tests vérifient le parcours complet d'un utilisateur Premium.

# Test Compte Résultat attendu /
D1 Dashboard Premium après connexion test.premium Historique, indice, bouton "Lancer un examen" actif, T2 live accessible
D2 Accéder à EO Tâche 2 live test.premium@gmail.com Page de préparation T2 affichée, bouton "Démarrer le dialogue" 17 avril 2026 (api.expria.app)
D3 Démarrer le dialogue T2 test.premium@gmail.com L'IA prend la parole en premier, audio reçu et joué 17 avril 2026 (api.expria.app)
D4 Répondre en audio (T2) test.premium@gmail.com L'IA réagit après la réponse du candidat 17 avril 2026 (api.expria.app)
D5 Fin de dialogue T2 test.premium Rapport complet affiché, production enregistrée avec tag "T2 Live"
D6 Lancer mode Examen EE test.premium Page d'avertissement affichée avant démarrage
D7 Confirmer le lancement Examen EE test.premium 3 tâches visibles, timer 60:00 démarré, inarrêtable
D8 Vérifier le blocage à T=0 (Examen EE) test.premium Zone de texte figée, message "Temps écoulé", envoi automatique
D9 Lancer mode Examen EO test.premium Timer 12:00 démarré, enregistrement actif
D10 Analyse des patterns (5+ productions) test.premium Section "Mon profil" affiche erreurs récurrentes classées par type
D11 Exercices long terme générés test.premium Exercices distincts de ceux du rapport individuel

Groupe 5 — Paiements et changements de plan

Ces tests vérifient que le système de paiement fonctionne sans régression.

⚠️ Ces tests utilisent les cartes de test Stripe. Carte valide : 4242 4242 4242 4242 — expiry : n'importe quelle date future — CVC : n'importe lequel. Carte refusée : 4000 0000 0000 0002

# Test Compte Résultat attendu /
E1 Upgrade Free → Standard test.free Redirection Stripe, paiement, retour dashboard Standard, plan = "standard"
E2 Upgrade Free → Premium test.free Redirection Stripe, paiement, retour dashboard Premium, plan = "premium"
E3 Upgrade Standard → Premium (prorata) test.standard Montant prorata affiché avant confirmation, accès Premium après paiement
E4 Paiement refusé test.free Message d'erreur Stripe, plan inchangé, pas de régression
E5 Accès immédiat après paiement test.free Dashboard du nouveau plan affiché sans délai ni reconnexion
E6 Plan mis à jour dans Supabase test.free Colonne plan dans la table profiles reflète le nouveau plan

Groupe 6 — Sécurité et permissions

Ces tests vérifient qu'un utilisateur ne peut pas accéder à ce qu'il ne devrait pas.

# Test Compte Résultat attendu /
F1 Accès direct URL /t2-live sans être Premium test.standard Redirection ou message "Accès réservé au Premium"
F2 Appel API POST /corrections/ee sans JWT — (non connecté) Réponse 401 Unauthorized
F3 Appel API GET /simulations d'un autre utilisateur test.free Réponse 403 ou liste vide (RLS Supabase)
F4 Tentative de lancer examen via API (plan standard) test.standard Réponse 403 — plan insuffisant
F5 Variable GEMINI_API_KEY visible dans le frontend Introuvable dans le code source JavaScript chargé par le navigateur

Groupe 7 — Dataset complet (smoke test)

À rejouer avant chaque déploiement en production. Ce sont les 10 scénarios les plus critiques, un par type de parcours.

# Test Description rapide
Z1 Inscription + simulation Free Nouvel utilisateur → simulation → rapport flouté
Z2 Blocage quota Free 6e simulation → modal de blocage
Z3 Simulation Standard complète Login → simulation → rapport complet → dashboard
Z4 Mode examen bloqué en Standard Bouton mode examen → message upgrade
Z5 T2 live Premium Login → T2 live → dialogue → rapport
Z6 Mode examen EE complet Lancement → timer → T=0 → envoi auto → rapport
Z7 Paiement Free → Standard Checkout Stripe → webhook → dashboard Standard
Z8 Prorata Standard → Premium Montant affiché → confirmation → accès Premium
Z9 Sécurité JWT Appel API sans token → 401
Z10 Déconnexion + accès protégé Déconnexion → accès /dashboard → redirection /login

Procédure en cas d'échec

Test échoue
    ↓
1. Noter le numéro du test et le comportement observé
2. NE PAS continuer la session Claude Code
3. Identifier le fichier modifié qui a causé la régression
4. Revenir au commit Git précédent (git revert ou git checkout)
5. Analyser la cause avec Claude (chat, pas code)
6. Reformuler le prompt en ajoutant la contrainte manquante
7. Relancer la session Claude Code
8. Rejouer le groupe de tests concerné

Historique des sessions

Remplir après chaque session Claude Code.

Date Session Tests rejoués Résultat Notes