From 784fbcc550977734ed923b3bcaad37fac20b29d5 Mon Sep 17 00:00:00 2001 From: Matan Lurey Date: Thu, 8 Feb 2024 13:14:55 -0800 Subject: [PATCH 01/11] Add a flag for the runner, check-in gradle-wrapper.properties. --- .../gradle/wrapper/gradle-wrapper.properties | 6 ++++ .../bin/android_integration_tests.dart | 31 +++++++++++++++++++ testing/scenario_app/bin/utils/logs.dart | 2 +- 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 testing/scenario_app/android/gradle/wrapper/gradle-wrapper.properties diff --git a/testing/scenario_app/android/gradle/wrapper/gradle-wrapper.properties b/testing/scenario_app/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000000..42defcc94b345 --- /dev/null +++ b/testing/scenario_app/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip +networkTimeout=10000 +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/testing/scenario_app/bin/android_integration_tests.dart b/testing/scenario_app/bin/android_integration_tests.dart index 07b31d0a4a97d..69439063aa6d9 100644 --- a/testing/scenario_app/bin/android_integration_tests.dart +++ b/testing/scenario_app/bin/android_integration_tests.dart @@ -38,6 +38,12 @@ void main(List args) async { 'use-skia-gold', help: 'Use Skia Gold to compare screenshots.', defaultsTo: isLuciEnv, + ) + ..addOption( + 'android-graphics-backend', + help: 'The graphics backend to use for the Android app.', + allowed: ['skia', 'impeller-opengles', 'impeller-vulkan'], + defaultsTo: 'skia', ); runZonedGuarded( @@ -50,11 +56,16 @@ void main(List args) async { if (results.wasParsed('smoke-test') && smokeTest!.isEmpty) { smokeTest = 'dev.flutter.scenarios.EngineLaunchE2ETest'; } + final _AndroidGraphicsBackend? androidGraphicsBackend = _AndroidGraphicsBackend.tryParse(results['android-graphics-backend'] as String?); + if (androidGraphicsBackend == null) { + panic(['invalid android-graphics-backend', results['android-graphics-backend'] as String? ?? '']); + } await _run( outDir: outDir, adb: adb, smokeTestFullPath: smokeTest, useSkiaGold: useSkiaGold, + androidGraphicsBackend: androidGraphicsBackend, ); exit(0); }, @@ -68,11 +79,31 @@ void main(List args) async { ); } +enum _AndroidGraphicsBackend { + skia, + impellerOpengl, + impellerVulkan; + + static _AndroidGraphicsBackend? tryParse(String? value) { + switch (value) { + case 'skia': + return _AndroidGraphicsBackend.skia; + case 'impeller-opengles': + return _AndroidGraphicsBackend.impellerOpengl; + case 'impeller-vulkan': + return _AndroidGraphicsBackend.impellerVulkan; + default: + return null; + } + } +} + Future _run({ required Directory outDir, required File adb, required String? smokeTestFullPath, required bool useSkiaGold, + required _AndroidGraphicsBackend androidGraphicsBackend, }) async { const ProcessManager pm = LocalProcessManager(); diff --git a/testing/scenario_app/bin/utils/logs.dart b/testing/scenario_app/bin/utils/logs.dart index 3132164300dde..af5f68c75fc8e 100644 --- a/testing/scenario_app/bin/utils/logs.dart +++ b/testing/scenario_app/bin/utils/logs.dart @@ -25,7 +25,7 @@ void log(String msg) { final class Panic extends Error {} -void panic(List messages) { +Never panic(List messages) { for (final String message in messages) { stderr.writeln('$_red$message$_reset'); } From 7a34c485f2f57f0fed3386176efe5210b54ba774 Mon Sep 17 00:00:00 2001 From: Matan Lurey Date: Thu, 8 Feb 2024 13:19:49 -0800 Subject: [PATCH 02/11] Remove OpenGLES for now since it does not have a flag. --- .../main/java/dev/flutter/scenarios/TestActivity.java | 10 +++++++--- .../scenario_app/bin/android_integration_tests.dart | 7 +++---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/testing/scenario_app/android/app/src/main/java/dev/flutter/scenarios/TestActivity.java b/testing/scenario_app/android/app/src/main/java/dev/flutter/scenarios/TestActivity.java index 79d3615f78856..b59b1552a7922 100644 --- a/testing/scenario_app/android/app/src/main/java/dev/flutter/scenarios/TestActivity.java +++ b/testing/scenario_app/android/app/src/main/java/dev/flutter/scenarios/TestActivity.java @@ -32,12 +32,13 @@ import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Map; +import java.util.Objects; import java.util.concurrent.atomic.AtomicBoolean; public abstract class TestActivity extends TestableFlutterActivity { static final String TAG = "Scenarios"; - private Runnable resultsTask = + private final Runnable resultsTask = new Runnable() { @Override public void run() { @@ -47,7 +48,7 @@ public void run() { } }; - private Handler handler = new Handler(); + private final Handler handler = new Handler(); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -85,7 +86,7 @@ public FlutterShellArgs getFlutterShellArgs() { public void onFlutterUiDisplayed() { final Intent launchIntent = getIntent(); MethodChannel channel = - new MethodChannel(getFlutterEngine().getDartExecutor(), "driver", JSONMethodCodec.INSTANCE); + new MethodChannel(Objects.requireNonNull(getFlutterEngine()).getDartExecutor(), "driver", JSONMethodCodec.INSTANCE); Map test = new HashMap<>(2); if (launchIntent.hasExtra("scenario_name")) { test.put("name", launchIntent.getStringExtra("scenario_name")); @@ -125,8 +126,10 @@ protected void writeTimelineData(@Nullable Uri logFile) { AssetFileDescriptor afd = null; try { afd = getContentResolver().openAssetFileDescriptor(logFile, "w"); + assert afd != null; final FileDescriptor fd = afd.getFileDescriptor(); final FileOutputStream outputStream = new FileOutputStream(fd); + assert reply != null; outputStream.write(reply.array()); outputStream.close(); } catch (IOException ex) { @@ -190,6 +193,7 @@ public void run() { private static void hideSystemBars(Window window) { final WindowInsetsControllerCompat insetController = WindowCompat.getInsetsController(window, window.getDecorView()); + assert insetController != null; insetController.setSystemBarsBehavior( WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE); insetController.hide(WindowInsetsCompat.Type.systemBars()); diff --git a/testing/scenario_app/bin/android_integration_tests.dart b/testing/scenario_app/bin/android_integration_tests.dart index 69439063aa6d9..8f5ea003064e0 100644 --- a/testing/scenario_app/bin/android_integration_tests.dart +++ b/testing/scenario_app/bin/android_integration_tests.dart @@ -42,7 +42,7 @@ void main(List args) async { ..addOption( 'android-graphics-backend', help: 'The graphics backend to use for the Android app.', - allowed: ['skia', 'impeller-opengles', 'impeller-vulkan'], + allowed: ['skia', 'impeller-vulkan'], defaultsTo: 'skia', ); @@ -81,15 +81,12 @@ void main(List args) async { enum _AndroidGraphicsBackend { skia, - impellerOpengl, impellerVulkan; static _AndroidGraphicsBackend? tryParse(String? value) { switch (value) { case 'skia': return _AndroidGraphicsBackend.skia; - case 'impeller-opengles': - return _AndroidGraphicsBackend.impellerOpengl; case 'impeller-vulkan': return _AndroidGraphicsBackend.impellerVulkan; default: @@ -260,6 +257,8 @@ Future _run({ 'am', 'instrument', '-w', + if (androidGraphicsBackend != _AndroidGraphicsBackend.skia) + '-e enable-impeller', if (smokeTestFullPath != null) '-e class $smokeTestFullPath', 'dev.flutter.scenarios.test/dev.flutter.TestRunner', From b65077ae2ec430023d75c43b1bc4e5e838ff13c8 Mon Sep 17 00:00:00 2001 From: Matan Lurey Date: Thu, 8 Feb 2024 18:57:37 -0800 Subject: [PATCH 03/11] Try adding an Impeller backend. --- ci/builders/linux_android_emulator.json | 27 ++++++++++++-- .../bin/android_integration_tests.dart | 36 +++++++++---------- .../tool/run_android_tests_smoke.sh | 2 +- 3 files changed, 42 insertions(+), 23 deletions(-) diff --git a/ci/builders/linux_android_emulator.json b/ci/builders/linux_android_emulator.json index 643eb4da6c744..6f47800318ac4 100644 --- a/ci/builders/linux_android_emulator.json +++ b/ci/builders/linux_android_emulator.json @@ -58,7 +58,7 @@ }, { "language": "bash", - "name": "Scenario App Integration Tests", + "name": "Android Scenario App Integration Tests (Skia)", "test_dependencies": [ { "dependency": "android_virtual_device", @@ -72,9 +72,30 @@ "contexts": [ "android_virtual_device" ], - "script": "flutter/testing/scenario_app/run_android_tests.sh", + "script": "flutter/testing/scenario_app/run_android_tests.sh --graphics-backend=skia", "parameters": [ - "android_debug_x64" + "android_debug_x64" + ] + }, + { + "language": "bash", + "name": "Android Scenario App Integration Tests (Impeller)", + "test_dependencies": [ + { + "dependency": "android_virtual_device", + "version": "android_34_google_apis_x64.textpb" + }, + { + "dependency": "avd_cipd_version", + "version": "build_id:8759428741582061553" + } + ], + "contexts": [ + "android_virtual_device" + ], + "script": "flutter/testing/scenario_app/run_android_tests.sh --graphics-backend=impeller", + "parameters": [ + "android_debug_x64" ] } ] diff --git a/testing/scenario_app/bin/android_integration_tests.dart b/testing/scenario_app/bin/android_integration_tests.dart index 8f5ea003064e0..bcb36ff00cfec 100644 --- a/testing/scenario_app/bin/android_integration_tests.dart +++ b/testing/scenario_app/bin/android_integration_tests.dart @@ -32,7 +32,6 @@ void main(List args) async { ..addOption( 'smoke-test', help: 'runs a single test to verify the setup', - valueHelp: 'The class to execute, defaults to dev.flutter.scenarios.EngineLaunchE2ETest', ) ..addFlag( 'use-skia-gold', @@ -40,7 +39,7 @@ void main(List args) async { defaultsTo: isLuciEnv, ) ..addOption( - 'android-graphics-backend', + 'graphics-backend', help: 'The graphics backend to use for the Android app.', allowed: ['skia', 'impeller-vulkan'], defaultsTo: 'skia', @@ -52,20 +51,17 @@ void main(List args) async { final Directory outDir = Directory(results['out-dir'] as String); final File adb = File(results['adb'] as String); final bool useSkiaGold = results['use-skia-gold'] as bool; - String? smokeTest = results['smoke-test'] as String?; - if (results.wasParsed('smoke-test') && smokeTest!.isEmpty) { - smokeTest = 'dev.flutter.scenarios.EngineLaunchE2ETest'; - } - final _AndroidGraphicsBackend? androidGraphicsBackend = _AndroidGraphicsBackend.tryParse(results['android-graphics-backend'] as String?); - if (androidGraphicsBackend == null) { - panic(['invalid android-graphics-backend', results['android-graphics-backend'] as String? ?? '']); + final String? smokeTest = results['smoke-test'] as String?; + final _GraphicsBackend? graphicsBackend = _GraphicsBackend.tryParse(results['graphics-backend'] as String?); + if (graphicsBackend == null) { + panic(['invalid graphics-backend', results['graphics-backend'] as String? ?? '']); } await _run( outDir: outDir, adb: adb, smokeTestFullPath: smokeTest, useSkiaGold: useSkiaGold, - androidGraphicsBackend: androidGraphicsBackend, + graphicsBackend: graphicsBackend, ); exit(0); }, @@ -79,16 +75,17 @@ void main(List args) async { ); } -enum _AndroidGraphicsBackend { +enum _GraphicsBackend { skia, - impellerVulkan; + // TODO(matanlurey): Create impeller-opengles variant. + impeller; - static _AndroidGraphicsBackend? tryParse(String? value) { + static _GraphicsBackend? tryParse(String? value) { switch (value) { case 'skia': - return _AndroidGraphicsBackend.skia; - case 'impeller-vulkan': - return _AndroidGraphicsBackend.impellerVulkan; + return _GraphicsBackend.skia; + case 'impeller': + return _GraphicsBackend.impeller; default: return null; } @@ -100,7 +97,7 @@ Future _run({ required File adb, required String? smokeTestFullPath, required bool useSkiaGold, - required _AndroidGraphicsBackend androidGraphicsBackend, + required _GraphicsBackend graphicsBackend, }) async { const ProcessManager pm = LocalProcessManager(); @@ -212,6 +209,7 @@ Future _run({ outDir, dimensions: { 'AndroidAPILevel': connectedDeviceAPILevel, + 'GraphicsBackend': graphicsBackend.name, }, ); }); @@ -257,11 +255,11 @@ Future _run({ 'am', 'instrument', '-w', - if (androidGraphicsBackend != _AndroidGraphicsBackend.skia) - '-e enable-impeller', if (smokeTestFullPath != null) '-e class $smokeTestFullPath', 'dev.flutter.scenarios.test/dev.flutter.TestRunner', + if (graphicsBackend != _GraphicsBackend.skia) + '-e enable-impeller', ]); if (exitCode != 0) { panic(['instrumented tests failed to run']); diff --git a/testing/scenario_app/tool/run_android_tests_smoke.sh b/testing/scenario_app/tool/run_android_tests_smoke.sh index f04da36fc6594..4a3f2d03657b6 100755 --- a/testing/scenario_app/tool/run_android_tests_smoke.sh +++ b/testing/scenario_app/tool/run_android_tests_smoke.sh @@ -12,7 +12,7 @@ ../third_party/dart/tools/sdks/dart-sdk/bin/dart ./testing/scenario_app/bin/android_integration_tests.dart \ --adb="../third_party/android_tools/sdk/platform-tools/adb" \ --out-dir="../out/android_debug_unopt_arm64" \ - --smoke-test + --smoke-test="dev.flutter.scenarios.EngineLaunchE2ETest" echo "Exit code: $?" echo "Done" From 6cba705e972e84611c9a3560dece287892d69c23 Mon Sep 17 00:00:00 2001 From: Matan Lurey Date: Thu, 8 Feb 2024 18:58:59 -0800 Subject: [PATCH 04/11] Javafmt. --- .../src/main/java/dev/flutter/scenarios/TestActivity.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/testing/scenario_app/android/app/src/main/java/dev/flutter/scenarios/TestActivity.java b/testing/scenario_app/android/app/src/main/java/dev/flutter/scenarios/TestActivity.java index b59b1552a7922..013b97244b03e 100644 --- a/testing/scenario_app/android/app/src/main/java/dev/flutter/scenarios/TestActivity.java +++ b/testing/scenario_app/android/app/src/main/java/dev/flutter/scenarios/TestActivity.java @@ -86,7 +86,10 @@ public FlutterShellArgs getFlutterShellArgs() { public void onFlutterUiDisplayed() { final Intent launchIntent = getIntent(); MethodChannel channel = - new MethodChannel(Objects.requireNonNull(getFlutterEngine()).getDartExecutor(), "driver", JSONMethodCodec.INSTANCE); + new MethodChannel( + Objects.requireNonNull(getFlutterEngine()).getDartExecutor(), + "driver", + JSONMethodCodec.INSTANCE); Map test = new HashMap<>(2); if (launchIntent.hasExtra("scenario_name")) { test.put("name", launchIntent.getStringExtra("scenario_name")); From 6ace602fd14e66e3bfc73d24aff73180325445f8 Mon Sep 17 00:00:00 2001 From: Matan Lurey Date: Thu, 8 Feb 2024 19:08:48 -0800 Subject: [PATCH 05/11] Add OpenGLES too. --- ci/builders/linux_android_emulator.json | 25 +++++++++++++++++-- .../bin/android_integration_tests.dart | 17 ++++++++----- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/ci/builders/linux_android_emulator.json b/ci/builders/linux_android_emulator.json index 6f47800318ac4..9b601fd48df13 100644 --- a/ci/builders/linux_android_emulator.json +++ b/ci/builders/linux_android_emulator.json @@ -79,7 +79,7 @@ }, { "language": "bash", - "name": "Android Scenario App Integration Tests (Impeller)", + "name": "Android Scenario App Integration Tests (Impeller/Vulkan)", "test_dependencies": [ { "dependency": "android_virtual_device", @@ -93,7 +93,28 @@ "contexts": [ "android_virtual_device" ], - "script": "flutter/testing/scenario_app/run_android_tests.sh --graphics-backend=impeller", + "script": "flutter/testing/scenario_app/run_android_tests.sh --graphics-backend=impeller-vulkan", + "parameters": [ + "android_debug_x64" + ] + }, + { + "language": "bash", + "name": "Android Scenario App Integration Tests (Impeller/OpenGLES)", + "test_dependencies": [ + { + "dependency": "android_virtual_device", + "version": "android_34_google_apis_x64.textpb" + }, + { + "dependency": "avd_cipd_version", + "version": "build_id:8759428741582061553" + } + ], + "contexts": [ + "android_virtual_device" + ], + "script": "flutter/testing/scenario_app/run_android_tests.sh --graphics-backend=impeller-opengles", "parameters": [ "android_debug_x64" ] diff --git a/testing/scenario_app/bin/android_integration_tests.dart b/testing/scenario_app/bin/android_integration_tests.dart index bcb36ff00cfec..a2d8eb614066d 100644 --- a/testing/scenario_app/bin/android_integration_tests.dart +++ b/testing/scenario_app/bin/android_integration_tests.dart @@ -41,7 +41,7 @@ void main(List args) async { ..addOption( 'graphics-backend', help: 'The graphics backend to use for the Android app.', - allowed: ['skia', 'impeller-vulkan'], + allowed: ['skia', 'impeller-vulkan', 'impeller-opengles'], defaultsTo: 'skia', ); @@ -77,15 +77,17 @@ void main(List args) async { enum _GraphicsBackend { skia, - // TODO(matanlurey): Create impeller-opengles variant. - impeller; + impellerVulkan, + impellerOpengles; static _GraphicsBackend? tryParse(String? value) { switch (value) { case 'skia': return _GraphicsBackend.skia; - case 'impeller': - return _GraphicsBackend.impeller; + case 'impeller-vulkan': + return _GraphicsBackend.impellerVulkan; + case 'impeller-opengles': + return _GraphicsBackend.impellerOpengles; default: return null; } @@ -259,7 +261,10 @@ Future _run({ '-e class $smokeTestFullPath', 'dev.flutter.scenarios.test/dev.flutter.TestRunner', if (graphicsBackend != _GraphicsBackend.skia) - '-e enable-impeller', + ...[ + '-e enable-impeller', + '-e impeller_backend ${graphicsBackend == _GraphicsBackend.impellerVulkan ? 'vulkan' : 'opengles'}', + ], ]); if (exitCode != 0) { panic(['instrumented tests failed to run']); From fbff7255cdac5b007fbfe0601c04738b8b402381 Mon Sep 17 00:00:00 2001 From: Matan Lurey Date: Mon, 12 Feb 2024 08:46:08 -0800 Subject: [PATCH 06/11] Address feedback. --- ci/builders/linux_android_emulator.json | 17 ++++-- .../bin/android_integration_tests.dart | 59 ++++++++++--------- 2 files changed, 41 insertions(+), 35 deletions(-) diff --git a/ci/builders/linux_android_emulator.json b/ci/builders/linux_android_emulator.json index 9b601fd48df13..ab6da20cb0bf9 100644 --- a/ci/builders/linux_android_emulator.json +++ b/ci/builders/linux_android_emulator.json @@ -72,9 +72,10 @@ "contexts": [ "android_virtual_device" ], - "script": "flutter/testing/scenario_app/run_android_tests.sh --graphics-backend=skia", + "script": "flutter/testing/scenario_app/run_android_tests.sh", "parameters": [ - "android_debug_x64" + "android_debug_x64", + "--no-enable-impeller" ] }, { @@ -93,9 +94,11 @@ "contexts": [ "android_virtual_device" ], - "script": "flutter/testing/scenario_app/run_android_tests.sh --graphics-backend=impeller-vulkan", + "script": "flutter/testing/scenario_app/run_android_tests.sh", "parameters": [ - "android_debug_x64" + "android_debug_x64", + "--enable-impeller", + "--impeller-backend=vulkan" ] }, { @@ -114,9 +117,11 @@ "contexts": [ "android_virtual_device" ], - "script": "flutter/testing/scenario_app/run_android_tests.sh --graphics-backend=impeller-opengles", + "script": "flutter/testing/scenario_app/run_android_tests.sh", "parameters": [ - "android_debug_x64" + "android_debug_x64", + "--enable-impeller", + "--impeller-backend=opengles" ] } ] diff --git a/testing/scenario_app/bin/android_integration_tests.dart b/testing/scenario_app/bin/android_integration_tests.dart index a2d8eb614066d..d4ff9edeca593 100644 --- a/testing/scenario_app/bin/android_integration_tests.dart +++ b/testing/scenario_app/bin/android_integration_tests.dart @@ -38,11 +38,15 @@ void main(List args) async { help: 'Use Skia Gold to compare screenshots.', defaultsTo: isLuciEnv, ) + ..addFlag( + 'enable-impeller', + help: 'Enable Impeller for the Android app.', + ) ..addOption( - 'graphics-backend', - help: 'The graphics backend to use for the Android app.', - allowed: ['skia', 'impeller-vulkan', 'impeller-opengles'], - defaultsTo: 'skia', + 'impeller-backend', + help: 'The Impeller backend to use for the Android app.', + allowed: ['vulkan', 'opengles'], + defaultsTo: 'vulkan', ); runZonedGuarded( @@ -52,16 +56,18 @@ void main(List args) async { final File adb = File(results['adb'] as String); final bool useSkiaGold = results['use-skia-gold'] as bool; final String? smokeTest = results['smoke-test'] as String?; - final _GraphicsBackend? graphicsBackend = _GraphicsBackend.tryParse(results['graphics-backend'] as String?); - if (graphicsBackend == null) { - panic(['invalid graphics-backend', results['graphics-backend'] as String? ?? '']); + final bool enableImpeller = results['enable-impeller'] as bool; + final _ImpellerBackend? impellerBackend = _ImpellerBackend.tryParse(results['impeller-backend'] as String?); + if (enableImpeller && impellerBackend == null) { + panic(['invalid graphics-backend', results['impeller-backend'] as String? ?? '']); } await _run( outDir: outDir, adb: adb, smokeTestFullPath: smokeTest, useSkiaGold: useSkiaGold, - graphicsBackend: graphicsBackend, + enableImpeller: enableImpeller, + impellerBackend: impellerBackend, ); exit(0); }, @@ -75,22 +81,17 @@ void main(List args) async { ); } -enum _GraphicsBackend { - skia, - impellerVulkan, - impellerOpengles; +enum _ImpellerBackend { + vulkan, + opengles; - static _GraphicsBackend? tryParse(String? value) { - switch (value) { - case 'skia': - return _GraphicsBackend.skia; - case 'impeller-vulkan': - return _GraphicsBackend.impellerVulkan; - case 'impeller-opengles': - return _GraphicsBackend.impellerOpengles; - default: - return null; + static _ImpellerBackend? tryParse(String? value) { + for (final _ImpellerBackend backend in _ImpellerBackend.values) { + if (backend.name == value) { + return backend; + } } + return null; } } @@ -99,7 +100,8 @@ Future _run({ required File adb, required String? smokeTestFullPath, required bool useSkiaGold, - required _GraphicsBackend graphicsBackend, + required bool enableImpeller, + required _ImpellerBackend? impellerBackend, }) async { const ProcessManager pm = LocalProcessManager(); @@ -211,7 +213,7 @@ Future _run({ outDir, dimensions: { 'AndroidAPILevel': connectedDeviceAPILevel, - 'GraphicsBackend': graphicsBackend.name, + 'GraphicsBackend': enableImpeller ? 'impeller=${impellerBackend!.name}' : 'skia', }, ); }); @@ -260,11 +262,10 @@ Future _run({ if (smokeTestFullPath != null) '-e class $smokeTestFullPath', 'dev.flutter.scenarios.test/dev.flutter.TestRunner', - if (graphicsBackend != _GraphicsBackend.skia) - ...[ - '-e enable-impeller', - '-e impeller_backend ${graphicsBackend == _GraphicsBackend.impellerVulkan ? 'vulkan' : 'opengles'}', - ], + if (enableImpeller) + '-e enable-impeller', + if (impellerBackend != null) + '-e impeller-backend ${impellerBackend.name}', ]); if (exitCode != 0) { panic(['instrumented tests failed to run']); From 282410c7c639656da4f8f65449f64f0b2fc4800c Mon Sep 17 00:00:00 2001 From: Matan Lurey Date: Mon, 12 Feb 2024 08:46:52 -0800 Subject: [PATCH 07/11] ++ --- testing/scenario_app/bin/android_integration_tests.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing/scenario_app/bin/android_integration_tests.dart b/testing/scenario_app/bin/android_integration_tests.dart index d4ff9edeca593..3af90f35a2e2f 100644 --- a/testing/scenario_app/bin/android_integration_tests.dart +++ b/testing/scenario_app/bin/android_integration_tests.dart @@ -262,7 +262,7 @@ Future _run({ if (smokeTestFullPath != null) '-e class $smokeTestFullPath', 'dev.flutter.scenarios.test/dev.flutter.TestRunner', - if (enableImpeller) + if (enableImpeller) '-e enable-impeller', if (impellerBackend != null) '-e impeller-backend ${impellerBackend.name}', From 9db854c2849f54229cb935164d2dbcdc21d2ae62 Mon Sep 17 00:00:00 2001 From: Matan Lurey Date: Mon, 12 Feb 2024 11:23:52 -0800 Subject: [PATCH 08/11] Remove gradle-wrapper as-per feedback. --- .../android/gradle/wrapper/gradle-wrapper.properties | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 testing/scenario_app/android/gradle/wrapper/gradle-wrapper.properties diff --git a/testing/scenario_app/android/gradle/wrapper/gradle-wrapper.properties b/testing/scenario_app/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 42defcc94b345..0000000000000 --- a/testing/scenario_app/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip -networkTimeout=10000 -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists From 4cbabf1f0a169dd7227410e82f1cab4c6c3ff993 Mon Sep 17 00:00:00 2001 From: Matan Lurey Date: Mon, 12 Feb 2024 12:10:19 -0800 Subject: [PATCH 09/11] Fix dimension name maybe? --- testing/scenario_app/bin/android_integration_tests.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing/scenario_app/bin/android_integration_tests.dart b/testing/scenario_app/bin/android_integration_tests.dart index 3af90f35a2e2f..e7439d02b431d 100644 --- a/testing/scenario_app/bin/android_integration_tests.dart +++ b/testing/scenario_app/bin/android_integration_tests.dart @@ -213,7 +213,7 @@ Future _run({ outDir, dimensions: { 'AndroidAPILevel': connectedDeviceAPILevel, - 'GraphicsBackend': enableImpeller ? 'impeller=${impellerBackend!.name}' : 'skia', + 'GraphicsBackend': enableImpeller ? 'impeller-${impellerBackend!.name}' : 'skia', }, ); }); From 8dfc6b0b060f6c25ff036378a25df9765bb68608 Mon Sep 17 00:00:00 2001 From: Matan Lurey Date: Mon, 12 Feb 2024 13:22:00 -0800 Subject: [PATCH 10/11] Tweak logging to understand output better. --- testing/scenario_app/bin/android_integration_tests.dart | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/testing/scenario_app/bin/android_integration_tests.dart b/testing/scenario_app/bin/android_integration_tests.dart index e7439d02b431d..3332de5f7f81d 100644 --- a/testing/scenario_app/bin/android_integration_tests.dart +++ b/testing/scenario_app/bin/android_integration_tests.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. import 'dart:async'; +import 'dart:convert'; import 'dart:io'; import 'dart:typed_data'; @@ -208,7 +209,11 @@ Future _run({ panic(['could not get API level of the connected device']); } final String connectedDeviceAPILevel = (apiLevelProcessResult.stdout as String).trim(); - log('using API level $connectedDeviceAPILevel'); + final Map dimensions = { + 'AndroidAPILevel': connectedDeviceAPILevel, + 'GraphicsBackend': enableImpeller ? 'impeller-${impellerBackend!.name}' : 'skia', + }; + log('using dimensions: ${json.encode(dimensions)}'); skiaGoldClient = SkiaGoldClient( outDir, dimensions: { From 385969b5eca0c83da9609a8c8f64900d4eff7f4d Mon Sep 17 00:00:00 2001 From: Matan Lurey Date: Mon, 12 Feb 2024 15:50:23 -0800 Subject: [PATCH 11/11] Actually pass the arguments. --- testing/scenario_app/run_android_tests.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/testing/scenario_app/run_android_tests.sh b/testing/scenario_app/run_android_tests.sh index ec4abf49cb1c8..5a61d7d7ef584 100755 --- a/testing/scenario_app/run_android_tests.sh +++ b/testing/scenario_app/run_android_tests.sh @@ -68,4 +68,5 @@ cd $SCRIPT_DIR "$SRC_DIR"/third_party/dart/tools/sdks/dart-sdk/bin/dart run \ "$SCRIPT_DIR"/bin/android_integration_tests.dart \ --adb="$SRC_DIR"/third_party/android_tools/sdk/platform-tools/adb \ - --out-dir="$OUT_DIR" + --out-dir="$OUT_DIR" \ + "$@"