30 lines
2.0 KiB
Markdown
30 lines
2.0 KiB
Markdown
# Étape 2 – Blocage après "Suivant"
|
||
|
||
## Reproduction
|
||
- Plateforme : Web & mobile (Expo) – navigation `Routes.CreateLyricsWithAi`.
|
||
- Préconditions : Projet sans paroles existantes.
|
||
- Étapes :
|
||
1. Lancer l'atelier d'écriture et sélectionner un objectif (Étape 1).
|
||
2. Renseigner un contexte dans l'input (Étape 2).
|
||
3. Appuyer sur `Suivant`.
|
||
- Résultat observé : le bouton devient inactif, l'écran reste figé sur l'étape 2 et il est impossible de poursuivre car le swipe est désactivé.
|
||
|
||
## Analyse & cause racine
|
||
- L'étape dépend de `SwiperFlatList` avec `disableGesture={true}` : seule la navigation programmée via `scrollToIndex` permet d'avancer.
|
||
- L'appel `scrollRef.current.scrollToIndex` levait par intermittence une exception (`Invariant Violation: scrollToIndex out of range`) lorsque la mesure des vues n'était pas prête au moment du clic.
|
||
- L'erreur était avalée silencieusement (`catch {}`) ce qui laissait l'index interne sur `1` et donc l'utilisateur bloqué sur Étape 2.
|
||
|
||
## Correctif
|
||
- Ajout d'une logique de re-tentative autour de `scrollToIndex` avec journalisation pour diagnostiquer les cas anormaux.
|
||
- Clamp de l'index (`Math.min(idx + 1, MAX_STEP_INDEX)`) pour éviter toute sortie de plage.
|
||
- Progression recalculée en même temps que la navigation afin d'éviter les états intermédiaires incohérents.
|
||
|
||
## Validation manuelle
|
||
1. Rejouer le scénario de reproduction sur web et mobile (Expo Go).
|
||
2. Vérifier la console : absence d'avertissements `[CreateLyricsWithAi] scrollToIndex failed`.
|
||
3. Confirmer que l'écran passe correctement à "Étape 3: Quelle émotion veux-tu transmettre ?" et que le bouton `Suivant` se réactive après sélection d'une émotion.
|
||
4. Revenir en arrière (`Précédent`) pour s'assurer que l'étape 2 reste éditable et que l'avancement se met à jour (progression dynamique).
|
||
|
||
## Points de suivi
|
||
- Ajouter une suite E2E complète une fois l'infrastructure de tests dispo (Detox/Playwright) pour vérifier la navigation multi-étapes sans interaction manuelle.
|