fix(escuchar): restore the prototype's 132px hero artwork
Audit 1.3: the hero art shipped at 84 where the prototype draws 132 (t4 line 56), with a 24 corner radius rather than the shared radiusMd. Adds a dimension guard. Every existing test on this screen asserts behaviour only, which is why an artwork 36% too small went unnoticed.
This commit is contained in:
@@ -307,12 +307,15 @@ class _ArteEscuchar extends StatelessWidget {
|
|||||||
|
|
||||||
final Emisora emisora;
|
final Emisora emisora;
|
||||||
|
|
||||||
static const _lado = 84.0;
|
/// Audit 1.3: the prototype's Escuchar hero art is 132 (t4 line 56), and
|
||||||
|
/// its corner radius is 24 rather than the shared `radiusMd`.
|
||||||
|
static const _lado = 132.0;
|
||||||
|
static const _radio = 24.0;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final theme = Theme.of(context);
|
final theme = Theme.of(context);
|
||||||
final radius = BorderRadius.circular(context.pluriTokens.radiusMd);
|
final radius = BorderRadius.circular(_radio);
|
||||||
return PluriGlassSurface(
|
return PluriGlassSurface(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
borderRadius: radius,
|
borderRadius: radius,
|
||||||
|
|||||||
@@ -122,6 +122,48 @@ void main() {
|
|||||||
reason: 'switches tabs — must NOT push a new route',
|
reason: 'switches tabs — must NOT push a new route',
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
testWidgets('visual fidelity (audit 1.3): the hero art is 132 square', (
|
||||||
|
tester,
|
||||||
|
) async {
|
||||||
|
// The redesign shipped this at 84 — the prototype draws 132 (t4 line
|
||||||
|
// 56). Nothing caught it because every existing test here asserts
|
||||||
|
// behaviour, never dimensions. This is the guard that would have.
|
||||||
|
_setLargeSurfaceSize(tester);
|
||||||
|
final favoritos = FakeServicioFavoritos();
|
||||||
|
final estado = EstadoRadio(
|
||||||
|
audio: FakeServicioAudio(),
|
||||||
|
favoritos: favoritos,
|
||||||
|
radio: FakeServicioRadio(),
|
||||||
|
servicioEcualizador: FakeServicioEcualizador(),
|
||||||
|
servicioGrabacion: FakeServicioGrabacionRadio(),
|
||||||
|
resolverArchivoCustom: _archivoCustomVacio,
|
||||||
|
iniciarAutomaticamente: false,
|
||||||
|
);
|
||||||
|
addTearDown(estado.dispose);
|
||||||
|
await tester.runAsync(estado.inicializar);
|
||||||
|
final sonando = emisoraDemo(uuid: 'f1', nombre: 'Favorita Uno');
|
||||||
|
await favoritos.agregar(sonando);
|
||||||
|
await estado.cargarFavoritos();
|
||||||
|
// The hero only renders when a station is active — `emisoraActual` is
|
||||||
|
// what gates it. Without this the assertion below passes vacuously.
|
||||||
|
await tester.runAsync(() => estado.reproducir(sonando));
|
||||||
|
|
||||||
|
await tester.pumpWidget(
|
||||||
|
_conProviders(estado, _testApp(const PantallaInicio())),
|
||||||
|
);
|
||||||
|
await _pumpBounded(tester);
|
||||||
|
|
||||||
|
final cuadrados = tester
|
||||||
|
.widgetList<SizedBox>(find.byType(SizedBox))
|
||||||
|
.where((s) => s.width == 132 && s.height == 132);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
cuadrados,
|
||||||
|
isNotEmpty,
|
||||||
|
reason: 'prototype t4 line 56 sizes the Escuchar hero artwork at 132',
|
||||||
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Mirrors the app.dart wiring: EstadoRadio owns the domain notifiers and
|
/// Mirrors the app.dart wiring: EstadoRadio owns the domain notifiers and
|
||||||
|
|||||||
Reference in New Issue
Block a user