Files
roadwave/features/audio-guides/mode-pieton.feature
2026-01-31 11:45:11 +01:00

244 lines
11 KiB
Gherkin
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# language: fr
Fonctionnalité: Audio-guide mode piéton (navigation manuelle)
En tant qu'utilisateur à pied
Je veux naviguer manuellement entre les séquences d'un audio-guide
Afin de contrôler mon rythme de visite
Contexte:
Étant donné que l'application RoadWave est démarrée
Et que l'utilisateur "jean@example.com" est connecté (gratuit)
Et qu'un audio-guide piéton "Visite du Louvre" est disponible avec 12 séquences
# 16.2.1 - Passage entre séquences
Scénario: Fin de séquence normale avec pause automatique
Étant donné que la séquence 1 "Introduction" est en cours de lecture
Quand la séquence se termine à 2:15
Alors le player se met en pause automatiquement
Et le message suivant s'affiche: "Séquence 1 terminée. Appuyez sur Suivant quand vous êtes prêt."
Et la barre de progression indique "1/12 complétée"
Scénario: Passage manuel à la séquence suivante
Étant donné que la séquence 1 est terminée et le player en pause
Quand l'utilisateur appuie sur le bouton [|] "Suivant"
Alors la séquence 2 "Pyramide du Louvre" démarre immédiatement
Et aucune latence n'est observée
Scénario: Séquence avec publicité (1/5 séquences)
Étant donné que la séquence 5 se termine
Et que c'est la 5ème séquence (1 pub toutes les 5)
Quand la séquence se termine
Alors la publicité s'enchaîne automatiquement (sans attente bouton)
Et la publicité se lit normalement
Et elle est skippable après 5 secondes
Scénario: Fin de publicité avec pause automatique
Étant donné qu'une publicité est en cours de lecture
Quand la publicité se termine
Alors le player se met en pause automatiquement
Et le message suivant s'affiche: "Séquence 6 prête. Appuyez sur Suivant."
Et l'utilisateur doit cliquer sur [|] pour continuer
Scénario: Flux complet séquence → pub → séquence
Étant donné que la séquence 5 démarre
Quand la séquence 5 se termine
Alors la publicité démarre automatiquement
Quand la publicité se termine
Alors le player se met en pause
Quand l'utilisateur clique sur [|]
Alors la séquence 6 démarre
Plan du Scénario: Fréquence de publicité configurable
Étant donné que l'utilisateur gratuit écoute un audio-guide
Et que la fréquence pub est configurée à <frequence>
Quand il termine la séquence <numero_sequence>
Alors une publicité est insérée : <pub_inseree>
Exemples:
| frequence | numero_sequence | pub_inseree |
| 1/5 | 5 | Oui |
| 1/5 | 10 | Oui |
| 1/5 | 4 | Non |
| 1/3 | 3 | Oui |
| 1/3 | 6 | Oui |
Scénario: Utilisateur Premium sans publicités
Étant donné que l'utilisateur "premium@example.com" est abonné Premium
Et qu'il écoute un audio-guide piéton
Quand il termine la séquence 5
Alors aucune publicité n'est insérée
Et le player se met en pause immédiatement
Et le message "Séquence 6 prête. Appuyez sur Suivant." s'affiche
# 16.2.2 - Navigation et contrôles
Scénario: Boutons de contrôle disponibles en mode piéton
Étant donné qu'un audio-guide piéton est en lecture
Quand l'utilisateur consulte les contrôles
Alors les boutons suivants sont visibles:
| bouton | fonction |
| [\|] Suivant | Passe à la séquence suivante |
| [\|] Précédent | Retour à la séquence précédente |
| [] Pause | Pause temporaire |
| [] Play | Reprend la lecture |
| [📋] Liste | Affiche toutes les séquences |
Scénario: Passage à la séquence suivante pendant la lecture
Étant donné que la séquence 3 "La Joconde" est en cours à 1:42/3:42
Quand l'utilisateur clique sur [|] "Suivant"
Alors la séquence 4 "Vénus de Milo" démarre immédiatement
Et la séquence 3 n'est pas marquée comme écoutée (car <80%)
Scénario: Retour à la séquence précédente (saut direct)
Étant donné que la séquence 5 est en cours de lecture
Quand l'utilisateur clique sur [|◀] "Précédent"
Alors la séquence 4 démarre depuis le début (0:00)
Et il n'y a pas de logique "replay si >10s" (contrairement au contenu classique)
Scénario: Pause et reprise pendant une séquence
Étant donné que la séquence 2 est en cours à 1:15/1:48
Quand l'utilisateur clique sur [] "Pause"
Alors la lecture se met en pause
Et la position 1:15 est conservée
Quand l'utilisateur clique sur [] "Play"
Alors la lecture reprend exactement à 1:15
Scénario: Interface liste des séquences
Étant donné qu'un audio-guide de 12 séquences est en cours
Quand l'utilisateur clique sur [📋] "Liste séquences"
Alors une liste complète s'affiche avec:
| élément | exemple |
| Numéro et titre | "3. La Joconde" |
| Durée | (3:42) |
| État | Écouté / En cours / À écouter |
| Date écoute (si écouté) | "Écouté le 15/01/2026" |
Scénario: Séquence en cours dans la liste
Étant donné que la séquence 3 est en cours à 1:22/3:42
Quand la liste des séquences est affichée
Alors la séquence 3 affiche:
"""
3. La Joconde (3:42) - EN COURS
1:22/3:42
"""
Scénario: Navigation libre vers séquence non encore écoutée
Étant donné que l'utilisateur est sur la séquence 3
Et que les séquences 4 à 12 n'ont pas été écoutées
Quand l'utilisateur clique sur "8. Les Appartements de Napoléon"
Alors la séquence 8 démarre immédiatement depuis 0:00
Et les séquences 4 à 7 restent marquées "À écouter"
Scénario: Retour à une séquence déjà écoutée
Étant donné que la séquence 2 "Pyramide du Louvre" a été écoutée à 100%
Et qu'elle est marquée "Écouté"
Quand l'utilisateur clique dessus dans la liste
Alors la séquence 2 démarre depuis 0:00
Et le statut est conservé
Scénario: Checkmarks sur séquences écoutées >80%
Étant donné que l'utilisateur écoute la séquence 2 de durée 1:48
Quand il écoute jusqu'à 1:30 (83% de complétion)
Et qu'il passe à la séquence suivante
Alors la séquence 2 est marquée "Écouté"
Et la date d'écoute est enregistrée
Scénario: Pas de checkmark si séquence écoutée <80%
Étant donné que l'utilisateur écoute la séquence 3 de durée 3:42
Quand il écoute jusqu'à 1:30 (40% de complétion)
Et qu'il passe à la séquence suivante
Alors la séquence 3 reste marquée "À écouter"
Scénario: Bouton "Tout afficher" si plus de 6 séquences
Étant donné un audio-guide avec 12 séquences
Quand la liste est affichée
Alors seules les 6 premières séquences sont visibles initialement
Et un bouton "Tout afficher " est présent
Quand l'utilisateur clique sur "Tout afficher "
Alors les 6 séquences restantes sont affichées
Scénario: Saut vers séquence spécifique depuis la barre de progression
Étant donné qu'un audio-guide est en cours
Quand l'utilisateur clique sur "3/12" dans la barre de progression
Alors la liste des séquences s'ouvre
Et la séquence en cours (3) est mise en surbrillance
# Sauvegarde progression
Scénario: Position exacte sauvegardée automatiquement
Étant donné que la séquence 5 est en cours à 2:34/4:10
Quand l'utilisateur quitte l'application
Alors la position 2:34 dans la séquence 5 est sauvegardée
Et la sauvegarde est effectuée localement (SQLite)
Et la sauvegarde est synchronisée sur le cloud (PostgreSQL)
Scénario: Reprise après fermeture de l'application
Étant donné que l'utilisateur a quitté l'app à la séquence 5 position 2:34
Quand il rouvre l'audio-guide
Alors une popup de reprise s'affiche
Quand il clique sur " Reprendre"
Alors la lecture reprend à la séquence 5 position 2:34 exacte
# Cas d'usage réels
Scénario: Visiteur qui connaît déjà certaines œuvres
Étant donné qu'un visiteur du Louvre démarre l'audio-guide
Et qu'il connaît déjà "La Joconde" (séquence 3)
Quand il arrive à la séquence 3
Et qu'il clique sur [|] "Suivant" après 10 secondes
Alors la séquence 4 démarre immédiatement
Et la séquence 3 n'est pas marquée comme écoutée
Scénario: Visiteur qui veut voir une œuvre éloignée
Étant donné qu'un visiteur est à la séquence 2
Et qu'il aperçoit "La Victoire de Samothrace" (séquence 8) physiquement
Quand il ouvre la liste et clique sur la séquence 8
Alors la séquence 8 démarre immédiatement
Et il peut écouter la description même si les séquences 3-7 ne sont pas écoutées
Scénario: Visiteur qui prend une pause café
Étant donné qu'un visiteur écoute la séquence 6
Quand il clique sur [] "Pause"
Et qu'il ferme l'application pendant 30 minutes
Quand il rouvre l'application
Alors la séquence 6 reprend à la position exacte où il s'était arrêté
Scénario: Visiteur qui revient le lendemain
Étant donné qu'un visiteur a écouté les séquences 1-5 hier
Et qu'il revient au musée aujourd'hui
Quand il ouvre l'audio-guide
Alors une popup propose " Reprendre" (séquence 6)
Et les séquences 1-5 sont marquées "Écouté"
# Cas d'erreur
Scénario: Séquence audio corrompue ou indisponible
Étant donné que la séquence 7 a un fichier audio corrompu
Quand l'utilisateur tente de la lire
Alors un message d'erreur s'affiche:
"""
Cette séquence est temporairement indisponible.
[ Passer à la suivante] [🔄 Réessayer]
"""
Scénario: Perte de connexion pendant le chargement
Étant donné que l'utilisateur lance la séquence 4
Et que la connexion réseau est perdue
Quand le chargement échoue
Alors un message s'affiche: "Connexion perdue. Vérifiez votre réseau."
Et un bouton "🔄 Réessayer" est disponible
Scénario: Batterie faible en cours de visite
Étant donné que la batterie de l'appareil est à 5%
Quand l'utilisateur écoute une séquence
Alors une notification système s'affiche: "Batterie faible. Progression sauvegardée."
Et la position est sauvegardée localement toutes les 10 secondes
Scénario: Mode piéton sans points GPS (pas d'alerte localisation)
Étant donné un audio-guide en mode piéton
Et que le GPS est désactivé
Quand l'utilisateur démarre l'audio-guide
Alors aucune alerte GPS ne s'affiche
Et l'audio-guide fonctionne normalement (navigation 100% manuelle)