expria-backend/docs/GOLDEN_DATASET.md

178 lines
9.4 KiB
Markdown

# 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 | Page de préparation T2 affichée, bouton "Démarrer le dialogue" | |
| D3 | Démarrer le dialogue T2 | test.premium | L'IA prend la parole en premier, audio reçu et joué | |
| D4 | Répondre en audio (T2) | test.premium | L'IA réagit après la réponse du candidat | |
| 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 |
|---|---|---|---|---|
| | | | | |