Add integration test of textures (#13122)

diff --git a/dev/devicelab/bin/tasks/external_ui_integration_test.dart b/dev/devicelab/bin/tasks/external_ui_integration_test.dart
new file mode 100644
index 0000000..0866f7a
--- /dev/null
+++ b/dev/devicelab/bin/tasks/external_ui_integration_test.dart
@@ -0,0 +1,14 @@
+// Copyright 2017 The Chromium 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 'dart:async';
+
+import 'package:flutter_devicelab/framework/adb.dart';
+import 'package:flutter_devicelab/framework/framework.dart';
+import 'package:flutter_devicelab/tasks/integration_tests.dart';
+
+Future<Null> main() async {
+  deviceOperatingSystem = DeviceOperatingSystem.android;
+  await task(createExternalUiIntegrationTest());
+}
diff --git a/dev/devicelab/bin/tasks/external_ui_integration_test_ios.dart b/dev/devicelab/bin/tasks/external_ui_integration_test_ios.dart
new file mode 100644
index 0000000..2da7c73
--- /dev/null
+++ b/dev/devicelab/bin/tasks/external_ui_integration_test_ios.dart
@@ -0,0 +1,14 @@
+// Copyright 2017 The Chromium 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 'dart:async';
+
+import 'package:flutter_devicelab/framework/adb.dart';
+import 'package:flutter_devicelab/framework/framework.dart';
+import 'package:flutter_devicelab/tasks/integration_tests.dart';
+
+Future<Null> main() async {
+  deviceOperatingSystem = DeviceOperatingSystem.ios;
+  await task(createExternalUiIntegrationTest());
+}
diff --git a/dev/devicelab/lib/tasks/integration_tests.dart b/dev/devicelab/lib/tasks/integration_tests.dart
index f612326..af4334a 100644
--- a/dev/devicelab/lib/tasks/integration_tests.dart
+++ b/dev/devicelab/lib/tasks/integration_tests.dart
@@ -31,6 +31,13 @@
   );
 }
 
+TaskFunction createExternalUiIntegrationTest() {
+  return new DriverTest(
+    '${flutterDirectory.path}/dev/integration_tests/external_ui',
+    'lib/main.dart',
+  );
+}
+
 TaskFunction createPlatformChannelSampleTest() {
   return new DriverTest(
     '${flutterDirectory.path}/examples/platform_channel',
diff --git a/dev/devicelab/manifest.yaml b/dev/devicelab/manifest.yaml
index 2ae69aa..28970aa 100644
--- a/dev/devicelab/manifest.yaml
+++ b/dev/devicelab/manifest.yaml
@@ -71,6 +71,13 @@
     stage: devicelab
     required_agent_capabilities: ["has-android-device"]
 
+  external_ui_integration_test:
+    description: >
+      Checks that external UIs work on Android.
+    stage: devicelab
+    required_agent_capabilities: ["has-android-device"]
+    flaky: true
+
   platform_interaction_test:
     description: >
       Checks platform interaction on Android.
@@ -185,6 +192,13 @@
     stage: devicelab_ios
     required_agent_capabilities: ["has-ios-device"]
 
+  external_ui_integration_test_ios:
+    description: >
+      Checks that external UIs work on iOS.
+    stage: devicelab
+    required_agent_capabilities: ["has-ios-device"]
+    flaky: true
+
   channels_integration_test_ios:
     description: >
       Checks that platform channels work on iOS.