import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:motorcycle_dash/features/records/records_service.dart'; import 'package:motorcycle_dash/features/dashboard/widgets/evolution_portrait_dashboard.dart'; import 'package:motorcycle_dash/features/records/records_screen.dart'; import 'package:motorcycle_dash/features/rides/ride_state_machine.dart'; void main() { TestWidgetsFlutterBinding.ensureInitialized(); group('Evolution UI Widgets Rendering Tests', () { testWidgets('EvolutionPortraitDashboard renders speedometer and HUD pods', (tester) async { SharedPreferences.setMockInitialValues({}); final prefs = await SharedPreferences.getInstance(); await tester.pumpWidget( ProviderScope( overrides: [ sharedPreferencesProvider.overrideWithValue(prefs), ], child: MaterialApp( home: Scaffold( body: EvolutionPortraitDashboard( currentSpeedMph: 136.0, heading: 355.0, leanAngle: 48.0, accelG: 0.98, lateralG: 1.12, session: RideSession( state: RideState.idle, tripDistanceMiles: 145.2, topSpeedMph: 168.0, averageSpeedMph: 87.0, maxLeanLeft: 52.0, maxLeanRight: 49.0, startTime: null, ), ), ), ), ), ); await tester.pumpAndSettle(); expect(find.text('136'), findsOneWidget); expect(find.text('MPH'), findsOneWidget); expect(find.text('NO GPS'), findsOneWidget); expect(find.text('HEADSET'), findsNothing); expect(find.text('BRAKING'), findsOneWidget); expect(find.text('CORNERING'), findsOneWidget); expect(find.text('LEAN ANGLE'), findsOneWidget); expect(find.text('START SESSION'), findsOneWidget); }); testWidgets('RecordsScreen renders speed records and performance times', (tester) async { tester.view.physicalSize = const Size(1080, 2400); tester.view.devicePixelRatio = 1.0; addTearDown(() => tester.view.resetPhysicalSize()); SharedPreferences.setMockInitialValues({ 'topSpeedMph': 164.0, 'fastest0To60': 2.9, 'fastest0To100': 6.4, 'maxLeanLeft': 48.0, }); final prefs = await SharedPreferences.getInstance(); await tester.pumpWidget( ProviderScope( overrides: [ sharedPreferencesProvider.overrideWithValue(prefs), ], child: const MaterialApp( home: RecordsScreen(), ), ), ); await tester.pumpAndSettle(); expect(find.text('Personal Records'), findsOneWidget); expect(find.text('TOP SPEED'), findsOneWidget); expect(find.text('0-60'), findsOneWidget); expect(find.text('0-100'), findsOneWidget); expect(find.text('MAX LEAN LEFT'), findsOneWidget); }); }); }