import 'package:flutter_test/flutter_test.dart'; import 'package:timezone/data/latest.dart' as tzdata; import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; import 'package:hepan_everyday/app/hepan_app.dart'; import 'package:hepan_everyday/features/school/school_session.dart'; import '../support/fake_school_web.dart'; import 'navigation_test.dart' show uiController; void main() { setUpAll(tzdata.initializeTimeZones); testWidgets( 'logout failure is visible and user can retry clearing school login', (tester) async { final platform = FakeSchoolPlatform(); WebViewPlatform.instance = platform; final school = SchoolSession(); await school.open(); final c = uiController(); await c.initialize(); await tester.pumpWidget(HepanApp(controller: c, school: school)); await tester.pumpAndSettle(); await tester.tap(find.bySemanticsLabel('个人设置')); await tester.pumpAndSettle(); platform.cookies.fail = true; await tester.tap(find.text('退出学校登录')); await tester.pumpAndSettle(); await tester.tap(find.text('保留课表和考试')); await tester.pumpAndSettle(); expect(find.textContaining('学校退出未完成'), findsOneWidget); expect(find.text('重试退出学校登录'), findsOneWidget); platform.cookies.fail = false; await tester.tap(find.text('重试退出学校登录')); await tester.pumpAndSettle(); await tester.tap(find.text('保留课表和考试')); await tester.pumpAndSettle(); expect(find.text('重试退出学校登录'), findsNothing); expect(find.textContaining('学校退出未完成'), findsNothing); school.dispose(); c.dispose(); }, ); }