Aller au contenu principal

Guide de test - Onboarding intégré

✅ Intégration terminée !

L'onboarding a été intégré dans le flow d'authentification. Voici comment tester.


🧪 Tests à effectuer

Test 1 : Nouveau compte (Onboarding requis)

Objectif : Vérifier que l'onboarding s'affiche pour un nouveau compte

Étapes :

  1. Déconnectez-vous de l'app si connecté
  2. Créez un nouveau compte (nouveau email)
  3. Une fois inscrit et email confirmé (si nécessaire)
  4. L'app devrait automatiquement afficher l'onboarding

Résultat attendu :

  • ✅ L'onboarding s'affiche automatiquement
  • ✅ Welcome screen avec présentation de l'app
  • ✅ Écran de sélection du métier (16 options)
  • ✅ Écran du nom du business (optionnel)
  • ✅ Après "Terminer", redirection vers la page principale

Test 2 : Utilisateur existant (Onboarding déjà complété)

Objectif : Vérifier que l'onboarding ne s'affiche pas si déjà complété

Prérequis : Avoir complété l'onboarding au Test 1

Étapes :

  1. Déconnectez-vous
  2. Reconnectez-vous avec le même compte
  3. L'app devrait rediriger directement vers la page principale

Résultat attendu :

  • ✅ Pas d'onboarding affiché
  • ✅ Redirection directe vers MainPage
  • ✅ Dans Paramètres → "Type d'activité", le métier s'affiche

Test 3 : Flow complet

Objectif : Tester tout le parcours onboarding

Étapes :

  1. Créer un nouveau compte
  2. Welcome Screen :
    • Vérifier les 3 features affichées
    • Cliquer sur "Continuer"
  3. Business Type :
    • Vérifier que les 16 métiers s'affichent
    • Essayer de continuer sans sélectionner → Bouton désactivé ✅
    • Sélectionner "Pâtisserie"
    • Vérifier la bordure bleue et le checkmark
    • Cliquer sur "Continuer"
  4. Business Name :
    • Laisser vide (optionnel)
    • OU remplir avec "Pâtisserie Sophie"
    • Cliquer sur "Terminer"
  5. Vérifier la redirection vers MainPage
  6. Aller dans Paramètres → Profil → "Type d'activité"
    • Vérifier que "🎂 Pâtisserie" s'affiche

Résultat attendu :

  • ✅ Tout le flow fonctionne
  • ✅ Pas d'erreurs dans les logs
  • ✅ Les données sont sauvegardées en BDD

Test 4 : Vérification en base de données

Objectif : Vérifier que les données sont bien enregistrées

Étapes :

  1. Aller sur Supabase Dashboard
  2. Database → Table Editor → user_profiles
  3. Chercher votre profil (par email)
  4. Vérifier les colonnes :
    • business_type = 'patisserie' (ou autre)
    • business_name = 'Pâtisserie Sophie' (ou NULL si pas rempli)
    • has_completed_onboarding = true

Résultat attendu :

| email | business_type | business_name | has_completed_onboarding |
|-------|--------------|---------------|--------------------------|
| test@example.com | patisserie | Pâtisserie Sophie | true |

🐛 Troubleshooting

L'onboarding ne s'affiche pas pour un nouveau compte

Causes possibles :

  1. Les colonnes n'existent pas dans user_profiles

    • Solution : Exécuter le SQL de migration (voir ONBOARDING_DATABASE.md)
  2. Le profil utilisateur n'est pas créé

    • Solution : Vérifier que le profil est créé à l'inscription
  3. has_completed_onboarding est déjà à true

    • Solution : Vérifier en BDD et mettre à false pour tester

Commande SQL de test :

UPDATE user_profiles
SET has_completed_onboarding = false
WHERE email = 'votre-email@test.com';

L'onboarding s'affiche en boucle

Cause : has_completed_onboarding ne passe pas à true

Solution :

  1. Vérifier les logs de l'app lors du clic sur "Terminer"
  2. Vérifier les RLS policies sur user_profiles
  3. Vérifier que l'utilisateur a les permissions UPDATE

Test manuel :

-- Tester la mise à jour manuellement
UPDATE user_profiles
SET has_completed_onboarding = true
WHERE email = 'votre-email@test.com';

Erreur "Constraint violation" lors de la sauvegarde

Cause : Le business_type ne correspond pas aux valeurs autorisées

Solution :

-- Vérifier la contrainte
SELECT pg_get_constraintdef(oid)
FROM pg_constraint
WHERE conname = 'check_business_type';

-- Si nécessaire, recréer la contrainte
ALTER TABLE user_profiles DROP CONSTRAINT check_business_type;
-- Puis exécuter le SQL complet dans ONBOARDING_DATABASE.md

Les données ne s'affichent pas dans les paramètres

Cause : Le profil n'est pas rechargé

Solution :

  1. Forcer le rechargement du profil dans settings_page.dart
  2. Ou se déconnecter/reconnecter

📱 Tests manuels recommandés

Test avec différents métiers

Tester avec plusieurs types de métiers pour vérifier que tout fonctionne :

  1. Pâtisserie : Vérifier "Réservation" dans l'app
  2. Coiffure : Vérifier "Rendez-vous" dans l'app
  3. Photographe : Vérifier "Séance" dans l'app
  4. Autre : Type générique

Test sur différents devices

  • Test sur Android
  • Test sur iOS
  • Test sur émulateur
  • Test sur device physique

Test de navigation

  • Back button pendant l'onboarding (ne devrait pas sortir)
  • Après onboarding, vérifier qu'on ne peut pas revenir en arrière
  • Se déconnecter puis reconnecter

📊 Métriques à surveiller

Si vous avez des analytics :

  • Taux de complétion de l'onboarding
  • Temps moyen pour compléter
  • Métier le plus sélectionné
  • Taux d'abandon par étape

✅ Checklist finale

Avant de passer en production :

  • Migration SQL exécutée sur Supabase
  • Vérification des colonnes en BDD
  • Test avec nouveau compte
  • Test avec compte existant
  • Vérification des données en BDD
  • Test de navigation
  • Test sur Android
  • Test sur iOS
  • Pas d'erreurs dans les logs
  • Le type de métier s'affiche dans les paramètres

🚀 Aller plus loin

Tests pour les utilisateurs existants

Option A : Forcer l'onboarding

UPDATE user_profiles
SET has_completed_onboarding = false
WHERE created_at < NOW() - INTERVAL '1 day';

Option B : Marquer comme complété avec type par défaut

UPDATE user_profiles
SET
has_completed_onboarding = true,
business_type = 'autre'
WHERE created_at < NOW() - INTERVAL '1 day'
AND has_completed_onboarding IS NULL;

Ajouter des analytics

Dans onboarding_flow_page.dart, ajouter :

// Au début de l'onboarding
Analytics.logEvent('onboarding_started');

// À chaque étape
Analytics.logEvent('onboarding_step', parameters: {'step': _currentPage});

// À la fin
Analytics.logEvent('onboarding_completed', parameters: {
'business_type': _selectedBusinessType!.value,
'has_business_name': _businessNameController.text.isNotEmpty,
});

📞 Support

En cas de problème :

  1. Vérifier les logs de l'app
  2. Vérifier les logs Supabase (Database → Logs)
  3. Consulter ONBOARDING_DATABASE.md et README.md
  4. Contacter l'équipe de développement

Bon test ! 🎉