diff --git a/testing/scenario_app/android/app/src/androidTest/java/dev/flutter/TestRunner.java b/testing/scenario_app/android/app/src/androidTest/java/dev/flutter/TestRunner.java index ac9b70cce61a5..89494f200cc1d 100644 --- a/testing/scenario_app/android/app/src/androidTest/java/dev/flutter/TestRunner.java +++ b/testing/scenario_app/android/app/src/androidTest/java/dev/flutter/TestRunner.java @@ -16,7 +16,11 @@ public void onCreate(@Nullable Bundle arguments) { String[] engineArguments = null; if ("true".equals(arguments.getString("enable-impeller"))) { // Set up the global settings object so that Impeller is enabled for all tests. - engineArguments = new String[] {"--enable-impeller=true"}; + engineArguments = + new String[] { + "--enable-impeller=true", + "--impeller-backend=" + arguments.getString("impeller-backend", "vulkan") + }; } // For consistency, just always initilaize FlutterJNI etc. FlutterInjector.instance().flutterLoader().startInitialization(getTargetContext()); diff --git a/testing/scenario_app/bin/run_android_tests.dart b/testing/scenario_app/bin/run_android_tests.dart index fc4fd6cf49453..88cc46236125c 100644 --- a/testing/scenario_app/bin/run_android_tests.dart +++ b/testing/scenario_app/bin/run_android_tests.dart @@ -199,7 +199,7 @@ Future _run({ late Process logcatProcess; late Future logcatProcessExitCode; - bool seenImpeller = false; + _ImpellerBackend? actualImpellerBackend; final IOSink logcat = File(logcatPath).openWrite(); try { @@ -222,8 +222,16 @@ Future _run({ logcatOutput.listen((String line) { // Always write to the full log. logcat.writeln(line); - if (enableImpeller && !seenImpeller) { - seenImpeller = line.contains('Using the Impeller rendering backend'); + if (enableImpeller && actualImpellerBackend == null && line.contains('Using the Impeller rendering backend')) { + if (line.contains('OpenGLES')) { + actualImpellerBackend = _ImpellerBackend.opengles; + } else if (line.contains('Vulkan')) { + actualImpellerBackend = _ImpellerBackend.vulkan; + } else { + panic([ + 'Impeller was enabled, but $line did not contain "OpenGLES" or "Vulkan".', + ]); + } } // Conditionally parse and write to stderr. @@ -375,9 +383,10 @@ Future _run({ if (enableImpeller) { await step('Validating Impeller...', () async { - if (!seenImpeller) { + final _ImpellerBackend expectedImpellerBackend = impellerBackend ?? _ImpellerBackend.vulkan; + if (actualImpellerBackend != expectedImpellerBackend) { panic([ - '--enable-impeller was specified, but Impeller was not used.', + '--enable-impeller was specified and expected to find "${expectedImpellerBackend.name}", which did not match "${actualImpellerBackend?.name ?? ''}".', ]); } });