Ajout de 47 features Gherkin (~650 scénarios) pour couvrir 100% des règles métier : - Authentification (5) : validation mot de passe, tentatives connexion, multi-device, 2FA, récupération - Audio-guides (12) : détection mode, création, navigation piéton/voiture, ETA, gestion points, progression - Navigation (5) : notifications minimalistes, décompte 5s, stationnement, historique, basculement auto - Création contenu (3) : image auto, restrictions modification, suppression - Radio live (2) : enregistrement auto, interdictions modération - Droits auteur (6) : fair use 30s, détection musique, signalements, sanctions, appels - Modération (9) : badges Bronze/Argent/Or, score fiabilité, utilisateur confiance, audit, anti-abus - Premium (2) : webhooks Mangopay, tarification multi-canal - Profil/Partage/Recherche (5) : badge vérifié, stats arrondies, partage premium, filtres avancés, carte Tous les scénarios incluent edge cases, métriques de performance et conformité RGPD. Couverture fonctionnelle MVP maintenant complète.
219 lines
12 KiB
Gherkin
219 lines
12 KiB
Gherkin
# language: fr
|
|
|
|
@ui @audio-guides @pedestrian @navigation @mvp
|
|
Fonctionnalité: Navigation libre complète en mode piéton
|
|
|
|
En tant qu'utilisateur piéton
|
|
Je veux naviguer librement dans un audio-guide sans contrainte d'ordre
|
|
Afin de découvrir les points d'intérêt selon mon itinéraire personnel
|
|
|
|
Contexte:
|
|
Étant donné un audio-guide "Visite du Quartier Latin" avec 8 séquences:
|
|
| Ordre | Nom | Position GPS | Rayon |
|
|
| 1 | Notre-Dame | 48.8534, 2.3488 | 100m |
|
|
| 2 | Sainte-Chapelle | 48.8555, 2.3450 | 80m |
|
|
| 3 | Panthéon | 48.8462, 2.3464 | 100m |
|
|
| 4 | Jardin du Luxembourg | 48.8462, 2.3371 | 150m |
|
|
| 5 | Sorbonne | 48.8487, 2.3431 | 70m |
|
|
| 6 | Musée de Cluny | 48.8505, 2.3434 | 60m |
|
|
| 7 | Rue Mouffetard | 48.8429, 2.3498 | 50m |
|
|
| 8 | Arènes de Lutèce | 48.8456, 2.3523 | 80m |
|
|
|
|
Scénario: Démarrage d'un audio-guide en mode piéton avec navigation libre
|
|
Étant donné un utilisateur "alice@roadwave.fr" en mode piéton
|
|
Et elle se trouve près de Notre-Dame
|
|
Quand elle lance l'audio-guide "Visite du Quartier Latin"
|
|
Alors l'écran principal affiche:
|
|
| Élément | Contenu |
|
|
| Carte interactive | Affichée avec 8 marqueurs |
|
|
| Position utilisateur | Marqueur bleu en temps réel |
|
|
| Points d'intérêt | Marqueurs numérotés 1-8 |
|
|
| Distances | Affichées sur chaque marqueur |
|
|
| Point le plus proche | Surligné en vert (Notre-Dame, 50m) |
|
|
| Mode de lecture | "Navigation libre" activé par défaut |
|
|
| Bouton "Liste" | Affiche la liste des séquences |
|
|
Et un événement "AUDIO_GUIDE_STARTED_FREE_NAVIGATION" est enregistré
|
|
Et la métrique "audio_guide.started.free_navigation" est incrémentée
|
|
|
|
Scénario: Déclenchement automatique au point d'intérêt le plus proche
|
|
Étant donné un utilisateur "bob@roadwave.fr" en mode piéton
|
|
Et il a lancé l'audio-guide "Visite du Quartier Latin"
|
|
Et il marche vers Notre-Dame
|
|
Quand il entre dans le rayon de 100m de Notre-Dame
|
|
Alors l'audio de la séquence #1 "Notre-Dame" démarre automatiquement
|
|
Et une notification s'affiche:
|
|
| Élément | Contenu |
|
|
| Titre | 1/8 - Cathédrale Notre-Dame |
|
|
| Distance | Vous êtes arrivé |
|
|
| Progression | Barre de lecture audio |
|
|
| Actions | [Pause] [Liste] [Carte] |
|
|
Et le marqueur Notre-Dame passe de vert à bleu (en cours)
|
|
Et un événement "SEQUENCE_AUTO_TRIGGERED" est enregistré
|
|
Et la métrique "audio_guide.sequence.auto_triggered" est incrémentée
|
|
|
|
Scénario: Écoute d'une séquence dans un ordre différent de l'ordre suggéré
|
|
Étant donné un utilisateur "charlie@roadwave.fr" en mode piéton
|
|
Et il a lancé l'audio-guide et écouté la séquence #1 "Notre-Dame"
|
|
Et il décide de se rendre directement au Panthéon (séquence #3)
|
|
Quand il marche vers le Panthéon en ignorant la séquence #2
|
|
Et entre dans le rayon de 100m du Panthéon
|
|
Alors l'audio de la séquence #3 "Panthéon" démarre automatiquement
|
|
Et la séquence #2 "Sainte-Chapelle" reste disponible et non écoutée
|
|
Et un événement "SEQUENCE_OUT_OF_ORDER" est enregistré
|
|
Et la métrique "audio_guide.sequence.out_of_order" est incrémentée
|
|
Et la progression affiche: 2/8 séquences écoutées
|
|
|
|
Scénario: Affichage de la carte avec points d'intérêt colorés par statut
|
|
Étant donné un utilisateur "david@roadwave.fr" en mode piéton
|
|
Et il a écouté 3 séquences sur 8
|
|
Quand il consulte la carte
|
|
Alors les marqueurs sont colorés selon leur statut:
|
|
| Séquence | Statut | Couleur | Icône |
|
|
| Notre-Dame | Écoutée | Bleu | ✓ |
|
|
| Sainte-Chapelle | Non écoutée | Gris | 2 |
|
|
| Panthéon | Écoutée | Bleu | ✓ |
|
|
| Jardin du Luxembourg| Non écoutée | Gris | 4 |
|
|
| Sorbonne | Écoutée | Bleu | ✓ |
|
|
| Musée de Cluny | Non écoutée | Gris | 6 |
|
|
| Rue Mouffetard | En cours | Orange | ▶ |
|
|
| Arènes de Lutèce | Non écoutée | Gris | 8 |
|
|
Et le point le plus proche est surligné avec un halo vert
|
|
Et les distances sont affichées en temps réel
|
|
|
|
Scénario: Consultation de la liste des séquences avec filtres
|
|
Étant donné un utilisateur "eve@roadwave.fr" en mode piéton
|
|
Quand elle clique sur le bouton "Liste"
|
|
Alors une liste des séquences s'affiche:
|
|
| Séquence | Distance | Statut | Actions |
|
|
| Notre-Dame | 50m | ✓ Écoutée | [Réécouter] |
|
|
| Sainte-Chapelle | 200m | Non écoutée | [Y aller] [Lire] |
|
|
| Panthéon | 350m | ✓ Écoutée | [Réécouter] |
|
|
| Jardin du Luxembourg| 450m | Non écoutée | [Y aller] [Lire] |
|
|
Et elle peut filtrer par:
|
|
| Filtre | Options |
|
|
| Statut | Toutes / Écoutées / Restantes |
|
|
| Tri | Distance / Ordre suggéré / Durée |
|
|
Et un compteur affiche: "3/8 séquences écoutées"
|
|
|
|
Scénario: Lecture manuelle d'une séquence depuis la liste
|
|
Étant donné un utilisateur "frank@roadwave.fr" en mode piéton
|
|
Et il consulte la liste des séquences
|
|
Quand il clique sur "Lire" pour la séquence #5 "Sorbonne"
|
|
Alors l'audio de la Sorbonne démarre immédiatement
|
|
Et peu importe la distance actuelle (peut être loin du point)
|
|
Et un événement "SEQUENCE_MANUAL_PLAY" est enregistré
|
|
Et la métrique "audio_guide.sequence.manual_play" est incrémentée
|
|
Et un message d'information s'affiche: "Vous écoutez cette séquence hors localisation"
|
|
|
|
Scénario: Navigation vers un point d'intérêt depuis la liste
|
|
Étant donné un utilisateur "grace@roadwave.fr" en mode piéton
|
|
Et elle consulte la liste des séquences
|
|
Quand elle clique sur "Y aller" pour la séquence #4 "Jardin du Luxembourg"
|
|
Alors l'application lance la navigation GPS vers le Jardin du Luxembourg
|
|
Et un itinéraire piéton est calculé et affiché sur la carte
|
|
Et la distance et le temps estimé sont affichés: "450m - 6 min"
|
|
Et des instructions de navigation vocales sont données:
|
|
| Instruction |
|
|
| Dirigez-vous vers le sud |
|
|
| Tournez à gauche dans 100 mètres |
|
|
| Vous arrivez à destination |
|
|
Et un événement "NAVIGATION_TO_POI_STARTED" est enregistré
|
|
Et la métrique "audio_guide.navigation.started" est incrémentée
|
|
|
|
Scénario: Réécoute d'une séquence déjà complétée
|
|
Étant donné un utilisateur "henry@roadwave.fr" en mode piéton
|
|
Et il a déjà écouté la séquence #1 "Notre-Dame" en entier
|
|
Quand il clique sur "Réécouter" depuis la liste
|
|
Alors l'audio de Notre-Dame redémarre depuis le début
|
|
Et un événement "SEQUENCE_REPLAYED" est enregistré
|
|
Et la métrique "audio_guide.sequence.replayed" est incrémentée
|
|
Et la séquence reste marquée comme "Écoutée" (pas de duplication)
|
|
|
|
Scénario: Pause et reprise d'une séquence en cours
|
|
Étant donné un utilisateur "iris@roadwave.fr" en mode piéton
|
|
Et elle écoute la séquence #3 "Panthéon" à la position 2min 30s
|
|
Quand elle clique sur le bouton "Pause"
|
|
Alors l'audio se met en pause
|
|
Et la position de lecture est sauvegardée: 2min 30s
|
|
Et un événement "SEQUENCE_PAUSED" est enregistré
|
|
Quand elle clique sur le bouton "Lecture"
|
|
Alors l'audio reprend exactement à 2min 30s
|
|
Et un événement "SEQUENCE_RESUMED" est enregistré
|
|
|
|
Scénario: Affichage de la progression globale de l'audio-guide
|
|
Étant donné un utilisateur "jack@roadwave.fr" en mode piéton
|
|
Et il a écouté 5 séquences sur 8
|
|
Quand il consulte l'écran principal
|
|
Alors il voit la progression:
|
|
| Élément | Contenu |
|
|
| Barre de progression | 5/8 (62%) |
|
|
| Séquences restantes | 3 points à découvrir |
|
|
| Temps écouté | 42 minutes |
|
|
| Distance parcourue | 2.8 km |
|
|
| Badge de complétion | Bronze (50%+) |
|
|
Et un bouton "Terminer l'audio-guide" est disponible si toutes les séquences sont écoutées
|
|
|
|
Scénario: Découverte d'un point bonus caché (Easter egg)
|
|
Étant donné un audio-guide avec un point bonus secret non listé
|
|
Et un utilisateur "kate@roadwave.fr" en mode piéton
|
|
Quand elle passe à proximité du point bonus caché (48.8470, 2.3450)
|
|
Alors une notification s'affiche: "🎉 Point bonus découvert !"
|
|
Et l'audio du point bonus démarre automatiquement
|
|
Et un badge "Explorateur" est débloqué
|
|
Et un événement "BONUS_POI_DISCOVERED" est enregistré
|
|
Et la métrique "audio_guide.bonus.discovered" est incrémentée
|
|
|
|
Scénario: Notifications de proximité pour les points à venir
|
|
Étant donné un utilisateur "luke@roadwave.fr" en mode piéton
|
|
Et il marche vers la Sainte-Chapelle
|
|
Quand il est à 150m de la Sainte-Chapelle
|
|
Alors une notification discrète s'affiche: "Sainte-Chapelle à 150m"
|
|
Et un son subtil de notification est joué
|
|
Quand il est à 50m
|
|
Alors une notification plus visible s'affiche: "Arrivée imminente - Sainte-Chapelle"
|
|
Et un événement "POI_PROXIMITY_NOTIFICATION" est enregistré
|
|
Et la métrique "audio_guide.proximity.notified" est incrémentée
|
|
|
|
Scénario: Mode hors ligne avec téléchargement préalable
|
|
Étant donné un utilisateur "mary@roadwave.fr" en mode piéton
|
|
Et elle a téléchargé l'audio-guide "Visite du Quartier Latin" avant de partir
|
|
Quand elle active le mode avion (hors connexion)
|
|
Alors la carte s'affiche en mode hors ligne (tiles pré-téléchargées)
|
|
Et tous les audios sont disponibles en local
|
|
Et la localisation GPS fonctionne normalement
|
|
Et les séquences se déclenchent automatiquement hors ligne
|
|
Et un événement "AUDIO_GUIDE_OFFLINE_MODE" est enregistré
|
|
Et la métrique "audio_guide.offline.used" est incrémentée
|
|
|
|
Scénario: Partage de la progression avec des amis
|
|
Étant donné un utilisateur "nathan@roadwave.fr" en mode piéton
|
|
Et il a écouté 4 séquences sur 8
|
|
Quand il clique sur "Partager ma progression"
|
|
Alors un écran de partage s'ouvre avec:
|
|
| Élément | Contenu |
|
|
| Message | Je suis en train de découvrir le Quartier Latin !|
|
|
| Progression | 4/8 points visités (50%) |
|
|
| Carte visuelle | Capture d'écran de la carte avec progression |
|
|
| Lien | https://roadwave.fr/share/abc123 |
|
|
Et le partage peut être envoyé via:
|
|
| Canal | Disponible |
|
|
| SMS | Oui |
|
|
| WhatsApp | Oui |
|
|
| Facebook | Oui |
|
|
| Twitter/X | Oui |
|
|
Et un événement "AUDIO_GUIDE_PROGRESS_SHARED" est enregistré
|
|
Et la métrique "audio_guide.shared" est incrémentée
|
|
|
|
Scénario: Métriques de performance de la navigation libre
|
|
Étant donné que 10 000 utilisateurs ont terminé l'audio-guide en mode navigation libre
|
|
Quand les métriques d'usage sont collectées
|
|
Alors les indicateurs suivants sont disponibles:
|
|
| Métrique | Valeur moyenne |
|
|
| Taux de complétion | 78% |
|
|
| Nombre de séquences écoutées | 6.5/8 |
|
|
| Temps moyen de visite | 2h 15min |
|
|
| Distance moyenne parcourue | 3.2 km |
|
|
| Pourcentage d'ordre non-suggéré | 42% |
|
|
| Nombre de réécoutes par séquence | 0.8 |
|
|
Et les métriques sont exportées vers le système de monitoring
|