# 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 là 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 là - [ ] 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 là - [ ] 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é | |---|---|---| | | | | | | | |