@@ -4,36 +4,93 @@ import 'package:flutter_test/flutter_test.dart';
44import 'demo_page_test_utils.dart' ;
55import 'popup_demo_test_spec.dart' ;
66
7+ class _OpenedPopupGoldenCase {
8+ const _OpenedPopupGoldenCase ({
9+ required this .name,
10+ required this .triggerKey,
11+ this .visibleText,
12+ this .visibleTextCount = 1 ,
13+ this .tooltip,
14+ });
15+
16+ final String name;
17+ final String triggerKey;
18+ final String ? visibleText;
19+ final int visibleTextCount;
20+ final String ? tooltip;
21+ }
22+
723void main () {
824 registerDemoGoldenTests (popupDemoPageTestSpec);
925
10- const basicPopupCases = {
11- 'top' : ('popup-top-trigger' , '顶部弹出' ),
12- 'left' : ('popup-left-trigger' , '左侧弹出' ),
13- 'center' : ('popup-center-trigger' , '中间弹出' ),
14- 'bottom' : ('popup-bottom-trigger' , '底部弹出' ),
15- 'right' : ('popup-right-trigger' , '右侧弹出' ),
16- };
26+ const openedPopupCases = [
27+ _OpenedPopupGoldenCase (
28+ name: 'basic_top' ,
29+ triggerKey: 'popup-top-trigger' ,
30+ visibleText: '顶部弹出' ,
31+ visibleTextCount: 2 ,
32+ ),
33+ _OpenedPopupGoldenCase (
34+ name: 'basic_left' ,
35+ triggerKey: 'popup-left-trigger' ,
36+ visibleText: '左侧弹出' ,
37+ visibleTextCount: 2 ,
38+ ),
39+ _OpenedPopupGoldenCase (
40+ name: 'basic_center' ,
41+ triggerKey: 'popup-center-trigger' ,
42+ visibleText: '中间弹出' ,
43+ visibleTextCount: 2 ,
44+ ),
45+ _OpenedPopupGoldenCase (
46+ name: 'basic_bottom' ,
47+ triggerKey: 'popup-bottom-trigger' ,
48+ visibleText: '底部弹出' ,
49+ visibleTextCount: 2 ,
50+ ),
51+ _OpenedPopupGoldenCase (
52+ name: 'basic_right' ,
53+ triggerKey: 'popup-right-trigger' ,
54+ visibleText: '右侧弹出' ,
55+ visibleTextCount: 2 ,
56+ ),
57+ _OpenedPopupGoldenCase (
58+ name: 'application_with_title' ,
59+ triggerKey: 'popup-with-title-trigger' ,
60+ visibleText: '标题文字' ,
61+ ),
62+ _OpenedPopupGoldenCase (
63+ name: 'application_custom_close' ,
64+ triggerKey: 'popup-custom-close-trigger' ,
65+ tooltip: '关闭' ,
66+ ),
67+ ];
1768
1869 for (final mode in [ThemeMode .light, ThemeMode .dark]) {
19- for (final entry in basicPopupCases.entries) {
20- final placement = entry.key;
21- final popupCase = entry.value;
22- testWidgets ('popup basic $placement ${mode .name } opened golden' , (
70+ for (final popupCase in openedPopupCases) {
71+ testWidgets ('popup ${popupCase .name } ${mode .name } opened golden' , (
2372 tester,
2473 ) async {
2574 await pumpDemoPageAtPhoneViewport (tester, popupDemoPageTestSpec, mode);
2675
27- final trigger = find.byKey (ValueKey (popupCase.$1 ));
76+ final trigger = find.byKey (ValueKey (popupCase.triggerKey ));
2877 expect (trigger, findsOneWidget);
2978 await tester.tap (trigger);
3079 await tester.pumpAndSettle ();
3180
32- expect (find.text (popupCase.$2), findsAtLeastNWidgets (2 ));
81+ if (popupCase.visibleText case final visibleText? ) {
82+ expect (
83+ find.text (visibleText),
84+ findsNWidgets (popupCase.visibleTextCount),
85+ );
86+ }
87+ if (popupCase.tooltip case final tooltip? ) {
88+ expect (find.byTooltip (tooltip), findsOneWidget);
89+ }
3390 await expectLater (
3491 find.byType (Overlay ),
3592 matchesGoldenFile (
36- 'goldens/popup_basic_${ placement }_opened_${mode .name }.png' ,
93+ 'goldens/popup_${ popupCase . name }_opened_${mode .name }.png' ,
3794 ),
3895 );
3996 await disposeDemoPage (tester);
0 commit comments