Skip to content

Commit 0383010

Browse files
committed
Stabilize integration flakes across debugger, network, console, and wasm teardown
1 parent 1387d08 commit 0383010

4 files changed

Lines changed: 52 additions & 18 deletions

File tree

packages/devtools_app/integration_test/test/live_connection/debugger_panel_test.dart

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,17 @@ void main() {
6969
logStatus('looking for line 55');
7070

7171
// Look for the line 55 gutter item:
72-
final gutter55Finder = findGutterItemWithText('55');
72+
final gutter55Finder = await retryUntilFound(
73+
findGutterItemWithText('55'),
74+
tester: tester,
75+
);
7376
expect(gutter55Finder, findsOneWidget);
7477

7578
// Look for the line 55 line item:
76-
final line55Finder = findLineItemWithText("print('Hello!');");
79+
final line55Finder = await retryUntilFound(
80+
findLineItemWithText("print('Hello!');"),
81+
tester: tester,
82+
);
7783
expect(line55Finder, findsOneWidget);
7884

7985
await tester.pumpAndSettle(safePumpDuration);
@@ -102,11 +108,17 @@ void main() {
102108
logStatus('looking for line 28');
103109

104110
// Look for the line 30 gutter item:
105-
final gutter28Finder = findGutterItemWithText('28');
111+
final gutter28Finder = await retryUntilFound(
112+
findGutterItemWithText('28'),
113+
tester: tester,
114+
);
106115
expect(gutter28Finder, findsOneWidget);
107116

108117
// Look for the line 28 line item:
109-
final line28Finder = findLineItemWithText('count++;');
118+
final line28Finder = await retryUntilFound(
119+
findLineItemWithText('count++;'),
120+
tester: tester,
121+
);
110122
expect(line28Finder, findsOneWidget);
111123

112124
// Verify that the gutter item and line item are aligned:
@@ -162,11 +174,17 @@ void main() {
162174
logStatus('looking for the focused line');
163175

164176
// Look for the line 46 gutter item:
165-
final gutter46Finder = findGutterItemWithText('46');
177+
final gutter46Finder = await retryUntilFound(
178+
findGutterItemWithText('46'),
179+
tester: tester,
180+
);
166181
expect(gutter46Finder, findsOneWidget);
167182

168183
// Look for the line 46 line item:
169-
final line46Finder = findLineItemWithText('_action();');
184+
final line46Finder = await retryUntilFound(
185+
findLineItemWithText('_action();'),
186+
tester: tester,
187+
);
170188
expect(line46Finder, findsOneWidget);
171189

172190
// Verify that the gutter item and line item are aligned:

packages/devtools_app/integration_test/test/live_connection/network_screen_test.dart

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,19 @@ final class _NetworkScreenHelper {
100100
final WidgetTester _tester;
101101

102102
Future<void> clear() async {
103+
final controller = screenControllers.lookup<NetworkController>();
104+
105+
// Pause polling to avoid immediately repopulating rows after clear.
106+
await controller.togglePolling(false);
107+
103108
// Press the 'Clear' button between tests.
104109
await _tester.tap(find.text('Clear'));
110+
await _tester.pumpAndSettle(safePumpDuration);
111+
112+
await controller.togglePolling(true);
105113
await _tester.pump(safePumpDuration);
106-
expect(
107-
screenControllers.lookup<NetworkController>().requests.value,
108-
isEmpty,
109-
);
114+
115+
expect(controller.requests.value, isEmpty);
110116
}
111117

112118
Future<void> triggerExit() async {

packages/devtools_app/lib/src/shared/console/console.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ class _ConsoleOutputState extends State<_ConsoleOutput>
166166
padding: const EdgeInsets.symmetric(horizontal: denseSpacing),
167167
child: SelectionArea(
168168
child: Column(
169-
mainAxisSize: MainAxisSize.min,
169+
mainAxisSize: MainAxisSize.max,
170170
children: [
171171
Expanded(
172172
child: ListView.separated(

packages/devtools_app_shared/lib/src/service/eval_on_dart_library.dart

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -609,13 +609,23 @@ class EvalOnDartLibrary extends DisposableController
609609
int? count,
610610
}) {
611611
return addRequest<T>(isAlive, () async {
612-
final T value = await service.getObject(
613-
_isolateRef!.id!,
614-
instance.id!,
615-
offset: offset,
616-
count: count,
617-
) as T;
618-
return value;
612+
try {
613+
final T value = await service.getObject(
614+
_isolateRef!.id!,
615+
instance.id!,
616+
offset: offset,
617+
count: count,
618+
) as T;
619+
return value;
620+
} on RPCError catch (e, st) {
621+
// During teardown (especially on web/wasm), object references can be
622+
// invalidated before queued getObject requests complete.
623+
if (e.code == RPCErrorKind.kInvalidParams.code) {
624+
_log.info('Ignoring stale getObject for ${instance.id}: $e', e, st);
625+
return null;
626+
}
627+
rethrow;
628+
}
619629
});
620630
}
621631
}

0 commit comments

Comments
 (0)