# 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     |
