DOCS/test-plan-refonte-config-section.md
2026-09-04 16:48:04 +02:00

158 lines
8.3 KiB
Markdown
Raw Permalink 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.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Plan de test — refonte Configuration & Sections (2026-09-04)
Périmètre : la refonte visuelle des écrans Configuration et Section, de leurs dialogues,
et le gabarit C de Map / Événement / Jeu. Maquettes : `DOCS/claude design/refonte-configuration-sections.html`
et `DOCS/claude design/refonte-gabarit-canevas.html`.
**Rien n'a été vérifié à l'écran**`flutter analyze` est propre et `flutter build web` passe,
c'est tout. `manager-app` n'a que 3 tests et aucun sur ces composants : la vérification est manuelle.
Mode d'emploi : coche si le comportement attendu est constaté, laisse vide sinon et note l'écart
en bas. `→` = résultat attendu.
---
## §0. Porte d'entrée
- [ ] `flutter build web` passe
- [ ] `flutter analyze` ne remonte que les 3 problèmes connus de `test/widget_test.dart`
- [ ] L'app se lance, connexion OK → le champ e-mail et le mot de passe sont lisibles et espacés
## §1. Le champ partagé — le plus gros risque de régression
Ces composants sont importés par une trentaine d'écrans. **Ce qui rentrait juste peut déborder** :
un débordement Flutter est visible (rayures jaunes), pas silencieux.
- [ ] Écran Configuration : les libellés sont **au-dessus** des champs, pas à gauche
- [ ] Le compteur de caractères est petit et discret sous le champ
- [ ] Aucune bande jaune de débordement sur : Ressources, Instances, Utilisateurs, Clés API, Devices
- [ ] Les cases à cocher (Hors ligne, iBeacon…) sont compactes et alignées à gauche de leur libellé
- [ ] Un champ de ressource vide affiche « Choisir » sur fond clair bordé, pas une pastille pleine
## §2. Écran Configuration
- [ ] Les actions (Supprimer, Annuler, Enregistrer, Export) sont **dans l'en-tête**, plus de barre en bas
- [ ] Le sous-titre indique date de création · nombre de sections · nombre de langues
- [ ] Le nombre de sections est juste **après le chargement** de la liste (et pas 0)
- [ ] Deux colonnes : Réglages + Sections à gauche, Habillage à droite ; empilées sous 900 px
- [ ] Enregistrer, puis rouvrir : les valeurs sont bien persistées
## §3. La grille de sections
- [ ] Les sections sont en grille responsive, plus de liste horizontale
- [ ] Tuiles 16/9 avec badge d'ordre, image si présente, icône de type sinon
- [ ] Une section inactive porte le badge « Masquée » et est estompée
- [ ] Glisser une tuile par sa poignée (coin haut droit) la réordonne → l'ordre est sauvé
- [ ] La tuile « Ajouter une section » en fin de grille ouvre le dialogue de création
- [ ] La recherche filtre bien la grille
## §4. Dialogue « Nouvelle section »
- [ ] Les 13 types sont visibles, groupés en 4 familles, avec une description par type
- [ ] Sur une **sous-section**, le type Menu n'est pas proposé
- [ ] L'avertissement « le type ne pourra plus être changé » est dans le pied
- [ ] Créer sans nom (< 3 caractères) message d'erreur, pas de création
## §5. Écran Section
- [ ] En-tête : icône du type, pastille du type, actions ; plus de barre en bas
- [ ] Le panneau « Diffusion » est déplié dans le rail droit (QR, identifiant, iBeacon)
- [ ] Cliquer le QR le copie notification de succès
- [ ] Cocher iBeacon **enregistre immédiatement** (chemin `save(false, …)`)
- [ ] Modifier le titre affiché **enregistre immédiatement** (chemin `save(true, …)`)
## §6. Modal de traduction — ⚠️ le piège Quill
Le point le plus fragile de la refonte. Les éditeurs sont montés en `IndexedStack` ;
deux chemins recréent les contrôleurs.
- [ ] Le rail de gauche liste les langues avec une pastille pleine / vide
- [ ] Basculer de langue **conserve** ce qui a été tapé dans l'autre langue
- [ ] La langue source s'affiche en référence au-dessus de l'éditeur
- [ ] Le compteur de caractères suit la frappe
- [ ] **« Appliquer à toutes les langues »** : le texte de la langue affichée part dans les autres, et l'éditeur montre le résultat
- [ ] **« Traduire avec l'IA »** : les langues manquantes se remplissent, l'éditeur montre le résultat, le quota se met à jour
- [ ] Après une traduction IA, retaper dans une langue traduite fonctionne encore
- [ ] Un champ **sans HTML** (ex. libellé d'annotation) ouvre le même modal, sans barre de format
- [ ] Annuler ne conserve rien, Valider conserve
## §7. Sélecteur de ressource
- [ ] La modale n'a **plus de double défilement** : la grille défile, pas le dialogue
- [ ] Un clic sur une vignette sélectionne et referme
- [ ] Sa largeur est inchangée (≈ 85 % de l'écran)
## §8. Éditeur de collection — Slider, Article, PDF
- [ ] Slider : liste à gauche, contenu édité à droite, plus de modale
- [ ] Ajouter un contenu, choisir une ressource, un titre Enregistrer il est au retour
- [ ] Un contenu **sans ressource** n'est pas envoyé au backend (comportement d'avant conservé)
- [ ] Réordonner par la poignée l'ordre est conservé après Enregistrer
- [ ] Supprimer un contenu
- [ ] Article : contenu, audio et les deux cases fonctionnent, la liste d'images suit
- [ ] PDF : plus de bloc figé, ajouter / renommer / supprimer un fichier
## §9. Quiz, Menu, Agenda
- [ ] Quiz : ajouter une question elle apparaît **et** existe au rechargement
- [ ] Quiz : modifier l'intitulé, l'image de fond, les réponses persisté
- [ ] Quiz : **réordonner** les rangs ne se marchent plus dessus (bug corrigé), l'ordre tient au rechargement
- [ ] Quiz : supprimer une question ; en cas d'erreur réseau, la liste revient à son état d'avant
- [ ] Quiz : les 4 messages de score s'ouvrent et s'enregistrent
- [ ] Menu : les sous-sections sont en grille, un clic ouvre l'écran de sous-section
- [ ] Menu : réordonner ordre correct au rechargement
- [ ] Menu : créer une sous-section depuis la tuile « Ajouter »
- [ ] Agenda : plus de bloc de 600 px, la liste suit son contenu, recherche et filtres de date OK
## §10. Le canevas — Map
- [ ] Trois volets : liste, fiche, carte
- [ ] Les **autres points** apparaissent en gris sur la carte
- [ ] Cliquer la carte place le point ouvert dans la fiche ; le pied affiche ses coordonnées
- [ ] Les outils Point / Ligne / Zone et la couleur fonctionnent
- [ ] Le bouton « agrandir » élargit la carte et replie la fiche
- [ ] Recherche et catégories cachent les **mêmes** points dans la liste et sur la carte
- [ ] « Informations pratiques » se replie/déplie et le compteur est juste
- [ ] Créer un point, le placer, le renommer rechargement : tout est
- [ ] Supprimer un point passe par la confirmation rouge
- [ ] **À juger à l'usage** : chaque déplacement de point déclenche un appel API. Si c'est trop bavard, il faudra grouper en fin de geste.
## §11. Le canevas — Événement, et Jeu
- [ ] Événement : si aucun plan de base n'est choisi, **le premier plan disponible est pris par défaut**
- [ ] Événement : ajouter une annotation, lui donner un libellé, une icône, une position sur la carte
- [ ] Événement : la position est **conservée au rechargement** (elle ne l'était jamais avant : la modale ne remplissait pas `geometry`)
- [ ] Événement : supprimer une annotation
- [ ] Événement : les blocs de programme s'affichent sans hauteur figée, le parcours est toujours
- [ ] Jeu : le choix Puzzle / Taquin est deux pastilles, plus d'onglets
- [ ] Jeu : le canevas montre le découpage lignes × colonnes sur l'image, et le compte de pièces suit
## §12. Sélecteur de géométrie encore en modale
Deux appelants n'ont pas été migrés ils doivent continuer de marcher **à l'identique**.
- [ ] Parcours étape géométrie : le dialogue s'ouvre, dessine, enregistre
- [ ] Agenda événement géométrie : idem
## §13. Catégories de carte — 🐛 bug corrigé
- [ ] Ouvrir les catégories d'une Map, **ne rien toucher**, valider les catégories sont **toujours là**
(avant : la liste était effacée)
- [ ] Les boutons du dialogue sont traduits (ils étaient en dur en français)
- [ ] Ajouter / renommer / supprimer une catégorie fonctionne
## §14. i18n
- [ ] Passer le manager en EN puis NL : aucun texte français résiduel sur les écrans repris
- [ ] Les nouveaux libellés sont traduits : familles de types, descriptions de type, « Masquée »,
« Informations pratiques », « Nouveau point », outils de géométrie
---
## Écarts constatés
| § | Ce qui a été observé | Gravité |
|---|---|---|
| | | |
| | | |