[multiple_web] Adapt web PlatformView widgets to work slotted. (#3964)

* [url_launcher_web] Make Link take 100% width/height of the PlatformView.
* [google_maps_flutter_web] Make Map take 100% width/height of the PlatformView.
* [video_player_web] Make Video take 100% width/height of the PlatformView.
* [video_player_web] Move tests to integration_test style so they run in CI.
* [url_launcher] Add link example
diff --git a/.cirrus.yml b/.cirrus.yml
index f09c3a9..129b6cb 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -161,7 +161,7 @@
       env:
         # Currently missing; see https://github.com/flutter/flutter/issues/81982
         # and https://github.com/flutter/flutter/issues/82211
-        PLUGINS_TO_EXCLUDE_INTEGRATION_TESTS: "file_selector,image_picker_for_web,shared_preferences_web,video_player_web"
+        PLUGINS_TO_EXCLUDE_INTEGRATION_TESTS: "file_selector,image_picker_for_web,shared_preferences_web"
         matrix:
           CHANNEL: "master"
           CHANNEL: "stable"
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md
index fd56b64..0544ba2 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md
+++ b/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.3.0+1
+
+* Change sizing code of `GoogleMap` widget's `HtmlElementView` so it works well when slotted.
+
 ## 0.3.0
 
 * Migrate package to null-safety.
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/google_maps_controller.dart b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/google_maps_controller.dart
index 2528490..2262682 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/lib/src/google_maps_controller.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_web/lib/src/google_maps_controller.dart
@@ -96,7 +96,10 @@
     // Register the view factory that will hold the `_div` that holds the map in the DOM.
     // The `_div` needs to be created outside of the ViewFactory (and cached!) so we can
     // use it to create the [gmaps.GMap] in the `init()` method of this class.
-    _div = DivElement()..id = _getViewType(mapId);
+    _div = DivElement()
+      ..id = _getViewType(mapId)
+      ..style.width = '100%'
+      ..style.height = '100%';
 
     ui.platformViewRegistry.registerViewFactory(
       _getViewType(mapId),
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml
index 47e6c53..3eb3afb 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml
+++ b/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Web platform implementation of google_maps_flutter
 repository: https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter/google_maps_flutter_web
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+maps%22
-version: 0.3.0
+version: 0.3.0+1
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/url_launcher/url_launcher/CHANGELOG.md b/packages/url_launcher/url_launcher/CHANGELOG.md
index 2c2ebc3..3ff1a08 100644
--- a/packages/url_launcher/url_launcher/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher/CHANGELOG.md
@@ -1,6 +1,7 @@
-## NEXT
+## 6.0.5
 
 * Add iOS unit and UI integration test targets.
+* Add a `Link` widget to the example app.
 
 ## 6.0.4
 
diff --git a/packages/url_launcher/url_launcher/example/lib/main.dart b/packages/url_launcher/url_launcher/example/lib/main.dart
index 7faf2a8..d593e6d 100644
--- a/packages/url_launcher/url_launcher/example/lib/main.dart
+++ b/packages/url_launcher/url_launcher/example/lib/main.dart
@@ -7,6 +7,7 @@
 import 'dart:async';
 
 import 'package:flutter/material.dart';
+import 'package:url_launcher/link.dart';
 import 'package:url_launcher/url_launcher.dart';
 
 void main() {
@@ -196,6 +197,19 @@
                 child: const Text('Launch in app + close after 5 seconds'),
               ),
               const Padding(padding: EdgeInsets.all(16.0)),
+              Link(
+                uri: Uri.parse(
+                    'https://pub.dev/documentation/url_launcher/latest/link/link-library.html'),
+                target: LinkTarget.blank,
+                builder: (ctx, openLink) {
+                  return TextButton.icon(
+                    onPressed: openLink,
+                    label: Text('Link Widget documentation'),
+                    icon: Icon(Icons.read_more),
+                  );
+                },
+              ),
+              const Padding(padding: EdgeInsets.all(16.0)),
               FutureBuilder<void>(future: _launched, builder: _launchStatus),
             ],
           ),
diff --git a/packages/url_launcher/url_launcher/pubspec.yaml b/packages/url_launcher/url_launcher/pubspec.yaml
index b2b2def..ca5dd6b 100644
--- a/packages/url_launcher/url_launcher/pubspec.yaml
+++ b/packages/url_launcher/url_launcher/pubspec.yaml
@@ -3,7 +3,7 @@
   web, phone, SMS, and email schemes.
 repository: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+url_launcher%22
-version: 6.0.4
+version: 6.0.5
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/url_launcher/url_launcher_web/CHANGELOG.md b/packages/url_launcher/url_launcher_web/CHANGELOG.md
index 7da0ba0..488c338 100644
--- a/packages/url_launcher/url_launcher_web/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher_web/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 2.0.1
+
+- Change sizing code of `Link` widget's `HtmlElementView` so it works well when slotted.
+
 # 2.0.0
 
 - Migrate to null safety.
diff --git a/packages/url_launcher/url_launcher_web/lib/src/link.dart b/packages/url_launcher/url_launcher_web/lib/src/link.dart
index fcbbaae..3c556b3 100644
--- a/packages/url_launcher/url_launcher_web/lib/src/link.dart
+++ b/packages/url_launcher/url_launcher_web/lib/src/link.dart
@@ -170,6 +170,8 @@
     _element.style
       ..opacity = '0'
       ..display = 'block'
+      ..width = '100%'
+      ..height = '100%'
       ..cursor = 'unset';
 
     // This is recommended on MDN:
diff --git a/packages/url_launcher/url_launcher_web/pubspec.yaml b/packages/url_launcher/url_launcher_web/pubspec.yaml
index 5e3ba9f..7afdc0a 100644
--- a/packages/url_launcher/url_launcher_web/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_web/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Web platform implementation of url_launcher
 repository: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher_web
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+url_launcher%22
-version: 2.0.0
+version: 2.0.1
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/video_player/video_player_web/CHANGELOG.md b/packages/video_player/video_player_web/CHANGELOG.md
index 63d4e10..63d950c 100644
--- a/packages/video_player/video_player_web/CHANGELOG.md
+++ b/packages/video_player/video_player_web/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 2.0.1
+
+* Change sizing code of `Video` widget's `HtmlElementView` so it works well when slotted.
+* Move tests to `example` directory, so they run as integration_tests with `flutter drive`.
+
 ## 2.0.0
 
 * Migrate to null safety.
diff --git a/packages/video_player/video_player_web/example/README.md b/packages/video_player/video_player_web/example/README.md
new file mode 100644
index 0000000..0ec01e0
--- /dev/null
+++ b/packages/video_player/video_player_web/example/README.md
@@ -0,0 +1,21 @@
+# Testing
+
+This package utilizes the `integration_test` package to run its tests in a web browser.
+
+See [flutter.dev > Integration testing](https://flutter.dev/docs/testing/integration-tests) for more info.
+
+## Running the tests
+
+Make sure you have updated to the latest Flutter master.
+
+1. Check what version of Chrome is running on the machine you're running tests on.
+
+2. Download and install driver for that version from here:
+    * <https://chromedriver.chromium.org/downloads>
+
+3. Start the driver using `chromedriver --port=4444`
+
+4. Run tests: `flutter drive -d web-server --browser-name=chrome --driver=test_driver/integration_driver.dart --target=integration_test/TEST_NAME.dart`, or (in Linux):
+
+    * Single: `./run_test.sh integration_test/TEST_NAME.dart`
+    * All: `./run_test.sh`
diff --git a/packages/video_player/video_player_web/example/integration_test/video_player_web_test.dart b/packages/video_player/video_player_web/example/integration_test/video_player_web_test.dart
new file mode 100644
index 0000000..d3ad80c
--- /dev/null
+++ b/packages/video_player/video_player_web/example/integration_test/video_player_web_test.dart
@@ -0,0 +1,157 @@
+// Copyright 2013 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 'dart:async';
+
+import 'package:flutter/services.dart';
+import 'package:flutter/widgets.dart';
+import 'package:flutter_test/flutter_test.dart';
+import 'package:integration_test/integration_test.dart';
+import 'package:video_player_platform_interface/video_player_platform_interface.dart';
+import 'package:video_player_web/video_player_web.dart';
+
+void main() {
+  IntegrationTestWidgetsFlutterBinding.ensureInitialized();
+
+  group('VideoPlayer for Web', () {
+    late Future<int> textureId;
+
+    setUp(() {
+      VideoPlayerPlatform.instance = VideoPlayerPlugin();
+      textureId = VideoPlayerPlatform.instance
+          .create(
+            DataSource(
+              sourceType: DataSourceType.network,
+              uri:
+                  'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4',
+            ),
+          )
+          .then((textureId) => textureId!);
+    });
+
+    testWidgets('can init', (WidgetTester tester) async {
+      expect(VideoPlayerPlatform.instance.init(), completes);
+    });
+
+    testWidgets('can create from network', (WidgetTester tester) async {
+      expect(
+          VideoPlayerPlatform.instance.create(
+            DataSource(
+                sourceType: DataSourceType.network,
+                uri:
+                    'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4'),
+          ),
+          completion(isNonZero));
+    });
+
+    testWidgets('can create from asset', (WidgetTester tester) async {
+      expect(
+          VideoPlayerPlatform.instance.create(
+            DataSource(
+              sourceType: DataSourceType.asset,
+              asset: 'videos/bee.mp4',
+              package: 'bee_vids',
+            ),
+          ),
+          completion(isNonZero));
+    });
+
+    testWidgets('cannot create from file', (WidgetTester tester) async {
+      expect(
+          VideoPlayerPlatform.instance.create(
+            DataSource(
+              sourceType: DataSourceType.file,
+              uri: '/videos/bee.mp4',
+            ),
+          ),
+          throwsUnimplementedError);
+    });
+
+    testWidgets('can dispose', (WidgetTester tester) async {
+      expect(VideoPlayerPlatform.instance.dispose(await textureId), completes);
+    });
+
+    testWidgets('can set looping', (WidgetTester tester) async {
+      expect(
+        VideoPlayerPlatform.instance.setLooping(await textureId, true),
+        completes,
+      );
+    });
+
+    testWidgets('can play', (WidgetTester tester) async {
+      // Mute video to allow autoplay (See https://goo.gl/xX8pDD)
+      await VideoPlayerPlatform.instance.setVolume(await textureId, 0);
+      expect(VideoPlayerPlatform.instance.play(await textureId), completes);
+    });
+
+    testWidgets('throws PlatformException when playing bad media',
+        (WidgetTester tester) async {
+      int videoPlayerId = (await VideoPlayerPlatform.instance.create(
+        DataSource(
+            sourceType: DataSourceType.network,
+            uri:
+                'https://flutter.github.io/assets-for-api-docs/assets/videos/_non_existent_video.mp4'),
+      ))!;
+
+      Stream<VideoEvent> eventStream =
+          VideoPlayerPlatform.instance.videoEventsFor(videoPlayerId);
+
+      // Mute video to allow autoplay (See https://goo.gl/xX8pDD)
+      await VideoPlayerPlatform.instance.setVolume(videoPlayerId, 0);
+      await VideoPlayerPlatform.instance.play(videoPlayerId);
+
+      expect(() async {
+        await eventStream.last;
+      }, throwsA(isA<PlatformException>()));
+    });
+
+    testWidgets('can pause', (WidgetTester tester) async {
+      expect(VideoPlayerPlatform.instance.pause(await textureId), completes);
+    });
+
+    testWidgets('can set volume', (WidgetTester tester) async {
+      expect(
+        VideoPlayerPlatform.instance.setVolume(await textureId, 0.8),
+        completes,
+      );
+    });
+
+    testWidgets('can set playback speed', (WidgetTester tester) async {
+      expect(
+        VideoPlayerPlatform.instance.setPlaybackSpeed(await textureId, 2.0),
+        completes,
+      );
+    });
+
+    testWidgets('can seek to position', (WidgetTester tester) async {
+      expect(
+        VideoPlayerPlatform.instance.seekTo(
+          await textureId,
+          Duration(seconds: 1),
+        ),
+        completes,
+      );
+    });
+
+    testWidgets('can get position', (WidgetTester tester) async {
+      expect(VideoPlayerPlatform.instance.getPosition(await textureId),
+          completion(isInstanceOf<Duration>()));
+    });
+
+    testWidgets('can get video event stream', (WidgetTester tester) async {
+      expect(VideoPlayerPlatform.instance.videoEventsFor(await textureId),
+          isInstanceOf<Stream<VideoEvent>>());
+    });
+
+    testWidgets('can build view', (WidgetTester tester) async {
+      expect(VideoPlayerPlatform.instance.buildView(await textureId),
+          isInstanceOf<Widget>());
+    });
+
+    testWidgets('ignores setting mixWithOthers', (WidgetTester tester) async {
+      expect(VideoPlayerPlatform.instance.setMixWithOthers(true), completes);
+      expect(VideoPlayerPlatform.instance.setMixWithOthers(false), completes);
+    });
+  });
+}
diff --git a/packages/video_player/video_player_web/example/lib/main.dart b/packages/video_player/video_player_web/example/lib/main.dart
new file mode 100644
index 0000000..e1a38dc
--- /dev/null
+++ b/packages/video_player/video_player_web/example/lib/main.dart
@@ -0,0 +1,25 @@
+// Copyright 2013 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/material.dart';
+
+void main() {
+  runApp(MyApp());
+}
+
+/// App for testing
+class MyApp extends StatefulWidget {
+  @override
+  _MyAppState createState() => _MyAppState();
+}
+
+class _MyAppState extends State<MyApp> {
+  @override
+  Widget build(BuildContext context) {
+    return Directionality(
+      textDirection: TextDirection.ltr,
+      child: Text('Testing... Look at the console output for results!'),
+    );
+  }
+}
diff --git a/packages/video_player/video_player_web/example/pubspec.yaml b/packages/video_player/video_player_web/example/pubspec.yaml
new file mode 100644
index 0000000..c172eea
--- /dev/null
+++ b/packages/video_player/video_player_web/example/pubspec.yaml
@@ -0,0 +1,20 @@
+name: connectivity_for_web_integration_tests
+publish_to: none
+
+environment:
+  sdk: ">=2.12.0 <3.0.0"
+  flutter: ">=2.2.0"
+
+dependencies:
+  video_player_web:
+    path: ../
+  flutter:
+    sdk: flutter
+
+dev_dependencies:
+  flutter_test:
+    sdk: flutter
+  flutter_driver:
+    sdk: flutter
+  integration_test:
+    sdk: flutter
diff --git a/packages/video_player/video_player_web/example/run_test.sh b/packages/video_player/video_player_web/example/run_test.sh
new file mode 100755
index 0000000..aa52974
--- /dev/null
+++ b/packages/video_player/video_player_web/example/run_test.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/bash
+# Copyright 2013 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.
+
+if pgrep -lf chromedriver > /dev/null; then
+  echo "chromedriver is running."
+
+  if [ $# -eq 0 ]; then
+    echo "No target specified, running all tests..."
+    find integration_test/ -iname *_test.dart | xargs -n1 -i -t flutter drive -d web-server --web-port=7357 --browser-name=chrome --driver=test_driver/integration_test.dart --target='{}'
+  else
+    echo "Running test target: $1..."
+    set -x
+    flutter drive -d web-server --web-port=7357 --browser-name=chrome --driver=test_driver/integration_test.dart --target=$1
+  fi
+
+  else
+    echo "chromedriver is not running."
+    echo "Please, check the README.md for instructions on how to use run_test.sh"
+fi
+
diff --git a/packages/video_player/video_player_web/example/test_driver/integration_test.dart b/packages/video_player/video_player_web/example/test_driver/integration_test.dart
new file mode 100644
index 0000000..4f10f2a
--- /dev/null
+++ b/packages/video_player/video_player_web/example/test_driver/integration_test.dart
@@ -0,0 +1,7 @@
+// Copyright 2013 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:integration_test/integration_test_driver.dart';
+
+Future<void> main() => integrationDriver();
diff --git a/packages/video_player/video_player_web/example/web/index.html b/packages/video_player/video_player_web/example/web/index.html
new file mode 100644
index 0000000..7fb138c
--- /dev/null
+++ b/packages/video_player/video_player_web/example/web/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<!-- Copyright 2013 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. -->
+<html>
+<head>
+  <meta charset="UTF-8">
+  <title>example</title>
+</head>
+<body>
+  <script src="main.dart.js" type="application/javascript"></script>
+</body>
+</html>
diff --git a/packages/video_player/video_player_web/lib/video_player_web.dart b/packages/video_player/video_player_web/lib/video_player_web.dart
index a61e010..560c4af 100644
--- a/packages/video_player/video_player_web/lib/video_player_web.dart
+++ b/packages/video_player/video_player_web/lib/video_player_web.dart
@@ -181,7 +181,9 @@
       ..src = uri
       ..autoplay = false
       ..controls = false
-      ..style.border = 'none';
+      ..style.border = 'none'
+      ..style.height = '100%'
+      ..style.width = '100%';
 
     // Allows Safari iOS to play the video inline
     videoElement.setAttribute('playsinline', 'true');
diff --git a/packages/video_player/video_player_web/pubspec.yaml b/packages/video_player/video_player_web/pubspec.yaml
index b303980..568a926 100644
--- a/packages/video_player/video_player_web/pubspec.yaml
+++ b/packages/video_player/video_player_web/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Web platform implementation of video_player.
 repository: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player_web
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22
-version: 2.0.0
+version: 2.0.1
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/video_player/video_player_web/test/README.md b/packages/video_player/video_player_web/test/README.md
new file mode 100644
index 0000000..7c5b4ad
--- /dev/null
+++ b/packages/video_player/video_player_web/test/README.md
@@ -0,0 +1,5 @@
+## test
+
+This package uses integration tests for testing.
+
+See `example/README.md` for more info.
diff --git a/packages/video_player/video_player_web/test/tests_exist_elsewhere_test.dart b/packages/video_player/video_player_web/test/tests_exist_elsewhere_test.dart
new file mode 100644
index 0000000..442c501
--- /dev/null
+++ b/packages/video_player/video_player_web/test/tests_exist_elsewhere_test.dart
@@ -0,0 +1,14 @@
+// Copyright 2013 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';
+
+void main() {
+  test('Tell the user where to find the real tests', () {
+    print('---');
+    print('This package uses integration_test for its tests.');
+    print('See `example/README.md` for more info.');
+    print('---');
+  });
+}
diff --git a/packages/video_player/video_player_web/test/video_player_web_test.dart b/packages/video_player/video_player_web/test/video_player_web_test.dart
deleted file mode 100644
index 1827266..0000000
--- a/packages/video_player/video_player_web/test/video_player_web_test.dart
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright 2013 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.
-
-@TestOn('browser')
-
-import 'dart:async';
-
-import 'package:flutter/services.dart';
-import 'package:flutter/widgets.dart';
-import 'package:flutter_test/flutter_test.dart';
-import 'package:video_player_platform_interface/video_player_platform_interface.dart';
-import 'package:video_player_web/video_player_web.dart';
-
-void main() {
-  group('VideoPlayer for Web', () {
-    late int textureId;
-
-    setUp(() async {
-      VideoPlayerPlatform.instance = VideoPlayerPlugin();
-      textureId = (await VideoPlayerPlatform.instance.create(
-        DataSource(
-            sourceType: DataSourceType.network,
-            uri:
-                'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4'),
-      ))!;
-    });
-
-    test('$VideoPlayerPlugin is the live instance', () {
-      expect(VideoPlayerPlatform.instance, isA<VideoPlayerPlugin>());
-    });
-
-    test('can init', () {
-      expect(VideoPlayerPlatform.instance.init(), completes);
-    });
-
-    test('can create from network', () {
-      expect(
-          VideoPlayerPlatform.instance.create(
-            DataSource(
-                sourceType: DataSourceType.network,
-                uri:
-                    'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4'),
-          ),
-          completion(isNonZero));
-    });
-
-    test('can create from asset', () {
-      expect(
-          VideoPlayerPlatform.instance.create(
-            DataSource(
-              sourceType: DataSourceType.asset,
-              asset: 'videos/bee.mp4',
-              package: 'bee_vids',
-            ),
-          ),
-          completion(isNonZero));
-    });
-
-    test('cannot create from file', () {
-      expect(
-          VideoPlayerPlatform.instance.create(
-            DataSource(
-              sourceType: DataSourceType.file,
-              uri: '/videos/bee.mp4',
-            ),
-          ),
-          throwsUnimplementedError);
-    });
-
-    test('can dispose', () {
-      expect(VideoPlayerPlatform.instance.dispose(textureId), completes);
-    });
-
-    test('can set looping', () {
-      expect(
-          VideoPlayerPlatform.instance.setLooping(textureId, true), completes);
-    });
-
-    test('can play', () async {
-      // Mute video to allow autoplay (See https://goo.gl/xX8pDD)
-      await VideoPlayerPlatform.instance.setVolume(textureId, 0);
-      expect(VideoPlayerPlatform.instance.play(textureId), completes);
-    });
-
-    test('throws PlatformException when playing bad media', () async {
-      int videoPlayerId = (await VideoPlayerPlatform.instance.create(
-        DataSource(
-            sourceType: DataSourceType.network,
-            uri:
-                'https://flutter.github.io/assets-for-api-docs/assets/videos/_non_existent_video.mp4'),
-      ))!;
-
-      Stream<VideoEvent> eventStream =
-          VideoPlayerPlatform.instance.videoEventsFor(videoPlayerId);
-
-      // Mute video to allow autoplay (See https://goo.gl/xX8pDD)
-      await VideoPlayerPlatform.instance.setVolume(videoPlayerId, 0);
-      await VideoPlayerPlatform.instance.play(videoPlayerId);
-
-      expect(() async {
-        await eventStream.last;
-      }, throwsA(isA<PlatformException>()));
-    });
-
-    test('can pause', () {
-      expect(VideoPlayerPlatform.instance.pause(textureId), completes);
-    });
-
-    test('can set volume', () {
-      expect(VideoPlayerPlatform.instance.setVolume(textureId, 0.8), completes);
-    });
-
-    test('can set playback speed', () {
-      expect(
-        VideoPlayerPlatform.instance.setPlaybackSpeed(textureId, 2.0),
-        completes,
-      );
-    });
-
-    test('can seek to position', () {
-      expect(
-          VideoPlayerPlatform.instance.seekTo(textureId, Duration(seconds: 1)),
-          completes);
-    });
-
-    test('can get position', () {
-      expect(VideoPlayerPlatform.instance.getPosition(textureId),
-          completion(isInstanceOf<Duration>()));
-    });
-
-    test('can get video event stream', () {
-      expect(VideoPlayerPlatform.instance.videoEventsFor(textureId),
-          isInstanceOf<Stream<VideoEvent>>());
-    });
-
-    test('can build view', () {
-      expect(VideoPlayerPlatform.instance.buildView(textureId),
-          isInstanceOf<Widget>());
-    });
-
-    test('ignores setting mixWithOthers', () {
-      expect(VideoPlayerPlatform.instance.setMixWithOthers(true), completes);
-      expect(VideoPlayerPlatform.instance.setMixWithOthers(false), completes);
-    });
-  });
-}