import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:pluriwave/l10n/gen/app_localizations.dart'; import 'package:pluriwave/tema/pluriwave_theme.dart'; import 'package:pluriwave/widgets/pluri_root_header.dart'; /// S1 (Tier 1 visual fidelity): the prototype draws no global `AppBar` — /// each root instead owns a plain 56px title row inside its own content /// (`t4`, e.g. Alarmas line 325 `height:56px`, Ajustes line 511, Explorar /// line 641). [PluriRootHeader] is that row, shared by all 5 roots so the /// sleep-timer action that used to live on `app.dart`'s single global /// `AppBar` stays reachable from every tab. void main() { Widget host(Widget child) { return MaterialApp( theme: PluriWaveTheme.dark(), locale: const Locale('en'), localizationsDelegates: AppLocalizations.localizationsDelegates, supportedLocales: AppLocalizations.supportedLocales, home: Scaffold(body: child), ); } testWidgets('renders the given title and is exactly 56px tall', ( tester, ) async { await tester.pumpWidget( host(PluriRootHeader(title: 'Settings', onSleepTimer: () {})), ); expect(find.text('Settings'), findsOneWidget); expect(PluriRootHeader.height, 56); final size = tester.getSize(find.byType(PluriRootHeader)); expect(size.height, 56); }); testWidgets('exposes a bedtime action that invokes onSleepTimer when ' 'tapped', (tester) async { var tapped = false; await tester.pumpWidget( host(PluriRootHeader(title: 'Alarms', onSleepTimer: () => tapped = true)), ); expect(find.byIcon(Icons.bedtime_outlined), findsOneWidget); await tester.tap(find.byIcon(Icons.bedtime_outlined)); await tester.pump(); expect(tapped, isTrue); }); testWidgets('never builds a Material AppBar', (tester) async { await tester.pumpWidget( host(PluriRootHeader(title: 'Search signal', onSleepTimer: () {})), ); expect(find.byType(AppBar), findsNothing); }); }