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

8.3 KiB
Raw Permalink Blame History

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'écranflutter 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é