| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import '../framework/framework.dart'; |
| import '../framework/task_result.dart'; |
| import '../framework/utils.dart'; |
| |
| |
| /// Tests the following Android lifecycles: Activity#onStop(), Activity#onResume(), Activity#onPause(), |
| /// and Activity#onDestroy() from Dart perspective in debug, profile, and release modes. |
| TaskFunction androidViewsTest({ |
| Map<String, String>? environment, |
| }){ |
| return () async { |
| section('Build APK'); |
| await flutter( |
| 'build', |
| options: <String>[ |
| 'apk', |
| '--config-only', |
| ], |
| environment: environment, |
| workingDirectory: '${flutterDirectory.path}/dev/integration_tests/android_views' |
| ); |
| |
| /// Any gradle command downloads gradle if not already present in the cache. |
| /// ./gradlew dependencies downloads any gradle defined dependencies to the cache. |
| /// https://docs.gradle.org/current/userguide/viewing_debugging_dependencies.html |
| /// Downloading gradle and downloading dependencies are a common source of flakes |
| /// and moving those to an infra step that can be retried shifts the blame |
| /// individual tests to the infra itself. |
| section('Download android dependencies'); |
| final int exitCode = await exec( |
| './gradlew', |
| <String>['-q', 'dependencies'], |
| workingDirectory: |
| '${flutterDirectory.path}/dev/integration_tests/android_views/android' |
| ); |
| if (exitCode != 0) { |
| return TaskResult.failure('Failed to download gradle dependencies'); |
| } |
| section('Run flutter drive on android views'); |
| await flutter( |
| 'drive', |
| options: <String>[ |
| '--browser-name=android-chrome', |
| '--android-emulator', '--no-start-paused', |
| '--purge-persistent-cache', '--device-timeout=30', |
| ], |
| environment: environment, |
| workingDirectory: '${flutterDirectory.path}/dev/integration_tests/android_views' |
| ); |
| return TaskResult.success(null); |
| }; |
| } |