feat(gherkin): compléter couverture règles métier avec 47 features manquantes
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.
This commit is contained in:
@@ -0,0 +1,205 @@
|
||||
# language: fr
|
||||
|
||||
@api @audio-guides @navigation @ui @mvp
|
||||
Fonctionnalité: Affichage avancé distance, direction et ETA
|
||||
|
||||
En tant qu'utilisateur
|
||||
Je veux voir la distance, la direction et le temps d'arrivée estimé vers les points d'intérêt
|
||||
Afin de planifier mon déplacement et anticiper les prochaines séquences
|
||||
|
||||
Contexte:
|
||||
Étant donné que le système affiche les informations suivantes:
|
||||
| Information | Format | Mise à jour |
|
||||
| Distance | Mètres / Kilomètres | Temps réel |
|
||||
| Direction | Boussole + Flèche | Temps réel |
|
||||
| ETA | Minutes / Heures | Dynamique |
|
||||
| Vitesse utilisateur | km/h (mode voiture) | Temps réel |
|
||||
|
||||
Scénario: Affichage de la distance en mètres pour proximité < 1km
|
||||
Étant donné un utilisateur "alice@roadwave.fr" en mode piéton
|
||||
Et elle se trouve à 450m du Panthéon
|
||||
Quand elle consulte l'écran de l'audio-guide
|
||||
Alors la distance affichée est: "450 m"
|
||||
Et la précision de la distance est de ±10m
|
||||
Et un événement "DISTANCE_DISPLAYED" est enregistré avec unité: "meters", valeur: 450
|
||||
Et la métrique "distance.displayed.meters" est incrémentée
|
||||
|
||||
Scénario: Affichage de la distance en kilomètres pour distance > 1km
|
||||
Étant donné un utilisateur "bob@roadwave.fr" en mode voiture
|
||||
Et il se trouve à 12.5 km du Château de Chambord
|
||||
Quand il consulte l'écran de l'audio-guide
|
||||
Alors la distance affichée est: "12.5 km"
|
||||
Et la précision de la distance est de ±100m
|
||||
Et un événement "DISTANCE_DISPLAYED" est enregistré avec unité: "kilometers", valeur: 12.5
|
||||
Et la métrique "distance.displayed.kilometers" est incrémentée
|
||||
|
||||
Scénario: Mise à jour en temps réel de la distance pendant le déplacement
|
||||
Étant donné un utilisateur "charlie@roadwave.fr" en mode piéton
|
||||
Et il marche vers la Sainte-Chapelle initialement à 800m
|
||||
Quand il marche à une vitesse de 5 km/h
|
||||
Alors la distance est mise à jour toutes les 2 secondes:
|
||||
| Temps | Distance affichée |
|
||||
| T+0s | 800 m |
|
||||
| T+30s | 760 m |
|
||||
| T+60s | 720 m |
|
||||
| T+90s | 680 m |
|
||||
Et la barre de progression visuelle se remplit progressivement
|
||||
Et un événement "DISTANCE_UPDATED" est enregistré toutes les 10 secondes
|
||||
Et la métrique "distance.real_time_updates" est incrémentée
|
||||
|
||||
Scénario: Affichage de la direction avec boussole et flèche
|
||||
Étant donné un utilisateur "david@roadwave.fr" en mode piéton
|
||||
Et il se trouve face au nord
|
||||
Et le Panthéon est au sud-est de sa position
|
||||
Quand il consulte l'écran de l'audio-guide
|
||||
Alors une boussole s'affiche avec:
|
||||
| Élément | Affichage |
|
||||
| Orientation boussole | Nord en haut |
|
||||
| Flèche vers POI | Pointe vers 135° (sud-est) |
|
||||
| Angle cardinal | "SE" (sud-est) |
|
||||
| Rotation dynamique | Suit l'orientation du téléphone|
|
||||
Et la flèche est colorée selon la distance:
|
||||
| Distance | Couleur |
|
||||
| < 100m | Vert |
|
||||
| 100m - 500m | Orange |
|
||||
| > 500m | Bleu |
|
||||
Et un événement "DIRECTION_DISPLAYED" est enregistré avec angle: 135
|
||||
Et la métrique "direction.displayed" est incrémentée
|
||||
|
||||
Scénario: Mise à jour de la direction en temps réel lors de la rotation
|
||||
Étant donné un utilisateur "eve@roadwave.fr" en mode piéton
|
||||
Et elle se trouve face au nord avec le Panthéon au sud-est
|
||||
Quand elle tourne son téléphone vers l'est
|
||||
Alors la boussole pivote dynamiquement
|
||||
Et la flèche vers le POI reste fixée sur la direction réelle (135°)
|
||||
Et l'affichage est fluide à 60 FPS
|
||||
Et un événement "COMPASS_ROTATED" est enregistré
|
||||
Et la métrique "compass.rotations" est incrémentée
|
||||
|
||||
Scénario: Calcul de l'ETA en mode piéton (vitesse moyenne 5 km/h)
|
||||
Étant donné un utilisateur "frank@roadwave.fr" en mode piéton
|
||||
Et il se trouve à 600m du Jardin du Luxembourg
|
||||
Quand le système calcule l'ETA avec vitesse piéton moyenne: 5 km/h
|
||||
Alors l'ETA affiché est: "7 min"
|
||||
Et le calcul utilise la formule: temps = distance / vitesse_moyenne_pieton
|
||||
Et un événement "ETA_CALCULATED" est enregistré avec mode: "pedestrian", eta: 7
|
||||
Et la métrique "eta.calculated.pedestrian" est incrémentée
|
||||
|
||||
Scénario: Calcul de l'ETA en mode voiture avec vitesse réelle
|
||||
Étant donné un utilisateur "grace@roadwave.fr" en mode voiture
|
||||
Et elle se trouve à 15 km du Château de Chenonceau
|
||||
Et elle roule actuellement à 80 km/h
|
||||
Quand le système calcule l'ETA
|
||||
Alors l'ETA affiché est: "11 min"
|
||||
Et le calcul utilise la vitesse réelle actuelle
|
||||
Et un événement "ETA_CALCULATED" est enregistré avec mode: "car", vitesse: 80, eta: 11
|
||||
Et la métrique "eta.calculated.car" est incrémentée
|
||||
|
||||
Scénario: Recalcul dynamique de l'ETA en fonction des changements de vitesse
|
||||
Étant donné un utilisateur "henry@roadwave.fr" en mode voiture
|
||||
Et l'ETA initial vers le Château d'Amboise est: "15 min" (vitesse: 70 km/h)
|
||||
Quand il ralentit à 40 km/h à cause d'un bouchon
|
||||
Alors l'ETA est recalculé et mis à jour: "22 min"
|
||||
Et une notification discrète s'affiche: "ETA mis à jour : +7 min"
|
||||
Quand il accélère à nouveau à 90 km/h
|
||||
Alors l'ETA est recalculé: "12 min"
|
||||
Et un événement "ETA_UPDATED" est enregistré avec ancienETA: 22, nouveauETA: 12
|
||||
Et la métrique "eta.recalculated" est incrémentée
|
||||
|
||||
Scénario: Affichage du temps d'arrivée absolu en mode voiture
|
||||
Étant donné un utilisateur "iris@roadwave.fr" en mode voiture
|
||||
Et il est 14h30
|
||||
Et l'ETA vers le prochain point est: "25 min"
|
||||
Quand elle active l'option "Afficher l'heure d'arrivée"
|
||||
Alors l'affichage change de "25 min" à "Arrivée à 14h55"
|
||||
Et les deux formats peuvent être basculés par un tap sur l'ETA
|
||||
Et un événement "ETA_FORMAT_CHANGED" est enregistré avec format: "absolute_time"
|
||||
Et la métrique "eta.format.absolute" est incrémentée
|
||||
|
||||
Scénario: Affichage groupé distance + direction + ETA sur une carte compacte
|
||||
Étant donné un utilisateur "jack@roadwave.fr" en mode piéton
|
||||
Et il se trouve à 450m du Panthéon au sud-est
|
||||
Quand il consulte la carte de l'audio-guide
|
||||
Alors une carte compacte s'affiche pour chaque point d'intérêt:
|
||||
| Point d'intérêt | Distance | Direction | ETA |
|
||||
| Panthéon | 450 m | SE ↗ | 5 min |
|
||||
| Jardin Lux. | 1.2 km | SO ↙ | 14 min |
|
||||
| Sorbonne | 320 m | E → | 4 min |
|
||||
Et les points sont triés par distance (plus proche en premier)
|
||||
Et un événement "POI_LIST_DISPLAYED" est enregistré
|
||||
Et la métrique "poi_list.displayed" est incrémentée
|
||||
|
||||
Scénario: Indication visuelle "Vous y êtes !" à l'arrivée
|
||||
Étant donné un utilisateur "kate@roadwave.fr" en mode piéton
|
||||
Et elle approche du Panthéon
|
||||
Quand elle entre dans un rayon de 10m du point d'intérêt
|
||||
Alors l'affichage change de "15 m" à "🎯 Vous y êtes !"
|
||||
Et une animation de succès est jouée
|
||||
Et une notification sonore subtile est jouée
|
||||
Et l'audio de la séquence démarre automatiquement
|
||||
Et un événement "POI_ARRIVED" est enregistré avec précision: 8m
|
||||
Et la métrique "poi.arrived" est incrémentée
|
||||
|
||||
Scénario: Affichage du trajet à vol d'oiseau vs trajet routier
|
||||
Étant donné un utilisateur "luke@roadwave.fr" en mode voiture
|
||||
Et il se trouve à 12 km à vol d'oiseau du Château de Chambord
|
||||
Mais le trajet routier est de 18 km (détours)
|
||||
Quand il consulte l'ETA
|
||||
Alors la distance affichée est celle du trajet routier: "18 km"
|
||||
Et l'ETA est calculé sur le trajet routier: "15 min"
|
||||
Et un bouton "Itinéraire" permet de voir le trajet détaillé
|
||||
Et un événement "ROUTE_DISPLAYED" est enregistré avec routeDistance: 18, airDistance: 12
|
||||
Et la métrique "route.displayed" est incrémentée
|
||||
|
||||
Scénario: Mode d'économie de batterie avec mise à jour moins fréquente
|
||||
Étant donné un utilisateur "mary@roadwave.fr" avec batterie < 20%
|
||||
Et le mode économie d'énergie est activé
|
||||
Quand elle utilise l'audio-guide
|
||||
Alors la fréquence de mise à jour des distances est réduite:
|
||||
| Mode normal | Mode économie |
|
||||
| Toutes les 2s | Toutes les 10s|
|
||||
Et la précision GPS est réduite (précision: ±30m au lieu de ±10m)
|
||||
Et un événement "BATTERY_SAVER_ENABLED" est enregistré
|
||||
Et la métrique "battery_saver.enabled" est incrémentée
|
||||
|
||||
Scénario: Affichage de la vitesse actuelle en mode voiture
|
||||
Étant donné un utilisateur "nathan@roadwave.fr" en mode voiture
|
||||
Et il roule à 75 km/h
|
||||
Quand il consulte l'écran de l'audio-guide
|
||||
Alors sa vitesse actuelle est affichée: "75 km/h"
|
||||
Et la vitesse est mise à jour en temps réel
|
||||
Et un événement "SPEED_DISPLAYED" est enregistré avec vitesse: 75
|
||||
Et la métrique "speed.displayed" est incrémentée
|
||||
|
||||
Scénario: Alerte de dépassement de limite de vitesse (optionnel)
|
||||
Étant donné un utilisateur "olive@roadwave.fr" en mode voiture
|
||||
Et elle a activé l'option "Alertes de vitesse"
|
||||
Et la limite de vitesse sur sa route est 80 km/h
|
||||
Quand elle roule à 95 km/h
|
||||
Alors une alerte visuelle discrète s'affiche: "⚠️ 95 km/h (limite: 80)"
|
||||
Et l'alerte disparaît quand elle ralentit en dessous de 85 km/h
|
||||
Et un événement "SPEED_LIMIT_EXCEEDED" est enregistré avec vitesse: 95, limite: 80
|
||||
Et la métrique "speed.limit_exceeded" est incrémentée
|
||||
|
||||
Scénario: Indication de zones à forte densité de points d'intérêt
|
||||
Étant donné un utilisateur "paul@roadwave.fr" en mode piéton
|
||||
Et il se trouve dans une zone avec 5 points d'intérêt dans un rayon de 200m
|
||||
Quand il consulte la carte
|
||||
Alors une indication s'affiche: "Zone dense : 5 points à proximité"
|
||||
Et les marqueurs sont regroupés en cluster pour éviter la surcharge visuelle
|
||||
Et en zoomant, le cluster se décompose en marqueurs individuels
|
||||
Et un événement "HIGH_DENSITY_ZONE_DETECTED" est enregistré avec count: 5
|
||||
Et la métrique "zones.high_density" est incrémentée
|
||||
|
||||
Scénario: Métriques de précision de la localisation GPS
|
||||
Étant donné un utilisateur "quinn@roadwave.fr" utilisant l'audio-guide
|
||||
Quand les métriques de précision GPS sont collectées
|
||||
Alors les indicateurs suivants sont disponibles:
|
||||
| Métrique | Valeur cible |
|
||||
| Précision GPS moyenne | ±10m |
|
||||
| Précision GPS en mode économie | ±30m |
|
||||
| Fréquence de mise à jour GPS | 1-2 Hz |
|
||||
| Taux d'erreur de positionnement | < 5% |
|
||||
| Latence de calcul ETA | < 100ms |
|
||||
Et les métriques sont exportées vers le système de monitoring
|
||||
Et des alertes sont déclenchées si précision > ±50m
|
||||
Reference in New Issue
Block a user