import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:sqflite_common_ffi/sqflite_ffi.dart'; import 'package:bully/app.dart'; import 'package:bully/core/theme/theme_provider.dart'; import 'package:bully/data/repositories/session_repository.dart'; import 'package:bully/features/session/session_provider.dart'; import 'package:bully/features/tutorial/tutorial_provider.dart'; import 'package:bully/services/grouping_analyzer_service.dart'; import 'package:bully/services/score_calculator_service.dart'; import 'package:bully/services/tutorial_service.dart'; void main() { setUpAll(() { sqfliteFfiInit(); databaseFactory = databaseFactoryFfi; FlutterError.onError = (details) { // ignore: avoid_print print('CAUGHT_FLUTTER_ERROR: ${details.exceptionAsString()}'); // ignore: avoid_print print('CAUGHT_STACK: ${details.stack}'); }; }); testWidgets('BullyApp démarre et affiche HomeScreen + Tutorial sans erreur', (WidgetTester tester) async { SharedPreferences.setMockInitialValues({}); final repository = SessionRepository(); await tester.pumpWidget( MultiProvider( providers: [ Provider( create: (_) => ScoreCalculatorService(), ), Provider( create: (_) => GroupingAnalyzerService(), ), Provider.value(value: repository), ChangeNotifierProvider(create: (_) => ThemeProvider()), ChangeNotifierProvider( create: (_) => SessionProvider()), ChangeNotifierProvider( create: (_) => TutorialProvider(service: TutorialService())), ], child: const BullyApp(), ), ); await tester.pump(); await tester.pump(const Duration(milliseconds: 500)); await tester.pump(const Duration(seconds: 1)); expect(find.text('BULLY'), findsOneWidget); expect(find.text('Bienvenue dans Bully'), findsOneWidget); // Passer à l'étape suivante await tester.tap(find.text('Suivant')); await tester.pump(); await tester.pump(const Duration(milliseconds: 500)); expect(find.text('Démarrez une session'), findsOneWidget); // Passer await tester.tap(find.text('Passer')); await tester.pump(); await tester.pump(const Duration(milliseconds: 500)); expect(find.text('Démarrez une session'), findsNothing); }); }