[tool] Only run unit tests in Chrome for inline web (#4153)
Currently we are running Dart unit tests in Chrome for any plugin with
web support, but it should only be necessary for plugins that have an
inline web implementation, not for app-facing packages that endorse a
web implementation.
diff --git a/packages/video_player/video_player/test/video_player_test.dart b/packages/video_player/video_player/test/video_player_test.dart
index ef4f0bf..bef0298 100644
--- a/packages/video_player/video_player/test/video_player_test.dart
+++ b/packages/video_player/video_player/test/video_player_test.dart
@@ -350,12 +350,12 @@
test('file with special characters', () async {
final VideoPlayerController controller =
- VideoPlayerController.file(File('A #1 Hit?.avi'));
+ VideoPlayerController.file(File('A #1 Hit.avi'));
await controller.initialize();
final String uri = fakeVideoPlayerPlatform.dataSources[0].uri!;
expect(uri.startsWith('file:///'), true, reason: 'Actual string: $uri');
- expect(uri.endsWith('/A%20%231%20Hit%3F.avi'), true,
+ expect(uri.endsWith('/A%20%231%20Hit.avi'), true,
reason: 'Actual string: $uri');
}, skip: kIsWeb /* Web does not support file assets. */);
diff --git a/script/configs/windows_unit_tests_exceptions.yaml b/script/configs/windows_unit_tests_exceptions.yaml
index b837d56..7639608 100644
--- a/script/configs/windows_unit_tests_exceptions.yaml
+++ b/script/configs/windows_unit_tests_exceptions.yaml
@@ -11,20 +11,12 @@
# Unit tests for plugins that support web currently run in
# Chrome, which isn't currently supported by web infrastructure.
# TODO(ditman): Fix this in the repo tooling.
-- camera
- camera_web
-- file_selector
- file_selector_web
-- google_maps_flutter
- google_maps_flutter_web
-- google_sign_in
- google_sign_in_web
-- image_picker
- image_picker_for_web
-- shared_preferences
- shared_preferences_web
-- url_launcher
- url_launcher_web
-- video_player
- video_player_web
- webview_flutter_web
diff --git a/script/tool/lib/src/test_command.dart b/script/tool/lib/src/test_command.dart
index 5101b8f..5c793f6 100644
--- a/script/tool/lib/src/test_command.dart
+++ b/script/tool/lib/src/test_command.dart
@@ -66,7 +66,9 @@
'--color',
if (experiment.isNotEmpty) '--enable-experiment=$experiment',
// TODO(ditman): Remove this once all plugins are migrated to 'drive'.
- if (pluginSupportsPlatform(platformWeb, package)) '--platform=chrome',
+ if (pluginSupportsPlatform(platformWeb, package,
+ requiredMode: PlatformSupport.inline))
+ '--platform=chrome',
],
workingDir: package.directory,
);
diff --git a/script/tool/test/test_command_test.dart b/script/tool/test/test_command_test.dart
index 5d34e39..c4c655b 100644
--- a/script/tool/test/test_command_test.dart
+++ b/script/tool/test/test_command_test.dart
@@ -15,7 +15,7 @@
import 'util.dart';
void main() {
- group('$TestCommand', () {
+ group('TestCommand', () {
late FileSystem fileSystem;
late Platform mockPlatform;
late Directory packagesDir;
@@ -239,6 +239,27 @@
);
});
+ test('Does not run on Chrome for web endorsements', () async {
+ final RepositoryPackage plugin = createFakePlugin(
+ 'plugin',
+ packagesDir,
+ extraFiles: <String>['test/empty_test.dart'],
+ platformSupport: <String, PlatformDetails>{
+ platformWeb: const PlatformDetails(PlatformSupport.federated),
+ },
+ );
+
+ await runCapturingPrint(runner, <String>['test']);
+
+ expect(
+ processRunner.recordedCalls,
+ orderedEquals(<ProcessCall>[
+ ProcessCall(getFlutterCommand(mockPlatform),
+ const <String>['test', '--color'], plugin.path),
+ ]),
+ );
+ });
+
test('enable-experiment flag', () async {
final RepositoryPackage plugin = createFakePlugin('a', packagesDir,
extraFiles: <String>['test/empty_test.dart']);