import 'package:askiineverdie/src/app.dart'; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { // SharedPreferences 모킹 setUpAll(() { TestWidgetsFlutterBinding.ensureInitialized(); const MethodChannel('plugins.flutter.io/shared_preferences') .setMockMethodCallHandler((call) async { if (call.method == 'getAll') return {}; return null; }); }); testWidgets('Front screen renders and navigates to new character', ( tester, ) async { await tester.pumpWidget(const AskiiNeverDieApp()); // 세이브 파일 확인이 완료될 때까지 대기 (스플래시 → 프론트) // runAsync로 비동기 파일 작업 완료 대기 await tester.runAsync( () => Future.delayed(const Duration(milliseconds: 100)), ); await tester.pump(); // 상태 업데이트 반영 // 프런트 화면이 렌더링되었는지 확인 expect(find.text('ASCII NEVER DIE'), findsOneWidget); expect(find.text('New character'), findsOneWidget); // "New character" 버튼 탭 await tester.tap(find.text('New character')); await tester.pumpAndSettle(); // NewCharacterScreen으로 이동했는지 확인 (l10n 적용됨) expect(find.text('ASCII NEVER DIE - New Character'), findsOneWidget); expect(find.text('Race'), findsOneWidget); expect(find.text('Class'), findsOneWidget); expect(find.text('Sold!'), findsOneWidget); }); }