@@ -28,20 +28,24 @@ class Timeline {
28
28
this ._description, {
29
29
Directory ? directory,
30
30
required String fileName,
31
- GoldenSceneItemScaffold itemScaffold = minimalItemScaffold,
31
+ Size ? windowSize,
32
+ GoldenSceneItemScaffold itemScaffold = standardTimelineItemScaffold,
32
33
required SceneLayout layout,
33
34
GoldenSceneBackground ? goldenBackground,
34
35
}) : _directory = directory,
35
36
_fileName = fileName,
37
+ _windowSize = windowSize,
38
+ _itemScaffold = itemScaffold,
36
39
_layout = layout,
37
- _goldenBackground = goldenBackground,
38
- _itemScaffold = itemScaffold;
40
+ _goldenBackground = goldenBackground;
39
41
40
42
final String _description;
41
43
42
44
late final Directory ? _directory;
43
45
final String _fileName;
44
46
47
+ final Size ? _windowSize;
48
+
45
49
final GoldenSceneItemScaffold _itemScaffold;
46
50
47
51
final GoldenSceneBackground ? _goldenBackground;
@@ -59,7 +63,11 @@ class Timeline {
59
63
throw Exception ("Timeline was already set up, but tried to call setup() again." );
60
64
}
61
65
62
- _setup = _TimelineSetup (delegate);
66
+ _setup = _TimelineSetup ((tester) async {
67
+ _configureWindowSize (tester);
68
+
69
+ await delegate (tester);
70
+ });
63
71
64
72
return this ;
65
73
}
@@ -73,6 +81,8 @@ class Timeline {
73
81
}
74
82
75
83
_setup = _TimelineSetup ((tester) async {
84
+ _configureWindowSize (tester);
85
+
76
86
final widgetTree = _itemScaffold (tester, sceneBuilder ());
77
87
await tester.pumpWidget (widgetTree);
78
88
});
@@ -89,13 +99,23 @@ class Timeline {
89
99
}
90
100
91
101
_setup = _TimelineSetup ((tester) async {
102
+ _configureWindowSize (tester);
103
+
92
104
final widgetTree = _itemScaffold (tester, widget);
93
105
await tester.pumpWidget (widgetTree);
94
106
});
95
107
96
108
return this ;
97
109
}
98
110
111
+ void _configureWindowSize (WidgetTester tester) {
112
+ if (_windowSize != null ) {
113
+ final previousWindowSize = tester.view.physicalSize;
114
+ tester.view.physicalSize = _windowSize;
115
+ addTearDown (() => tester.view.physicalSize = previousWindowSize);
116
+ }
117
+ }
118
+
99
119
/// Take a golden photo screenshot of the current Flutter UI.
100
120
///
101
121
/// {@template golden_image_bounds_default_finder}
@@ -566,7 +586,9 @@ class TimelineTestContext {
566
586
final scratchPad = < String , dynamic > {};
567
587
}
568
588
569
- Widget minimalItemScaffold (WidgetTester tester, Widget content) {
589
+ /// The standard [GoldenSceneItemScaffold] that wraps the content of a [Timeline] , which
590
+ /// includes a dark theme, a dark background color, and some padding around the content.
591
+ Widget standardTimelineItemScaffold (WidgetTester tester, Widget content) {
570
592
return MaterialApp (
571
593
theme: ThemeData (
572
594
brightness: Brightness .dark,
@@ -586,3 +608,18 @@ Widget minimalItemScaffold(WidgetTester tester, Widget content) {
586
608
debugShowCheckedModeBanner: false ,
587
609
);
588
610
}
611
+
612
+ /// An absolute minimal [GoldenSceneItemScaffold] that wraps the content within a [Timeline] .
613
+ Widget minimalTimelineItemScaffold (WidgetTester tester, Widget content) {
614
+ return MaterialApp (
615
+ theme: ThemeData (
616
+ fontFamily: goldenBricks,
617
+ ),
618
+ home: Center (
619
+ child: GoldenImageBounds (
620
+ child: content,
621
+ ),
622
+ ),
623
+ debugShowCheckedModeBanner: false ,
624
+ );
625
+ }
0 commit comments