@@ -155,7 +155,29 @@ void main() {
155155 expect (scrollController.offset, equals (expectedOffset));
156156 }
157157
158- testWidgets ('is zero for no selected frame' , (WidgetTester tester) async {
158+ void verifyScrollAtLiveEdge (WidgetTester tester) {
159+ final scrollbar = tester.widget <Scrollbar >(find.byType (Scrollbar ));
160+ final scrollController = scrollbar.controller! ;
161+ expect (
162+ scrollController.offset,
163+ equals (scrollController.position.maxScrollExtent),
164+ );
165+ }
166+
167+ FlutterFrame createFrame (int number) {
168+ return FlutterFrame .fromJson ({
169+ 'number' : number,
170+ 'startTime' : 10000 + number * 50000 ,
171+ 'elapsed' : 20000 ,
172+ 'build' : 10000 ,
173+ 'raster' : 12000 ,
174+ 'vsyncOverhead' : 10 ,
175+ });
176+ }
177+
178+ testWidgets ('is at live edge for no selected frame' , (
179+ WidgetTester tester,
180+ ) async {
159181 expect (framesController.selectedFrame.value, isNull);
160182
161183 await pumpChart (tester);
@@ -165,7 +187,39 @@ void main() {
165187 findsNWidgets (totalFramesInView),
166188 );
167189
168- verifyScrollOffset (tester, 0.0 );
190+ verifyScrollAtLiveEdge (tester);
191+ });
192+
193+ testWidgets ('stays at live edge when frames are added' , (
194+ WidgetTester tester,
195+ ) async {
196+ expect (framesController.selectedFrame.value, isNull);
197+
198+ await pumpChart (tester);
199+ verifyScrollAtLiveEdge (tester);
200+
201+ framesController.addFrame (createFrame (totalNumFrames));
202+ await tester.pumpAndSettle ();
203+ verifyScrollAtLiveEdge (tester);
204+ });
205+
206+ testWidgets ('docks to live edge after remount with no selection' , (
207+ WidgetTester tester,
208+ ) async {
209+ expect (framesController.selectedFrame.value, isNull);
210+
211+ await pumpChart (tester);
212+ verifyScrollAtLiveEdge (tester);
213+
214+ // Leave Performance (dispose chart), then remount after new frames.
215+ await tester.pumpWidget (wrap (const SizedBox .shrink ()));
216+ await tester.pumpAndSettle ();
217+
218+ framesController.addFrame (createFrame (totalNumFrames));
219+ framesController.addFrame (createFrame (totalNumFrames + 1 ));
220+
221+ await pumpChart (tester);
222+ verifyScrollAtLiveEdge (tester);
169223 });
170224
171225 testWidgets ('is offset for selected frame' , (WidgetTester tester) async {
0 commit comments