Étapes :
- Ouvrir TikTokStyleLiveScreen en tant que visiteur
- Cliquer sur le bouton co-host (icône people violet)
- Vérifier l'ouverture du modal co-host
- Cliquer sur "Demander à être co-host"
Résultat attendu :
- Modal s'ouvre avec interface co-host
- Bouton "Demander à être co-host" visible
- Après clic, statut change en "Demande en attente..."
- Notification de succès affichée
Étapes :
- Créer un live en tant qu'hôte
- Recevoir une demande de co-host (depuis autre compte)
- Ouvrir l'interface co-host
- Voir la section "Demandes de co-host"
- Cliquer sur accepter (✅) ou refuser (❌)
Résultat attendu :
- Section "Demandes de co-host" avec badge orange
- Liste des demandes avec avatar et nom
- Boutons accepter/refuser fonctionnels
- Mise à jour en temps réel après action
Étapes :
- Avoir des co-hosts actifs dans un live
- Observer le header du live
- Vérifier l'affichage du badge co-host
- Cliquer sur le badge
Résultat attendu :
- Badge violet avec icône people + nombre
- Badge cliquable ouvrant l'interface
- Mise à jour automatique du nombre
- Badge disparaît si aucun co-host
Étapes :
- Avoir des co-hosts acceptés et actifs
- Ouvrir l'interface co-host
- Voir la section "Co-hosts"
- Cliquer sur le bouton retirer (icône rouge) d'un co-host
Résultat attendu :
- Liste des co-hosts avec avatars
- Boutons retirer visibles pour l'hôte
- Confirmation et mise à jour après retrait
- Notification "Co-host retiré"
Étapes :
- Être accepté comme co-host
- Ouvrir l'interface co-host
- Voir le bouton "Quitter le co-host"
- Cliquer pour quitter
Résultat attendu :
- Bouton rouge "Quitter le co-host" visible
- Après clic, statut change
- Notification "Vous avez quitté le co-host"
- Retour à l'état visiteur normal
Étapes :
- Faire une demande de co-host
- Voir le statut "Demande en attente..."
- Cliquer sur "Annuler la demande"
Résultat attendu :
- Bouton annulation disponible
- Après clic, retour à l'état initial
- Notification "Demande annulée"
Étapes :
- Ouvrir 2 instances (hôte et visiteur)
- Faire une demande côté visiteur
- Observer l'apparition côté hôte
- Accepter côté hôte
- Observer la mise à jour côté visiteur
Résultat attendu :
- Demande apparaît instantanément côté hôte
- Acceptation visible instantanément côté visiteur
- Indicateur header mis à jour en temps réel
- Aucun délai perceptible
Étapes :
- Accepter plusieurs co-hosts
- Vérifier l'affichage dans la liste
- Observer l'indicateur header
- Retirer un co-host
- Vérifier la mise à jour
Résultat attendu :
- Tous les co-hosts listés correctement
- Badge header montre le bon nombre
- Retrait met à jour immédiatement
- Performance stable avec multiples entrées
Étapes SQL :
-- Tenter de créer demande duplicate
INSERT INTO cohost_requests (live_id, requester_id, requester_name, host_id, status)
VALUES ('same_live_id', 'same_user_id', 'Test User', 'host_id', 'pending');
-- Tenter de créer co-host duplicate
INSERT INTO cohosts (live_id, user_id, user_name, is_active)
VALUES ('same_live_id', 'same_user_id', 'Test User', true);Résultat attendu :
- Erreur de contrainte unique sur demandes duplicates
- Erreur de contrainte unique sur co-hosts duplicates
- Système reste stable
Étapes SQL :
-- Test acceptation demande
SELECT process_cohost_request('request_id', 'host_id', true);
-- Test retrait co-host
SELECT remove_cohost('live_id', 'host_id', 'cohost_user_id');
-- Test statistiques
SELECT * FROM cohost_statistics WHERE live_id = 'test_live_id';Résultat attendu :
- Fonctions retournent JSON de succès
- Données cohérentes après opérations
- Statistiques correctes
Étapes :
- Tenter d'accepter une demande sans être hôte
- Tenter de retirer un co-host sans être hôte
- Tenter de voir des demandes d'autres lives
Résultat attendu :
- Erreurs appropriées pour actions non autorisées
- RLS bloque les accès non autorisés
- Messages d'erreur explicites
Étapes :
- Créer des demandes anciennes (>24h)
- Créer une nouvelle demande
- Vérifier le trigger de nettoyage
Résultat attendu :
- Anciennes demandes supprimées automatiquement
- Nouvelles demandes conservées
- Performance maintenue
Étapes :
- Tester sur différentes tailles d'écran
- Rotation portrait/landscape
- Modal bottom sheet sur petit écran
Résultat attendu :
- Interface s'adapte à toutes les tailles
- Modal reste utilisable en landscape
- Textes et boutons lisibles
Étapes :
- Tester tous les boutons et zones tactiles
- Vérifier la taille minimale des boutons
- Tester le scroll dans les listes
Résultat attendu :
- Tous les boutons facilement cliquables
- Zones tactiles suffisamment grandes
- Scroll fluide dans les listes
- Bouton co-host visible dans barre d'actions
- Modal co-host s'ouvre correctement
- Demandes de co-host fonctionnent
- Acceptation/refus fonctionnent (hôte)
- Retrait de co-hosts fonctionne (hôte)
- Quitter co-host fonctionne (co-host)
- Indicateur temps réel dans header
- Mises à jour instantanées
- Sécurité et contrôles d'accès
- Performance avec multiples co-hosts
- Interface responsive
- Base de données cohérente
- Nettoyage automatique actif
# Vérifier compilation
flutter analyze
# Tests automatisés
flutter test
# Mode debug
flutter run --debug-- Voir les demandes actives
SELECT * FROM cohost_requests WHERE status = 'pending';
-- Voir les co-hosts actifs
SELECT * FROM cohosts WHERE is_active = true;
-- Statistiques par live
SELECT * FROM cohost_statistics;
-- Nettoyage manuel
DELETE FROM cohost_requests WHERE created_at < NOW() - INTERVAL '24 hours';// Test service co-host
final request = await CoHostService.requestCoHost(liveId: 'test_live');
print('Demande créée: ${request.id}');
// Test stream temps réel
CoHostService.getActiveCoHostsStream('live_id').listen((coHosts) {
print('Co-hosts actifs: ${coHosts.length}');
});Le système de co-host est maintenant prêt pour les tests complets et l'utilisation en production ! 🎉