diff --git a/dev/devicelab/lib/tasks/perf_tests.dart b/dev/devicelab/lib/tasks/perf_tests.dart index 3b00a813fe..b3f65fa2f1 100644 --- a/dev/devicelab/lib/tasks/perf_tests.dart +++ b/dev/devicelab/lib/tasks/perf_tests.dart @@ -454,24 +454,56 @@ class StartupTest { Future run() async { return await inDirectory(testDirectory, () async { - final String deviceId = (await devices.workingDevice).deviceId; - await flutter('packages', options: ['get']); - - const int iterations = 15; + final Device device = await devices.workingDevice; + const int iterations = 5; final List> results = >[]; - for (int i = 0; i < iterations; ++i) { + + section('Building application'); + String applicationBinaryPath; + switch (deviceOperatingSystem) { + case DeviceOperatingSystem.android: + await flutter('build', options: [ + 'apk', + '-v', + '--profile', + '--target-platform=android-arm,android-arm64', + ]); + applicationBinaryPath = '$testDirectory/build/app/outputs/flutter-apk/app-profile.apk'; + break; + case DeviceOperatingSystem.ios: + await flutter('build', options: [ + 'ios', + '-v', + '--profile', + ]); + applicationBinaryPath = '$testDirectory/build/ios/iphoneos/Runner.app'; + break; + case DeviceOperatingSystem.fuchsia: + case DeviceOperatingSystem.fake: + break; + } + + for (int i = 0; i < iterations; i += 1) { await flutter('run', options: [ '--no-android-gradle-daemon', '--verbose', '--profile', '--trace-startup', '-d', - deviceId, + device.deviceId, + if (applicationBinaryPath != null) + '--use-application-binary=$applicationBinaryPath', ]); final Map data = json.decode( file('$testDirectory/build/start_up_info.json').readAsStringSync(), ) as Map; results.add(data); + + await flutter('install', options: [ + '--uninstall-only', + '-d', + device.deviceId, + ]); } final Map averageResults = _average(results, iterations);