From 8158b478d7391747036daf7d941b279deecbeac0 Mon Sep 17 00:00:00 2001 From: Jia Hao Date: Wed, 31 Mar 2021 13:29:03 +0800 Subject: [PATCH] Add tests for integration tests to devicelab (#79258) --- .../bin/tasks/integration_test_test.dart | 12 +++++++ .../bin/tasks/integration_test_test_ios.dart | 12 +++++++ .../lib/tasks/integration_tests.dart | 33 +++++++++++++++++++ .../ui/integration_test/integration_test.dart | 17 ++++++++++ dev/integration_tests/ui/pubspec.yaml | 2 ++ dev/prod_builders.json | 12 +++++++ 6 files changed, 88 insertions(+) create mode 100644 dev/devicelab/bin/tasks/integration_test_test.dart create mode 100644 dev/devicelab/bin/tasks/integration_test_test_ios.dart create mode 100644 dev/integration_tests/ui/integration_test/integration_test.dart diff --git a/dev/devicelab/bin/tasks/integration_test_test.dart b/dev/devicelab/bin/tasks/integration_test_test.dart new file mode 100644 index 0000000000..6697a878e0 --- /dev/null +++ b/dev/devicelab/bin/tasks/integration_test_test.dart @@ -0,0 +1,12 @@ +// 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/tasks/integration_tests.dart'; +import 'package:flutter_devicelab/framework/adb.dart'; +import 'package:flutter_devicelab/framework/framework.dart'; + +Future main() async { + deviceOperatingSystem = DeviceOperatingSystem.android; + await task(createEndToEndIntegrationTest()); +} diff --git a/dev/devicelab/bin/tasks/integration_test_test_ios.dart b/dev/devicelab/bin/tasks/integration_test_test_ios.dart new file mode 100644 index 0000000000..532a7fd025 --- /dev/null +++ b/dev/devicelab/bin/tasks/integration_test_test_ios.dart @@ -0,0 +1,12 @@ +// 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/tasks/integration_tests.dart'; +import 'package:flutter_devicelab/framework/adb.dart'; +import 'package:flutter_devicelab/framework/framework.dart'; + +Future main() async { + deviceOperatingSystem = DeviceOperatingSystem.ios; + await task(createEndToEndIntegrationTest()); +} diff --git a/dev/devicelab/lib/tasks/integration_tests.dart b/dev/devicelab/lib/tasks/integration_tests.dart index a7857f6598..86023dd4e9 100644 --- a/dev/devicelab/lib/tasks/integration_tests.dart +++ b/dev/devicelab/lib/tasks/integration_tests.dart @@ -124,6 +124,13 @@ TaskFunction dartDefinesTask() { ); } +TaskFunction createEndToEndIntegrationTest() { + return IntegrationTest( + '${flutterDirectory.path}/dev/integration_tests/ui', + 'integration_test/integration_test.dart', + ); +} + class DriverTest { DriverTest( this.testDirectory, @@ -162,3 +169,29 @@ class DriverTest { }); } } + +class IntegrationTest { + IntegrationTest(this.testDirectory, this.testTarget); + + final String testDirectory; + final String testTarget; + + Future call() { + return inDirectory(testDirectory, () async { + final Device device = await devices.workingDevice; + await device.unlock(); + final String deviceId = device.deviceId; + await flutter('packages', options: ['get']); + + final List options = [ + '-v', + '-d', + deviceId, + testTarget, + ]; + await flutter('test', options: options); + + return TaskResult.success(null); + }); + } +} diff --git a/dev/integration_tests/ui/integration_test/integration_test.dart b/dev/integration_tests/ui/integration_test/integration_test.dart new file mode 100644 index 0000000000..63a1b8d4a5 --- /dev/null +++ b/dev/integration_tests/ui/integration_test/integration_test.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_test/flutter_test.dart'; +import 'package:integration_ui/build_mode.dart' as app; + +void main() { + group('Integration Test', () { + testWidgets('smoke test', (WidgetTester tester) async { + app.main(); + await tester.pumpAndSettle(); + + expect(find.text('Hello, world!'), findsOneWidget); + }); + }); +} diff --git a/dev/integration_tests/ui/pubspec.yaml b/dev/integration_tests/ui/pubspec.yaml index 73f236b512..e18cb13b65 100644 --- a/dev/integration_tests/ui/pubspec.yaml +++ b/dev/integration_tests/ui/pubspec.yaml @@ -13,6 +13,8 @@ dependencies: sdk: flutter flutter_driver: sdk: flutter + integration_test: + sdk: flutter test: 1.16.5 _fe_analyzer_shared: 19.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" diff --git a/dev/prod_builders.json b/dev/prod_builders.json index d0b8e0746e..bc38126921 100644 --- a/dev/prod_builders.json +++ b/dev/prod_builders.json @@ -726,6 +726,12 @@ "task_name": "mac_android_integration_ui_textfield", "flaky": false }, + { + "name": "Mac_android integration_test_test", + "repo": "flutter", + "task_name": "mac_android_integration_test_test", + "flaky": false + }, { "name": "Mac_android microbenchmarks", "repo": "flutter", @@ -1062,6 +1068,12 @@ "task_name": "mac_ios_integration_ui_ios_textfield", "flaky": false }, + { + "name": "Mac_ios integration_test_test_ios", + "repo": "flutter", + "task_name": "mac_ios_integration_test_test_ios", + "flaky": false + }, { "name": "Mac_ios ios_app_with_extensions_test", "repo": "flutter",