256 lines
11 KiB
Gherkin
256 lines
11 KiB
Gherkin
# language: fr
|
|
Fonctionnalité: Lecture en boucle et enchaînement automatique
|
|
En tant qu'auditeur
|
|
Je veux que les contenus s'enchaînent automatiquement avec un délai paramétrable
|
|
Afin d'avoir une expérience fluide sans interruption
|
|
|
|
Contexte:
|
|
Étant donné que l'API RoadWave est disponible
|
|
Et qu'un utilisateur est connecté
|
|
|
|
Scénario: Passage automatique après 2 secondes (mode standard)
|
|
Étant donné que j'écoute un contenu "A" en mode standard
|
|
Quand la lecture se termine naturellement
|
|
Alors un timer de 2 secondes démarre
|
|
Et un overlay s'affiche: "Contenu suivant dans 2s..."
|
|
Et une barre de décompte visuelle s'affiche
|
|
Quand le timer atteint 0
|
|
Alors le contenu "B" démarre automatiquement
|
|
Et l'overlay disparaît
|
|
|
|
Scénario: Passage automatique après 1 seconde (mode Kids)
|
|
Étant donné que je suis en mode Kids
|
|
Et que j'écoute un contenu pour enfants
|
|
Quand la lecture se termine
|
|
Alors un timer de 1 seconde démarre
|
|
Et le message "Contenu suivant dans 1s..." s'affiche
|
|
Quand le timer expire
|
|
Alors le contenu suivant démarre automatiquement
|
|
Car l'attention des enfants est plus courte
|
|
|
|
Scénario: Passage immédiat après une radio live (0 seconde)
|
|
Étant donné que j'écoute une radio live
|
|
Quand le créateur arrête la diffusion
|
|
Alors le passage au contenu suivant est immédiat (0s de délai)
|
|
Et aucun overlay de décompte n'est affiché
|
|
Et la transition est fluide
|
|
|
|
Scénario: Annulation du passage automatique
|
|
Étant donné qu'un contenu se termine
|
|
Et que le timer de 2 secondes démarre
|
|
Quand je clique sur "Rester sur ce contenu" pendant le décompte
|
|
Alors le timer est annulé
|
|
Et le contenu actuel reste en pause à la fin
|
|
Et le contenu suivant n'est pas lancé
|
|
|
|
Scénario: Insertion de publicité pendant le délai de transition
|
|
Étant donné que j'ai écouté 4 contenus sans publicité
|
|
Et que le 5ème contenu se termine
|
|
Quand le délai de 2 secondes démarre
|
|
Alors une publicité s'insère dans la file d'attente
|
|
Et le message devient "Publicité (15s)"
|
|
Et la publicité démarre après les 2 secondes
|
|
Et elle ne coupe jamais un contenu en cours
|
|
|
|
Scénario: Fréquence de publicité paramétrable admin
|
|
Étant donné que la fréquence pub est configurée à "1/5 contenus"
|
|
Quand j'écoute 10 contenus
|
|
Alors 2 publicités sont insérées (après les contenus 5 et 10)
|
|
Étant donné que l'admin change la fréquence à "1/3 contenus"
|
|
Quand j'écoute 9 contenus
|
|
Alors 3 publicités sont insérées (après les contenus 3, 6 et 9)
|
|
|
|
Scénario: Publicité skippable après 5 secondes par défaut
|
|
Étant donné qu'une publicité de 30 secondes démarre
|
|
Et que le délai minimal de visionnage est configuré à 5 secondes
|
|
Quand j'écoute pendant 3 secondes
|
|
Alors le bouton "Passer" n'est pas encore visible
|
|
Quand j'atteins 5 secondes d'écoute
|
|
Alors le bouton "Passer" apparaît
|
|
Et je peux cliquer pour passer au contenu suivant
|
|
|
|
Scénario: Délai minimal de publicité paramétrable admin
|
|
Étant donné qu'une publicité démarre
|
|
Et que l'admin a configuré le délai à 10 secondes
|
|
Quand j'écoute pendant 9 secondes
|
|
Alors le bouton "Passer" n'est pas visible
|
|
Quand j'atteins 10 secondes
|
|
Alors le bouton "Passer" apparaît
|
|
Et je peux skipper la publicité
|
|
|
|
Scénario: Like et abonnement autorisés sur une publicité
|
|
Étant donné qu'une publicité est en lecture
|
|
Quand je clique sur le bouton cœur (véhicule arrêté)
|
|
Alors la publicité reçoit un like (+2% jauges tags pub)
|
|
Quand je clique sur "S'abonner" au créateur de la pub
|
|
Alors je suis abonné (+5% jauges tags créateur)
|
|
Et le créateur de pub bénéficie de l'engagement
|
|
|
|
Scénario: Métriques d'engagement publicité trackées
|
|
Étant donné qu'une publicité de 30s est diffusée à 100 auditeurs
|
|
Quand 40 auditeurs écoutent entièrement (30s)
|
|
Et que 50 auditeurs skippent après 10s
|
|
Et que 10 auditeurs skippent avant 5s
|
|
Alors les métriques sont:
|
|
| Métrique | Valeur |
|
|
| Taux d'écoute complète | 40% |
|
|
| Taux de skip après seuil | 50% |
|
|
| Taux de skip immédiat | 10% |
|
|
| Durée moyenne d'écoute | 18s |
|
|
|
|
Scénario: Message "Aucun contenu disponible" si file vide
|
|
Étant donné que la file d'attente est vide
|
|
Et qu'aucun contenu n'est disponible dans ma zone
|
|
Quand le contenu actuel se termine
|
|
Alors un message s'affiche: "Aucun contenu disponible dans cette zone"
|
|
Et une proposition apparaît: "Élargir la zone de recherche ?"
|
|
Et un bouton "Élargir" est disponible
|
|
Et la lecture se met en pause automatiquement
|
|
|
|
Scénario: Élargissement automatique de la zone de recherche
|
|
Étant donné que le message "Aucun contenu disponible" s'affiche
|
|
Quand je clique sur "Élargir la zone"
|
|
Alors l'algorithme relance une recherche avec rayon +50km
|
|
Et une notification "Recherche élargie à 50km" s'affiche
|
|
Et la file d'attente est recalculée
|
|
Et la lecture reprend automatiquement
|
|
|
|
Scénario: Refus d'élargissement laisse en pause
|
|
Étant donné que le message "Aucun contenu disponible" s'affiche
|
|
Quand je clique sur "Annuler"
|
|
Alors la lecture reste en pause
|
|
Et l'interface affiche "En attente de contenu"
|
|
Et je peux manuellement naviguer ou chercher du contenu
|
|
|
|
Scénario: Retry avec backoff exponentiel en cas d'échec réseau
|
|
Étant donné que le contenu suivant échoue au chargement
|
|
Quand la première tentative échoue
|
|
Alors le système retente après 1 seconde (backoff 1s)
|
|
Quand la 2ème tentative échoue
|
|
Alors le système retente après 2 secondes (backoff 2s)
|
|
Quand la 3ème tentative échoue
|
|
Alors le système retente après 4 secondes (backoff 4s)
|
|
Et après 3 échecs totaux, le système bascule en mode offline
|
|
|
|
Scénario: Basculement mode offline après 3 échecs réseau
|
|
Étant donné que j'ai eu 3 échecs de chargement consécutifs
|
|
Quand le 3ème échec se produit
|
|
Alors un message "Connexion instable, basculement mode offline" s'affiche
|
|
Et la lecture continue avec les contenus téléchargés uniquement
|
|
Et les contenus en ligne sont temporairement désactivés
|
|
Quand la connexion revient
|
|
Alors le mode en ligne est automatiquement rétabli
|
|
|
|
Scénario: Overlay de décompte avec barre visuelle
|
|
Étant donné qu'un contenu se termine
|
|
Quand le timer de 2 secondes démarre
|
|
Alors un overlay semi-transparent s'affiche en bas de l'écran
|
|
Et le texte "Contenu suivant dans 2s..." est visible
|
|
Et une barre de progression décroît de 100% à 0% en 2 secondes
|
|
Et la couleur de la barre passe de vert à orange
|
|
Et l'overlay disparaît automatiquement après le décompte
|
|
|
|
Scénario: Bouton "Rester sur ce contenu" pendant décompte
|
|
Étant donné que le décompte de 2 secondes est actif
|
|
Quand l'overlay s'affiche
|
|
Alors un bouton "Rester sur ce contenu" est visible
|
|
Et il est cliquable pendant les 2 secondes
|
|
Quand je clique dessus
|
|
Alors le timer est annulé immédiatement
|
|
Et l'overlay disparaît
|
|
Et le contenu actuel reste affiché en pause
|
|
|
|
Scénario: Pas d'interruption d'un contenu en cours
|
|
Étant donné que j'écoute un contenu de 10 minutes
|
|
Et que je suis à 5 minutes de lecture
|
|
Quand une publicité devrait s'insérer (fréquence 1/5)
|
|
Alors la publicité n'interrompt jamais le contenu en cours
|
|
Et elle attend la fin du contenu actuel
|
|
Et elle s'insère pendant le délai de transition (2s)
|
|
|
|
Scénario: Publicités uniquement pour utilisateurs gratuits
|
|
Étant donné que je suis un utilisateur gratuit
|
|
Quand j'écoute 5 contenus
|
|
Alors une publicité est insérée après le 5ème contenu
|
|
Étant donné que je passe en compte Premium
|
|
Quand j'écoute 100 contenus
|
|
Alors aucune publicité n'est insérée
|
|
Et l'enchaînement est direct (2s de transition seulement)
|
|
|
|
Scénario: Message clair pour l'utilisateur lors de la publicité
|
|
Étant donné qu'une publicité va démarrer
|
|
Quand le délai de transition démarre
|
|
Alors le message affiché est: "Publicité (15s)"
|
|
Et la durée totale de la pub est indiquée
|
|
Et l'utilisateur sait qu'il s'agit d'une pub
|
|
Et la transparence est maximale
|
|
|
|
Scénario: Transition fluide entre contenus sans coupure
|
|
Étant donné qu'un contenu se termine
|
|
Et que le suivant est pré-chargé en cache
|
|
Quand le timer de 2s expire
|
|
Alors la transition audio utilise un crossfade de 0.3s
|
|
Et il n'y a aucun blanc ou coupure
|
|
Et l'expérience est fluide
|
|
|
|
Scénario: Gestion des erreurs de chargement avec retry
|
|
Étant donné que le contenu suivant échoue au chargement
|
|
Quand la 1ère tentative échoue
|
|
Alors une notification "Chargement..." s'affiche
|
|
Et le système retente automatiquement
|
|
Quand la 2ème tentative réussit
|
|
Alors la lecture démarre normalement
|
|
Et aucune action utilisateur n'est requise
|
|
|
|
Scénario: Mode offline après échecs multiples
|
|
Étant donné que j'ai 50 contenus téléchargés en mode offline
|
|
Et que j'ai eu 3 échecs réseau consécutifs
|
|
Quand le mode offline s'active
|
|
Alors seuls les contenus téléchargés sont disponibles
|
|
Et un badge "Mode offline" s'affiche en haut de l'écran
|
|
Et la lecture continue sans interruption
|
|
|
|
Scénario: Compteur de contenus avant prochaine publicité
|
|
Étant donné que la fréquence pub est 1/5 contenus
|
|
Et que j'ai écouté 3 contenus depuis la dernière pub
|
|
Quand je consulte l'interface
|
|
Alors un indicateur discret affiche "2 contenus avant pub"
|
|
Et l'utilisateur sait quand attendre la prochaine publicité
|
|
|
|
Plan du Scénario: Délai de transition selon mode
|
|
Étant donné que je suis en mode <mode>
|
|
Quand un contenu se termine
|
|
Alors le délai de transition est <delai> secondes
|
|
Et le message affiché est <message>
|
|
|
|
Exemples:
|
|
| mode | delai | message |
|
|
| Standard | 2 | "Contenu suivant dans 2s..." |
|
|
| Kids | 1 | "Contenu suivant dans 1s..." |
|
|
| Live | 0 | (aucun message) |
|
|
|
|
Plan du Scénario: Fréquence d'insertion des publicités
|
|
Étant donné que la fréquence pub est configurée à <frequence>
|
|
Quand j'écoute <contenus> contenus
|
|
Alors <pubs> publicités sont insérées
|
|
|
|
Exemples:
|
|
| frequence | contenus | pubs |
|
|
| 1/3 | 6 | 2 |
|
|
| 1/3 | 9 | 3 |
|
|
| 1/5 | 10 | 2 |
|
|
| 1/5 | 15 | 3 |
|
|
| 1/7 | 14 | 2 |
|
|
| 1/7 | 21 | 3 |
|
|
|
|
Plan du Scénario: Backoff exponentiel retry
|
|
Étant donné que le chargement échoue
|
|
Quand je suis à la tentative <tentative>
|
|
Alors le délai de retry est <delai> secondes
|
|
|
|
Exemples:
|
|
| tentative | delai |
|
|
| 1 | 1 |
|
|
| 2 | 2 |
|
|
| 3 | 4 |
|