From 615a5aac922d6417b9d9679a4e8d7f455abcb786 Mon Sep 17 00:00:00 2001 From: freetlab Date: Wed, 29 Jul 2026 23:01:02 +0200 Subject: [PATCH] fix(eq): restore the prototype's band height and brand-teal fill Audit 11.4 and 11.6: the band column was 152 instead of 280 (t4 line 581), leaving the sliders 46% short, and the fill read liveGreen -- the LIVE badge colour -- instead of brand teal (t4 line 585). Adds two guards. The existing tests only asserted the band COUNT, which is exactly why both values could drift unnoticed. --- lib/widgets/ecualizador_widget.dart | 18 ++++++---- test/widgets/ecualizador_widget_test.dart | 44 +++++++++++++++++++++++ 2 files changed, 56 insertions(+), 6 deletions(-) diff --git a/lib/widgets/ecualizador_widget.dart b/lib/widgets/ecualizador_widget.dart index 64c8dec..267ff62 100644 --- a/lib/widgets/ecualizador_widget.dart +++ b/lib/widgets/ecualizador_widget.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import '../l10n/gen/app_localizations.dart'; import '../modelos/preset_ecualizador.dart'; import '../tema/pluriwave_theme.dart'; +import '../tema/pluriwave_tokens.dart'; import 'pluri_glass_surface.dart'; class EcualizadorWidget extends StatefulWidget { @@ -87,7 +88,9 @@ class _EcualizadorWidgetState extends State { child: Column( children: [ SizedBox( - height: 152, + // Audit 11.4: the prototype draws the band column at + // 280 (t4 line 581); 152 left the sliders 46% short. + height: 280, child: Semantics( slider: true, enabled: widget.habilitado, @@ -100,13 +103,16 @@ class _EcualizadorWidgetState extends State { child: SliderTheme( data: SliderTheme.of(context).copyWith( trackHeight: 5, - activeTrackColor: tokens.liveGreen, - thumbColor: tokens.liveGreen, + // Audit 11.6: the prototype's band fill is + // brand teal (t4 line 585). `liveGreen` is + // the LIVE badge colour and reading it here + // put the sliders in the wrong colour family. + activeTrackColor: PluriWaveTokens.brand, + thumbColor: PluriWaveTokens.brand, inactiveTrackColor: theme.colorScheme.surfaceContainerHighest, - overlayColor: tokens.liveGreen.withValues( - alpha: 0.15, - ), + overlayColor: PluriWaveTokens.brand + .withValues(alpha: 0.15), ), child: Slider( value: _bandas[i], diff --git a/test/widgets/ecualizador_widget_test.dart b/test/widgets/ecualizador_widget_test.dart index 22c8caf..0f20e2d 100644 --- a/test/widgets/ecualizador_widget_test.dart +++ b/test/widgets/ecualizador_widget_test.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:pluriwave/l10n/gen/app_localizations.dart'; import 'package:pluriwave/modelos/preset_ecualizador.dart'; +import 'package:pluriwave/tema/pluriwave_tokens.dart'; import 'package:pluriwave/widgets/ecualizador_widget.dart'; /// WU13 task 13.1 — first-class regression guard (design ADR-5, spec @@ -92,4 +93,47 @@ void main() { expect(slider.onChanged, isNotNull); } }); + + // Visual-fidelity guards (audit id 2521, items 11.4 and 11.6). These two + // values drifted silently once already: the whole point of the fidelity + // pass was that behavioural tests ("renders 5 sliders") never noticed the + // sliders were 46% too short and painted in the wrong colour family. + testWidgets('each band column is 280 tall, as the prototype draws it', ( + tester, + ) async { + await tester.pumpWidget(buildWidget()); + + final columnas = tester.widgetList( + find.descendant( + of: find.byType(EcualizadorWidget), + matching: find.byType(SizedBox), + ), + ); + + expect( + columnas.where((c) => c.height == 280), + hasLength(5), + reason: + 'prototype t4 line 581 sizes the band column at 280; 152 left the ' + 'sliders 46% short', + ); + }); + + testWidgets('band fill uses the brand teal, not the LIVE-badge green', ( + tester, + ) async { + await tester.pumpWidget(buildWidget()); + + final tema = SliderTheme.of(tester.element(find.byType(Slider).first)); + + expect(tema.activeTrackColor, PluriWaveTokens.brand); + expect(tema.thumbColor, PluriWaveTokens.brand); + expect( + tema.activeTrackColor, + isNot(PluriWaveTokens.dark.liveGreen), + reason: + 'liveGreen (#7EE4C2) is the LIVE badge colour; the prototype fills ' + 'EQ bands with brand teal #21D4D9 (t4 line 585)', + ); + }); }