Add tests for integration tests to devicelab (#79258)
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 0000000..6697a87
--- /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<void> 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 0000000..532a7fd
--- /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<void> 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 a7857f6..86023dd 100644
--- a/dev/devicelab/lib/tasks/integration_tests.dart
+++ b/dev/devicelab/lib/tasks/integration_tests.dart
@@ -124,6 +124,13 @@
);
}
+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 IntegrationTest {
+ IntegrationTest(this.testDirectory, this.testTarget);
+
+ final String testDirectory;
+ final String testTarget;
+
+ Future<TaskResult> call() {
+ return inDirectory<TaskResult>(testDirectory, () async {
+ final Device device = await devices.workingDevice;
+ await device.unlock();
+ final String deviceId = device.deviceId;
+ await flutter('packages', options: <String>['get']);
+
+ final List<String> options = <String>[
+ '-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 0000000..63a1b8d
--- /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 73f236b..e18cb13 100644
--- a/dev/integration_tests/ui/pubspec.yaml
+++ b/dev/integration_tests/ui/pubspec.yaml
@@ -13,6 +13,8 @@
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 d0b8e07..bc38126 100644
--- a/dev/prod_builders.json
+++ b/dev/prod_builders.json
@@ -727,6 +727,12 @@
"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",
"task_name": "mac_android_microbenchmarks",
@@ -1063,6 +1069,12 @@
"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",
"task_name": "mac_ios_ios_app_with_extensions_test",