add old gallery page transition (#106701)
diff --git a/.ci.yaml b/.ci.yaml
index 7d90cc3..2817621 100644
--- a/.ci.yaml
+++ b/.ci.yaml
@@ -1957,6 +1957,17 @@
task_name: new_gallery__crane_perf
scheduler: luci
+ - name: Linux_android old_gallery__transition_perf
+ bringup: true
+ recipe: devicelab/devicelab_drone
+ presubmit: false
+ timeout: 60
+ properties:
+ tags: >
+ ["devicelab", "android", "linux"]
+ task_name: old_gallery__transition_perf
+ scheduler: luci
+
- name: Linux_android new_gallery__transition_perf
recipe: devicelab/devicelab_drone
presubmit: false
diff --git a/TESTOWNERS b/TESTOWNERS
index 3a2d76c..ebba87b 100644
--- a/TESTOWNERS
+++ b/TESTOWNERS
@@ -64,6 +64,7 @@
/dev/devicelab/bin/tasks/list_text_layout_impeller_perf__e2e_summary.dart @dnfield @flutter/engine
/dev/devicelab/bin/tasks/multi_widget_construction_perf__e2e_summary.dart @zanderso @flutter/engine
/dev/devicelab/bin/tasks/new_gallery__crane_perf.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/old_gallery__transition_perf.dart @jonahwilliams @flutter/engine
/dev/devicelab/bin/tasks/picture_cache_perf__e2e_summary.dart @zanderso @flutter/engine
/dev/devicelab/bin/tasks/platform_channels_benchmarks.dart @gaaclarke @flutter/engine
/dev/devicelab/bin/tasks/platform_views_scroll_perf__timeline_summary.dart @zanderso @flutter/engine
diff --git a/dev/devicelab/bin/tasks/old_gallery__transition_perf.dart b/dev/devicelab/bin/tasks/old_gallery__transition_perf.dart
new file mode 100644
index 0000000..55f01bf
--- /dev/null
+++ b/dev/devicelab/bin/tasks/old_gallery__transition_perf.dart
@@ -0,0 +1,17 @@
+// 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 'package:flutter_devicelab/framework/devices.dart';
+import 'package:flutter_devicelab/framework/framework.dart';
+import 'package:flutter_devicelab/framework/utils.dart';
+import 'package:flutter_devicelab/tasks/perf_tests.dart';
+
+void main() async {
+ deviceOperatingSystem = DeviceOperatingSystem.android;
+ await task(PerfTest(
+ '${flutterDirectory.path}/dev/integration_tests/flutter_gallery',
+ 'test_driver/page_transitions_perf.dart',
+ 'page_transition_perf',
+ ).run);
+}
diff --git a/dev/integration_tests/flutter_gallery/test_driver/page_transitions_perf.dart b/dev/integration_tests/flutter_gallery/test_driver/page_transitions_perf.dart
new file mode 100644
index 0000000..fd93bb5
--- /dev/null
+++ b/dev/integration_tests/flutter_gallery/test_driver/page_transitions_perf.dart
@@ -0,0 +1,14 @@
+// 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 'package:flutter/material.dart';
+import 'package:flutter_driver/driver_extension.dart';
+import 'package:flutter_gallery/gallery/app.dart' show GalleryApp;
+
+void main() {
+ enableFlutterDriverExtension();
+ // As in lib/main.dart: overriding https://github.com/flutter/flutter/issues/13736
+ // for better visual effect at the cost of performance.
+ runApp(const GalleryApp(testMode: true));
+}
diff --git a/dev/integration_tests/flutter_gallery/test_driver/page_transitions_perf_test.dart b/dev/integration_tests/flutter_gallery/test_driver/page_transitions_perf_test.dart
new file mode 100644
index 0000000..0ef7ae4
--- /dev/null
+++ b/dev/integration_tests/flutter_gallery/test_driver/page_transitions_perf_test.dart
@@ -0,0 +1,39 @@
+// 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 'package:flutter_driver/flutter_driver.dart';
+import 'package:test/test.dart' hide TypeMatcher, isInstanceOf;
+
+void main() {
+ group('page transition performance test', () {
+ late FlutterDriver driver;
+
+ setUpAll(() async {
+ driver = await FlutterDriver.connect();
+
+ await driver.waitUntilFirstFrameRasterized();
+ });
+
+ tearDownAll(() async {
+ driver.close();
+ });
+
+ test('measure', () async {
+ final Timeline timeline = await driver.traceAction(() async {
+ await driver.tap(find.text('Material'));
+
+ for (int i = 0; i < 10; i++) {
+ await driver.tap(find.text('Banner'));
+ await Future<void>.delayed(const Duration(milliseconds: 500));
+ await driver.waitFor(find.byTooltip('Back'));
+ await driver.tap(find.byTooltip('Back'));
+ await Future<void>.delayed(const Duration(milliseconds: 500));
+ }
+ });
+
+ final TimelineSummary summary = TimelineSummary.summarize(timeline);
+ await summary.writeTimelineToFile('page_transition_perf', pretty: true);
+ }, timeout: Timeout.none);
+ });
+}