Dashboard de Test

✦ Dashboard de Test — Furbotto

Validation HML avant migration PROD · 3 octobre 2026

Statut des sites
Espaces de supervision

Maisons

Utilisateurs

Lien de supervision

Scénarios de test F19
HML S1 — Portail mono-membre

Maison Otto de Quincy · 1 membre (Aurélien OTTO) · vérifier affichage portail et guestToken.

  1. 01Ouvrir le portail :
    hml2.../portail/4d80f8bb...
    → Page portail, blason affiché, bouton "Aurélien OTTO"
  2. 02Cliquer "Aurélien OTTO"
    → Spinner bref puis cards (faire-part + jeu)
  3. 03Inspecter localStorage : clé portail_guest_token
    → UUID présent
  4. 04Cliquer la card jeu
    → Redirection vers jeu-hml avec familyToken + guestToken, "Vérification…" puis home jeu
HML S2 — Portail 2 membres · isolation

Maison Otto de Reims · Jean-Paul + Inès · vérifier que 2 membres = 2 guestToken distincts = 2 membres jeu distincts.

  1. 01Session A — Ouvrir en navigation normale :
    hml2.../portail/78d8ca28...
    Sélectionner "Jean-Paul OTTO" → noter guestToken localStorage
  2. 02Cliquer card jeu → noter le membre jeu (prenom dans l'URL ou dans le cookie)
    → onboarding ou home jeu pour Jean-Paul
  3. 03Session B — Ouvrir en navigation privée :
    hml2.../portail/78d8ca28...
    Sélectionner "Inès OTTO" → noter guestToken localStorage
  4. 04Cliquer card jeu → membre jeu différent de Jean-Paul
    → Deux UUID distincts dans portal_guest.jeu_membre_id (vérifier SQL ci-dessous)
HML S3 — Portail 4 membres · stress isolation

Maison Otto de Montmartin · Jean-Pierre, Sonia, Nomi, Keny · 4 sessions = 4 membres jeu distincts.

  1. 01Répéter 4 fois (1 session distincte par membre) :
    hml2.../portail/799c64cb...
  2. 02Vérifier SQL (copier ci-dessous) → 4 lignes dans portal_guest, 4 jeu_membre_id distincts et non null
    → Aucun doublon de jeu_membre_id
HML S4 — Jeu legacy (sans portail)

Accès direct au jeu par token famille (ancien QR code). Vérifier compatibilité rétrograde.

  1. 01Ouvrir :
    jeu-hml.../join?token=78d8ca28...
    → "Vérification…" puis onboarding ou home (membre legacy)
  2. 02Re-ouvrir le même lien depuis un autre appareil ou après clear cookies
    → Même membre retrouvé (P1 invite_token)
HML S5 — Retour portail après jeu (persistance)

Vérifier que revenir sur le portail après avoir joué ne redemande pas "Qui êtes-vous ?"

  1. 01Après S1 ou S2 : revenir sur le portail (même session)
    hml2.../portail/4d80f8bb...
  2. 02→ Membre déjà sélectionné (bouton actif), cards déjà visibles, pas de re-sélection requise
  3. 03Cliquer card jeu à nouveau
    → Même membre jeu (P0 : portal_guest.jeu_membre_id déjà lié)
API S6 — guestToken invalide → refus 400

Vérifier que l'API jeu refuse un guestToken mal formé plutôt que de tomber en legacy.

  1. 01Dans la console navigateur sur jeu-hml :
    fetch('/api/auth/invite',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({token:'78d8ca28eec06d33c8ccdebbab8c0bf0',guestToken:'pas-un-uuid'})}).then(r=>console.log(r.status))
  2. 02→ Status 400 (pas 200 ni 401)
Checklist de validation HML → PROD
0 / 0 validés
Requêtes SQL — Supabase HML
-- Vérifier l'isolation des membres par guestToken SELECT pg.guest_token, pg.member_key, pg.jeu_membre_id, mm.display_name FROM portal_guest pg LEFT JOIN maison_member mm ON mm.id = pg.maison_member_id ORDER BY pg.created_at DESC LIMIT 20;
-- Vérifier qu'aucun jeu_membre_id n'est partagé entre deux portal_guest SELECT jeu_membre_id, COUNT(*) as nb FROM portal_guest WHERE jeu_membre_id IS NOT NULL GROUP BY jeu_membre_id HAVING COUNT(*) > 1; -- Résultat attendu : 0 lignes
-- Vérifier les membres jeu créés via portail (invite_token = NULL) SELECT id, prenom, onboarding_complete, invite_token, created_at FROM membres WHERE invite_token IS NULL ORDER BY created_at DESC LIMIT 10;
-- Schéma FK actuel sur portal_guest et maison_member SELECT conname, contype, confrelid::regclass, conrelid::regclass FROM pg_constraint WHERE conrelid IN ('portal_guest'::regclass, 'maison_member'::regclass) ORDER BY conrelid, conname;