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
- Avant chaque session Claude Code : sauvegarder le code (commit Git)
- Après chaque session Claude Code : rejouer TOUS les tests du groupe concerné
- Si un test échoue : ne pas continuer, identifier la régression, corriger d'abord
- 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 |
|---|---|---|---|---|
| — | — | — | — | — |