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",