diff --git a/engine/src/flutter/shell/testing/observatory/launcher.dart b/engine/src/flutter/shell/testing/observatory/launcher.dart index 5f8b61983e6..e724c0a626a 100644 --- a/engine/src/flutter/shell/testing/observatory/launcher.dart +++ b/engine/src/flutter/shell/testing/observatory/launcher.dart @@ -18,10 +18,8 @@ class ShellProcess { .transform(utf8.decoder) .transform(const LineSplitter()) .listen((String line) { - const String observatoryUriPrefix = 'Observatory listening on '; - if (line.startsWith(observatoryUriPrefix)) { - print(line); - final Uri uri = Uri.parse(line.substring(observatoryUriPrefix.length)); + final uri = _extractVMServiceUri(line); + if (uri != null) { _observatoryUriCompleter.complete(uri); } }); @@ -34,6 +32,17 @@ class ShellProcess { Future waitForObservatory() async { return _observatoryUriCompleter.future; } + + Uri? _extractVMServiceUri(String str) { + final listeningMessageRegExp = RegExp( + r'(?:Observatory|Dart VM Service) listening on ((http|//)[a-zA-Z0-9:/=_\-\.\[\]]+)', + ); + final match = listeningMessageRegExp.firstMatch(str); + if (match != null) { + return Uri.parse(match[1]!); + } + return null; + } } class ShellLauncher { diff --git a/engine/src/flutter/testing/android_systrace_test.py b/engine/src/flutter/testing/android_systrace_test.py index 040de9ede28..cb730b11d06 100755 --- a/engine/src/flutter/testing/android_systrace_test.py +++ b/engine/src/flutter/testing/android_systrace_test.py @@ -61,7 +61,7 @@ def LaunchPackage(package_name, activity_name, adb_path='adb'): '%s/%s' % (package_name, activity_name)], stderr=subprocess.STDOUT) for line in logcat.stdout: print('>>>>>>>> ' + line.strip()) - if 'Observatory listening' in line: + if ('Observatory listening' in line) or ('Dart VM Service listening' in line): logcat.kill() break