diff --git a/integration_test/config_on_device_test.dart b/integration_test/config_on_device_test.dart index 53ebbd3..fae0732 100644 --- a/integration_test/config_on_device_test.dart +++ b/integration_test/config_on_device_test.dart @@ -244,6 +244,43 @@ void main() { debugPrint('[appareil] brouillon abandonné — rien n\'est écrit sur la box'); } + // ── 5-ter. Le chip de domaine PORTE son libellé ───────────────────────── + // + // Il ne rendait qu'une étiquette dessinée : le domaine d'une charge était illisible + // sur sa carte, alors que c'est lui qui décide de son groupe et de son rang. + final chip = find.byKey(const ValueKey('chip-domaine-chauffe-eau')); + await _attendre(tester, () => chip.evaluate().isNotEmpty, + quoi: 'le chip de domaine de chauffe-eau'); + final texteChip = find + .descendant(of: chip, matching: find.byType(Text)) + .evaluate() + .map((e) => (e.widget as Text).data) + .whereType() + .toList(); + debugPrint('[appareil] chip de domaine : $texteChip'); + expect(texteChip.any((t) => t.trim().isNotEmpty), isTrue, + reason: 'le chip doit porter un libellé, pas seulement une icône'); + + // ── 5-quater. L'écran de mécanisme, et son sélecteur ACTIF ────────────── + final boutons = find.text('Configurer'); + await tester.tap(boutons.first); + await tester.pump(const Duration(seconds: 2)); + + for (final m in ['Routeur de relais', 'Modulable', 'SG-Ready']) { + expect(find.text(m), findsWidgets, + reason: 'le sélecteur de mécanisme doit proposer « $m »'); + } + // Les sections que la maquette exige et qui manquaient. + for (final titre in ['Relais commandés', 'Temporisations', 'Compteur dédié', + 'Arbitrage']) { + expect(find.text(titre), findsWidgets, reason: 'section « $titre » absente'); + } + debugPrint('[appareil] écran de mécanisme : sélecteur et sections présents'); + + // On repart sans rien changer. + Navigator.of(tester.element(find.text('Arbitrage'))).pop(); + await tester.pump(const Duration(seconds: 1)); + // ── 6. On laisse l'écran affiché ──────────────────────────────────────── // // `flutter test integration_test` referme l'app dès la dernière assertion. Sans diff --git a/lib/widgets/controllable_loads_section.dart b/lib/widgets/controllable_loads_section.dart index 1c59cdb..fe09547 100644 --- a/lib/widgets/controllable_loads_section.dart +++ b/lib/widgets/controllable_loads_section.dart @@ -339,7 +339,10 @@ class LoadConfigCard extends StatelessWidget { ), const SizedBox(height: 10), Row(children: [ - DomainMenu(entry: entry, provider: provider), + DomainMenu( + key: ValueKey('chip-domaine-${entry.id}'), + entry: entry, + provider: provider), const Spacer(), TextButton.icon( onPressed: () => onConfigure(context, entry),