feat(bdd): réorganiser features en catégories api/ui/e2e et créer ADR-024
Résolution des incohérences #10, #11, et #12 de l'analyse d'architecture. ## Phase 1 : Réorganisation Features BDD (Point #10 - RÉSOLU) - Créer structure features/{api,ui,e2e} - Déplacer 83 features en 3 catégories via git mv (historique préservé) - features/api/ : 53 features (tests API backend) - features/ui/ : 22 features (tests UI mobile) - features/e2e/ : 8 features (tests end-to-end) Domaines déplacés : - API : authentication, recommendation, rgpd-compliance, content-creation, moderation, monetisation, premium, radio-live, publicites - UI : audio-guides, navigation, interest-gauges, mode-offline, partage, profil, recherche - E2E : abonnements, error-handling ## Phase 2 : Mise à jour Documentation ### ADR-007 - Tests BDD - Ajouter section "Convention de Catégorisation des Features" - Documenter règles api/ui/e2e avec exemples concrets - Spécifier step definitions (backend Go, mobile Dart) ### ADR-024 - Stratégie CI/CD Monorepo (NOUVEAU) - Créer ADR dédié pour stratégie CI/CD avec path filters - Architecture workflows séparés (backend.yml, mobile.yml, shared.yml) - Configuration path filters détaillée avec exemples YAML - Matrice de déclenchement et optimisations (~70% gain temps CI) - Plan d'implémentation (~2h, reporté jusqu'au développement) ### ADR-016 - Organisation Monorepo - Simplifier en retirant section CI/CD détaillée - Ajouter référence vers ADR-024 pour stratégie CI/CD ### INCONSISTENCIES-ANALYSIS.md - Point #10 (Tests BDD synchronisés) : ✅ RÉSOLU - Catégorisation features implémentée - ADR-007 mis à jour avec convention complète - Point #11 (70/30 Split paiements) : ✅ ANNULÉ (faux problème) - ADR-009 et Règle 18 parfaitement cohérents - Documentation exhaustive existante (formule, SQL, comparaisons) - Point #12 (Monorepo path filters) : ⏸️ DOCUMENTÉ - Architecture CI/CD complète dans ADR-024 - Implémentation reportée (projet en phase documentation) - Métriques mises à jour : - MODERATE : 6/9 traités (4 résolus + 1 annulé + 1 documenté) - ADR à jour : 100% (19/19 avec ADR-024) ## Phase 3 : Validation - Structure features validée (api/ui/e2e, aucun répertoire restant) - Historique Git préservé (git mv, renommages détectés) - 83 features total (API: 53, UI: 22, E2E: 8) Closes: Point #10 (résolu), Point #11 (annulé), Point #12 (documenté) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
210
features/e2e/error-handling/geolocalisation-desactivee.feature
Normal file
210
features/e2e/error-handling/geolocalisation-desactivee.feature
Normal file
@@ -0,0 +1,210 @@
|
||||
# language: fr
|
||||
|
||||
@error-handling @gps-disabled
|
||||
Fonctionnalité: Mode dégradé sans géolocalisation
|
||||
|
||||
Contexte:
|
||||
Étant donné que je suis un utilisateur connecté
|
||||
Et que j'ai refusé ou désactivé l'accès à la géolocalisation
|
||||
|
||||
# 12.4 - Mode dégradé automatique
|
||||
|
||||
Scénario: Types de contenu disponibles sans géolocalisation
|
||||
Étant donné que la géolocalisation est désactivée
|
||||
Quand j'ouvre l'application
|
||||
Alors les types de contenu suivants sont disponibles:
|
||||
| type_contenu | disponible |
|
||||
| Contenu national | oui |
|
||||
| Contenu téléchargé (offline) | oui |
|
||||
| Contenus "Neutre" géographiquement | oui |
|
||||
| Contenu géolocalisé Ancré | non |
|
||||
| Contenu géolocalisé Contextuel | non |
|
||||
| Audio-guides | non |
|
||||
| Notifications push géo-déclenchées | non |
|
||||
|
||||
# Popup au premier lancement
|
||||
|
||||
Scénario: Popup d'information au premier lancement sans GPS
|
||||
Étant donné que c'est mon premier lancement de l'application
|
||||
Et que j'ai refusé l'accès à la géolocalisation
|
||||
Quand l'application détecte que le GPS est désactivé
|
||||
Alors une popup s'affiche avec le message:
|
||||
"""
|
||||
RoadWave fonctionne mieux avec la géolocalisation activée. Sans elle, seul le contenu national sera disponible.
|
||||
"""
|
||||
Et la popup contient les boutons suivants:
|
||||
| bouton | action |
|
||||
| Activer | Redirection vers paramètres OS |
|
||||
| Continuer sans | Ferme popup et lance en mode dégradé |
|
||||
Et une checkbox "Ne plus me demander" est disponible
|
||||
|
||||
Scénario: Popup non affichée si case "Ne plus me demander" cochée
|
||||
Étant donné que j'ai déjà vu la popup de géolocalisation
|
||||
Et que j'ai coché "Ne plus me demander"
|
||||
Quand je lance l'application avec le GPS désactivé
|
||||
Alors la popup de géolocalisation ne s'affiche pas
|
||||
Et l'application démarre directement en mode dégradé
|
||||
Et le banner permanent de rappel s'affiche
|
||||
|
||||
Scénario: Redirection vers paramètres OS lors du clic sur "Activer"
|
||||
Étant donné que la popup de géolocalisation est affichée
|
||||
Quand je clique sur "Activer"
|
||||
Alors je suis redirigé vers les paramètres de géolocalisation de mon OS
|
||||
Et sur iOS, j'arrive dans "Réglages > RoadWave > Localisation"
|
||||
Et sur Android, j'arrive dans "Paramètres > Applications > RoadWave > Autorisations > Position"
|
||||
|
||||
# Banner permanent en mode dégradé
|
||||
|
||||
Scénario: Banner de rappel permanent sans GPS
|
||||
Étant donné que j'ai cliqué sur "Continuer sans" géolocalisation
|
||||
Quand l'application s'affiche
|
||||
Alors un bandeau s'affiche en haut de l'écran
|
||||
Et le bandeau contient le texte: "Mode limité : géolocalisation désactivée. [Activer]"
|
||||
Et le bandeau a un fond de couleur avertissement (jaune/orange)
|
||||
Et le bandeau n'est pas intrusif mais reste visible
|
||||
Et le bandeau reste affiché sur toutes les pages de l'application
|
||||
|
||||
Scénario: Clic sur le bouton "Activer" du banner
|
||||
Étant donné que le banner "Mode limité" est affiché
|
||||
Quand je clique sur le lien "[Activer]" dans le banner
|
||||
Alors je suis redirigé vers les paramètres de géolocalisation de mon OS
|
||||
|
||||
Scénario: Disparition du banner après activation GPS
|
||||
Étant donné que le banner "Mode limité" est affiché
|
||||
Et que je reviens dans l'application après avoir activé le GPS dans les paramètres
|
||||
Quand l'application détecte que la géolocalisation est maintenant active
|
||||
Alors le banner disparaît automatiquement
|
||||
Et l'application bascule en mode normal avec contenu géolocalisé
|
||||
Et un toast de confirmation s'affiche: "Géolocalisation activée"
|
||||
|
||||
# Contenu disponible en mode dégradé
|
||||
|
||||
Scénario: Lecture de contenu national sans GPS
|
||||
Étant donné que la géolocalisation est désactivée
|
||||
Et que du contenu national existe (actualités Le Monde, podcasts génériques)
|
||||
Quand je lance la lecture
|
||||
Alors je peux écouter le contenu national sans restriction
|
||||
Et l'algorithme de recommandation se base uniquement sur:
|
||||
| critère |
|
||||
| Mes centres d'intérêt |
|
||||
| Mon historique d'écoute |
|
||||
| Popularité générale |
|
||||
Et la proximité géographique n'est pas prise en compte
|
||||
|
||||
Scénario: Lecture de contenu téléchargé sans GPS
|
||||
Étant donné que la géolocalisation est désactivée
|
||||
Et que j'ai téléchargé 30 contenus quand j'avais le GPS activé
|
||||
Quand j'accède à mes contenus téléchargés
|
||||
Alors je peux lire tous mes contenus téléchargés normalement
|
||||
Et les contenus géolocalisés téléchargés restent accessibles
|
||||
Et le filtre géographique n'est pas appliqué pour les contenus offline
|
||||
|
||||
Scénario: Contenu "Neutre" géographiquement disponible
|
||||
Étant donné que la géolocalisation est désactivée
|
||||
Et qu'un créateur a publié du contenu avec la classification géographique "Neutre"
|
||||
Quand je recherche du contenu
|
||||
Alors les contenus "Neutre" sont inclus dans les résultats
|
||||
Et ils sont mélangés avec le contenu national
|
||||
Et l'algorithme les priorise selon mes centres d'intérêt
|
||||
|
||||
# Restrictions de contenu sans GPS
|
||||
|
||||
Scénario: Audio-guides inaccessibles sans GPS
|
||||
Étant donné que la géolocalisation est désactivée
|
||||
Quand je recherche un audio-guide spécifique
|
||||
Alors les audio-guides apparaissent dans les résultats de recherche
|
||||
Mais un badge "GPS requis" est affiché sur chaque audio-guide
|
||||
Et quand je clique sur un audio-guide, un message s'affiche:
|
||||
"""
|
||||
Les audio-guides nécessitent la géolocalisation pour fonctionner. Voulez-vous activer le GPS ?
|
||||
"""
|
||||
Et je peux choisir "Activer" ou "Annuler"
|
||||
|
||||
Scénario: Notifications push géo-déclenchées désactivées
|
||||
Étant donné que la géolocalisation est désactivée
|
||||
Et que je suis abonné à un créateur qui diffuse du contenu géolocalisé
|
||||
Quand le créateur publie un nouveau contenu géolocalisé
|
||||
Alors je ne reçois pas de notification push géo-déclenchée
|
||||
Mais je reçois une notification push standard (non géo-déclenchée) si le créateur publie du contenu national
|
||||
Et la notification précise: "Nouveau contenu national de [Créateur]"
|
||||
|
||||
Scénario: Contenu géolocalisé non proposé dans le feed
|
||||
Étant donné que la géolocalisation est désactivée
|
||||
Quand le système génère mon feed de contenu
|
||||
Alors aucun contenu "Ancré" ou "Contextuel" n'est inclus
|
||||
Et seuls les contenus "Neutre" et "National" sont proposés
|
||||
Et mon feed contient au minimum 20 contenus disponibles
|
||||
|
||||
# RGPD: Respect du consentement libre
|
||||
|
||||
Scénario: Application fonctionnelle sans GPS (pas de blocage)
|
||||
Étant donné que la géolocalisation est désactivée
|
||||
Quand j'utilise l'application
|
||||
Alors je ne suis jamais bloqué par un écran "GPS requis"
|
||||
Et toutes les fonctionnalités non-géolocalisées restent accessibles:
|
||||
| fonctionnalité |
|
||||
| Écoute contenu national |
|
||||
| Gestion profil |
|
||||
| Abonnements créateurs |
|
||||
| Recherche textuelle |
|
||||
| Historique d'écoute |
|
||||
| Paramètres |
|
||||
| Mode offline |
|
||||
Et je peux créer et publier du contenu national
|
||||
|
||||
Scénario: Respect du choix utilisateur de ne pas activer GPS
|
||||
Étant donné que j'ai coché "Ne plus me demander" pour la géolocalisation
|
||||
Quand j'utilise l'application pendant plusieurs semaines
|
||||
Alors la popup de demande GPS ne s'affiche plus jamais automatiquement
|
||||
Et seul le banner permanent reste affiché
|
||||
Et l'application ne force jamais l'activation du GPS
|
||||
|
||||
# Réactivation GPS et bascule en mode normal
|
||||
|
||||
Scénario: Bascule automatique en mode normal après activation GPS
|
||||
Étant donné que j'utilise l'application en mode dégradé depuis 1 semaine
|
||||
Et que je décide d'activer la géolocalisation
|
||||
Quand l'application détecte que le GPS est maintenant actif
|
||||
Alors le mode dégradé est désactivé automatiquement
|
||||
Et le banner "Mode limité" disparaît
|
||||
Et le contenu géolocalisé devient disponible immédiatement
|
||||
Et mon feed se rafraîchit avec du contenu local pertinent
|
||||
Et un toast de confirmation s'affiche: "Géolocalisation activée - Contenu local disponible"
|
||||
|
||||
Scénario: Demande de permission GPS lors de l'utilisation d'une fonctionnalité géo
|
||||
Étant donné que la géolocalisation est désactivée
|
||||
Quand j'essaie d'accéder à une fonctionnalité nécessitant le GPS (ex: audio-guide)
|
||||
Alors une popup contextuelle s'affiche:
|
||||
"""
|
||||
Cette fonctionnalité nécessite la géolocalisation. Voulez-vous l'activer ?
|
||||
"""
|
||||
Et je peux accepter ou refuser
|
||||
Et si j'accepte, je suis redirigé vers les paramètres OS
|
||||
Et si je refuse, je reste en mode dégradé sans message d'erreur répétitif
|
||||
|
||||
# Incitation à activer GPS sans être intrusif
|
||||
|
||||
Scénario: Statistiques de contenu local disponible non affiché
|
||||
Étant donné que la géolocalisation est désactivée
|
||||
Quand je navigue dans l'application
|
||||
Alors le banner peut afficher occasionnellement:
|
||||
"""
|
||||
Mode limité : géolocalisation désactivée. Plus de 500 contenus locaux disponibles près de vous. [Activer]
|
||||
"""
|
||||
Et ce message incitatif change tous les 3 jours
|
||||
Et il reste non intrusif (pas de popup, juste le banner)
|
||||
|
||||
Scénario: Onboarding différent pour utilisateurs sans GPS
|
||||
Étant donné que c'est ma première utilisation de RoadWave
|
||||
Et que j'ai refusé la géolocalisation
|
||||
Quand l'onboarding se termine
|
||||
Alors un écran explicatif s'affiche:
|
||||
"""
|
||||
Vous utilisez RoadWave sans géolocalisation. Voici ce qui est disponible :
|
||||
- Contenu national (actualités, podcasts)
|
||||
- Contenus téléchargés
|
||||
- Tous les créateurs et abonnements
|
||||
|
||||
Pour profiter pleinement de RoadWave (contenu local, audio-guides), activez la géolocalisation à tout moment.
|
||||
"""
|
||||
Et je peux continuer avec un bouton "Compris"
|
||||
Reference in New Issue
Block a user