8.3 KiB
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 webpasseflutter analyzene remonte que les 3 problèmes connus detest/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é |
|---|---|---|