Skip to content

Commit 92f82c7

Browse files
authored
Transport e2e based perforamnce test to integration_test and remove duplicate watchPerformance (flutter#67594)
1 parent 4a32e52 commit 92f82c7

File tree

9 files changed

+32
-129
lines changed

9 files changed

+32
-129
lines changed

dev/benchmarks/macrobenchmarks/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ dev_dependencies:
4646
flutter_test:
4747
sdk: flutter
4848
test: 1.16.0-nullsafety.5
49-
e2e: 0.7.0+1
49+
integration_test: 0.9.2+1
5050

5151
_fe_analyzer_shared: 7.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
5252
analyzer: 0.39.17 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
@@ -215,4 +215,4 @@ flutter:
215215
fonts:
216216
- asset: packages/flutter_gallery_assets/fonts/GalleryIcons.ttf
217217

218-
# PUBSPEC CHECKSUM: 9c4a
218+
# PUBSPEC CHECKSUM: c81b

dev/benchmarks/macrobenchmarks/test/frame_policy.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ import 'package:flutter/material.dart';
77
import 'package:flutter/gestures.dart';
88
import 'package:flutter/scheduler.dart';
99
import 'package:flutter_test/flutter_test.dart';
10-
import 'package:e2e/e2e.dart';
10+
import 'package:integration_test/integration_test.dart';
1111

1212
import 'package:macrobenchmarks/src/simple_scroll.dart';
1313

1414
void main() {
15-
final E2EWidgetsFlutterBinding binding =
16-
E2EWidgetsFlutterBinding.ensureInitialized() as E2EWidgetsFlutterBinding;
15+
final IntegrationTestWidgetsFlutterBinding binding =
16+
IntegrationTestWidgetsFlutterBinding.ensureInitialized() as IntegrationTestWidgetsFlutterBinding;
1717
testWidgets(
1818
'Frame Counter and Input Delay for benchmarkLive',
1919
(WidgetTester tester) async {

dev/benchmarks/macrobenchmarks/test/util.dart

Lines changed: 5 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,11 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'dart:ui';
6-
7-
import 'package:flutter/scheduler.dart';
85
import 'package:flutter_test/flutter_test.dart';
96
import 'package:flutter/widgets.dart';
107

118
import 'package:macrobenchmarks/common.dart';
12-
import 'package:e2e/e2e.dart';
9+
import 'package:integration_test/integration_test.dart';
1310
import 'package:macrobenchmarks/main.dart' as app;
1411

1512
typedef ControlCallback = Future<void> Function(WidgetController controller);
@@ -23,9 +20,9 @@ void macroPerfTestE2E(
2320
ControlCallback body,
2421
ControlCallback setup,
2522
}) {
26-
final WidgetsBinding _binding = E2EWidgetsFlutterBinding.ensureInitialized();
27-
assert(_binding is E2EWidgetsFlutterBinding);
28-
final E2EWidgetsFlutterBinding binding = _binding as E2EWidgetsFlutterBinding;
23+
final WidgetsBinding _binding = IntegrationTestWidgetsFlutterBinding.ensureInitialized();
24+
assert(_binding is IntegrationTestWidgetsFlutterBinding);
25+
final IntegrationTestWidgetsFlutterBinding binding = _binding as IntegrationTestWidgetsFlutterBinding;
2926
binding.framePolicy = LiveTestWidgetsFlutterBindingFramePolicy.benchmarkLive;
3027

3128
testWidgets(testName, (WidgetTester tester) async {
@@ -60,7 +57,7 @@ void macroPerfTestE2E(
6057
await setup(tester);
6158
}
6259

63-
await watchPerformance(binding, () async {
60+
await binding.watchPerformance(() async {
6461
final Future<void> durationFuture = tester.binding.delayed(duration);
6562
if (body != null) {
6663
await body(tester);
@@ -69,29 +66,3 @@ void macroPerfTestE2E(
6966
});
7067
}, semanticsEnabled: false, timeout: Timeout(timeout));
7168
}
72-
73-
bool _firstRun = true;
74-
75-
// TODO(CareF): move this to e2e after FrameTimingSummarizer goes into stable
76-
// branch (#63537)
77-
/// watches the [FrameTiming] of `action` and report it to the e2e binding.
78-
Future<void> watchPerformance(
79-
E2EWidgetsFlutterBinding binding,
80-
Future<void> action(), {
81-
String reportKey = 'performance',
82-
}) async {
83-
assert(() {
84-
if (_firstRun) {
85-
debugPrint(kDebugWarning);
86-
_firstRun = false;
87-
}
88-
return true;
89-
}());
90-
final List<FrameTiming> frameTimings = <FrameTiming>[];
91-
final TimingsCallback watcher = frameTimings.addAll;
92-
binding.addTimingsCallback(watcher);
93-
await action();
94-
binding.removeTimingsCallback(watcher);
95-
final FrameTimingSummarizer frameTimes = FrameTimingSummarizer(frameTimings);
96-
binding.reportData = <String, dynamic>{reportKey: frameTimes.summary};
97-
}

dev/benchmarks/macrobenchmarks/test_driver/e2e_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'package:e2e/e2e_driver.dart' as driver;
5+
import 'package:integration_test/integration_test_driver.dart' as driver;
66

7-
Future<void> main() => driver.e2eDriver(
7+
Future<void> main() => driver.integrationDriver(
88
timeout: const Duration(minutes: 5),
99
responseDataCallback: (Map<String, dynamic> data) async {
1010
await driver.writeResponseData(

dev/benchmarks/macrobenchmarks/test_driver/frame_policy_test.dart

Lines changed: 12 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,52 +2,31 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'dart:convert';
65
import 'dart:io';
76

8-
import 'package:e2e/common.dart' as e2e;
9-
import 'package:flutter_driver/flutter_driver.dart';
7+
import 'package:integration_test/integration_test_driver.dart' as driver;
108

11-
import 'package:path/path.dart' as path;
9+
Future<void> main() => driver.integrationDriver(
10+
timeout: const Duration(minutes: 1),
11+
responseDataCallback: (Map<String, dynamic> data) async {
12+
final Map<String, dynamic> benchmarkLiveResult =
13+
data['benchmarkLive'] as Map<String,dynamic>;
14+
final Map<String, dynamic> fullyLiveResult =
15+
data['fullyLive'] as Map<String,dynamic>;
1216

13-
Future<void> main() async {
14-
const Duration timeout = Duration(minutes: 1);
15-
const String testName = 'frame_policy';
16-
17-
final FlutterDriver driver = await FlutterDriver.connect();
18-
String jsonResult;
19-
jsonResult = await driver.requestData(null, timeout: timeout);
20-
final e2e.Response response = e2e.Response.fromJson(jsonResult);
21-
await driver.close();
22-
final Map<String, dynamic> benchmarkLiveResult =
23-
response.data['benchmarkLive'] as Map<String,dynamic>;
24-
final Map<String, dynamic> fullyLiveResult =
25-
response.data['fullyLive'] as Map<String,dynamic>;
26-
27-
if (response.allTestsPassed) {
2817
if(benchmarkLiveResult['frame_count'] as int < 10
2918
|| fullyLiveResult['frame_count'] as int < 10) {
3019
print('Failure Details:\nNot Enough frames collected:'
3120
'benchmarkLive ${benchmarkLiveResult['frameCount']},'
3221
'${fullyLiveResult['frameCount']}.');
3322
exit(1);
3423
}
35-
print('All tests passed.');
36-
const String destinationDirectory = 'build';
37-
await fs.directory(destinationDirectory).create(recursive: true);
38-
final File file = fs.file(path.join(
39-
destinationDirectory,
40-
'${testName}_event_delay.json'
41-
));
42-
await file.writeAsString(const JsonEncoder.withIndent(' ').convert(
24+
await driver.writeResponseData(
4325
<String, dynamic>{
4426
'benchmarkLive': benchmarkLiveResult,
4527
'fullyLive': fullyLiveResult,
4628
},
47-
));
48-
exit(0);
49-
} else {
50-
print('Failure Details:\n${response.formattedFailureDetails}');
51-
exit(1);
29+
testOutputFilename: 'frame_policy_event_delay',
30+
);
5231
}
53-
}
32+
);

dev/integration_tests/flutter_gallery/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ dev_dependencies:
5252
flutter_goldens:
5353
sdk: flutter
5454
test: 1.16.0-nullsafety.5
55-
e2e: 0.7.0+1
55+
integration_test: 0.9.2+1
5656

5757
_fe_analyzer_shared: 7.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
5858
analyzer: 0.39.17 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
@@ -277,4 +277,4 @@ flutter:
277277
- asset: packages/flutter_gallery_assets/fonts/merriweather/Merriweather-Regular.ttf
278278
- asset: packages/flutter_gallery_assets/fonts/merriweather/Merriweather-Light.ttf
279279

280-
# PUBSPEC CHECKSUM: 1f3d
280+
# PUBSPEC CHECKSUM: c70e

dev/integration_tests/flutter_gallery/test_driver/e2e_utils.dart

Lines changed: 0 additions & 46 deletions
This file was deleted.

dev/integration_tests/flutter_gallery/test_driver/transitions_perf_e2e.dart

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,12 @@ import 'package:flutter/cupertino.dart';
66
import 'package:flutter/widgets.dart';
77
import 'package:flutter_test/flutter_test.dart';
88

9-
import 'package:e2e/e2e.dart';
9+
import 'package:integration_test/integration_test.dart';
1010

1111
import 'package:flutter_gallery/gallery/app.dart' show GalleryApp;
1212
import 'package:flutter_gallery/gallery/demos.dart';
1313
import 'package:flutter_gallery/demo_lists.dart';
1414

15-
import 'e2e_utils.dart';
1615
import 'run_demos.dart';
1716

1817
const List<String> kSkippedDemos = <String>[];
@@ -27,8 +26,8 @@ List<String> _allDemos = kAllGalleryDemos.map(
2726

2827
void main([List<String> args = const <String>[]]) {
2928
final bool withSemantics = args.contains('--with_semantics');
30-
final E2EWidgetsFlutterBinding binding =
31-
E2EWidgetsFlutterBinding.ensureInitialized() as E2EWidgetsFlutterBinding;
29+
final IntegrationTestWidgetsFlutterBinding binding =
30+
IntegrationTestWidgetsFlutterBinding.ensureInitialized() as IntegrationTestWidgetsFlutterBinding;
3231
binding.framePolicy = LiveTestWidgetsFlutterBindingFramePolicy.fullyLive;
3332
group('flutter gallery transitions on e2e', () {
3433
testWidgets('find.bySemanticsLabel', (WidgetTester tester) async {
@@ -44,7 +43,7 @@ void main([List<String> args = const <String>[]]) {
4443
runApp(const GalleryApp(testMode: true));
4544
await tester.pumpAndSettle();
4645
// Collect timeline data for just a limited set of demos to avoid OOMs.
47-
await watchPerformance(binding, () async {
46+
await binding.watchPerformance(() async {
4847
await runDemos(kProfiledDemos, tester);
4948
});
5049

dev/integration_tests/flutter_gallery/test_driver/transitions_perf_e2e_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'package:e2e/e2e_driver.dart' as driver;
5+
import 'package:integration_test/integration_test_driver.dart' as driver;
66

7-
Future<void> main() => driver.e2eDriver(
7+
Future<void> main() => driver.integrationDriver(
88
timeout: const Duration(minutes: 5),
99
responseDataCallback: (Map<String, dynamic> data) async {
1010
await driver.writeResponseData(

0 commit comments

Comments
 (0)