blob: 8900f2c41131b955686ee1c95c54b6f7676cbb53 [file] [log] [blame]
// 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);
};
}