diff --git a/packages/flutter_tools/test/integration.shard/test_driver.dart b/packages/flutter_tools/test/integration.shard/test_driver.dart index e2845ebad04..eabae358bc0 100644 --- a/packages/flutter_tools/test/integration.shard/test_driver.dart +++ b/packages/flutter_tools/test/integration.shard/test_driver.dart @@ -127,8 +127,12 @@ abstract class FlutterTestDriver { _vmService = await vmServiceConnectUri('$_vmServiceWsUri'); _vmService.onSend.listen((String s) => _debugPrint(s, topic: '=vm=>')); _vmService.onReceive.listen((String s) => _debugPrint(s, topic: '<=vm=')); + + final Completer isolateStarted = Completer(); _vmService.onIsolateEvent.listen((Event event) { - if (event.kind == EventKind.kIsolateExit && event.isolate.id == _flutterIsolateId) { + if (event.kind == EventKind.kIsolateStart) { + isolateStarted.complete(); + } else if (event.kind == EventKind.kIsolateExit && event.isolate.id == _flutterIsolateId) { // Hot restarts cause all the isolates to exit, so we need to refresh // our idea of what the Flutter isolate ID is. _flutterIsolateId = null; @@ -140,6 +144,10 @@ abstract class FlutterTestDriver { _vmService.streamListen('Debug'), ]); + if ((await _vmService.getVM()).isolates.isEmpty) { + await isolateStarted.future; + } + await waitForPause(); if (pauseOnExceptions) { await _vmService.setExceptionPauseMode(