Reland: fix and add painting web tests (#42689)
diff --git a/dev/bots/test.dart b/dev/bots/test.dart
index 6ba5ef1..38c3725 100644
--- a/dev/bots/test.dart
+++ b/dev/bots/test.dart
@@ -443,7 +443,6 @@
'test/cupertino',
'test/examples',
'test/material',
- 'test/painting',
'test/rendering',
'test/widgets',
];
diff --git a/packages/flutter/test/painting/gradient_test.dart b/packages/flutter/test/painting/gradient_test.dart
index 6e567ae..802919b 100644
--- a/packages/flutter/test/painting/gradient_test.dart
+++ b/packages/flutter/test/painting/gradient_test.dart
@@ -813,13 +813,13 @@
for (Gradient gradient in gradients45) {
await runTest(tester, gradient, 45);
}
- });
+ }, skip: isBrowser); // TODO(yjbanov): web does not support golden tests yet: https://github.com/flutter/flutter/issues/40297
testWidgets('Gradients - 90 degrees', (WidgetTester tester) async {
for (Gradient gradient in gradients90) {
await runTest(tester, gradient, 90);
}
- });
+ }, skip: isBrowser); // TODO(yjbanov): web does not support golden tests yet: https://github.com/flutter/flutter/issues/40297
});
}
diff --git a/packages/flutter/test/painting/image_provider_test.dart b/packages/flutter/test/painting/image_provider_test.dart
index 64ca2b2..3571dcf 100644
--- a/packages/flutter/test/painting/image_provider_test.dart
+++ b/packages/flutter/test/painting/image_provider_test.dart
@@ -181,7 +181,7 @@
.having((NetworkImageLoadException e) => e.statusCode, 'statusCode', errorStatusCode)
.having((NetworkImageLoadException e) => e.uri, 'uri', Uri.base.resolve(requestUrl)),
);
- });
+ }, skip: isBrowser); // Browser implementation does not use HTTP client but a <img> tag.
test('Disallows null urls', () {
expect(() {
diff --git a/packages/flutter/test/painting/system_fonts_test.dart b/packages/flutter/test/painting/system_fonts_test.dart
index 508eeaf..1b6532f 100644
--- a/packages/flutter/test/painting/system_fonts_test.dart
+++ b/packages/flutter/test/painting/system_fonts_test.dart
@@ -91,7 +91,7 @@
expect(cache.isEmpty, isTrue);
final Element element = tester.element(find.byType(CupertinoDatePicker));
expect(element.dirty, isTrue);
- });
+ }, skip: isBrowser); // TODO(yjbanov): cupertino does not work on the Web yet: https://github.com/flutter/flutter/issues/41920
testWidgets('CupertinoDatePicker reset cache upon system fonts change - date mode', (WidgetTester tester) async {
await tester.pumpWidget(
@@ -118,7 +118,7 @@
expect(cache.isNotEmpty, isTrue);
final Element element = tester.element(find.byType(CupertinoDatePicker));
expect(element.dirty, isTrue);
- });
+ }, skip: isBrowser); // TODO(yjbanov): cupertino does not work on the Web yet: https://github.com/flutter/flutter/issues/41920
testWidgets('CupertinoDatePicker reset cache upon system fonts change - time mode', (WidgetTester tester) async {
await tester.pumpWidget(
@@ -147,7 +147,7 @@
expect(state.numberLabelBaseline - 18.400070190429688 < precisionErrorTolerance, isTrue);
final Element element = tester.element(find.byType(CupertinoTimerPicker));
expect(element.dirty, isTrue);
- });
+ }, skip: isBrowser); // TODO(yjbanov): cupertino does not work on the Web yet: https://github.com/flutter/flutter/issues/41920
testWidgets('RangeSlider relayout upon system fonts changes', (WidgetTester tester) async {
await tester.pumpWidget(
diff --git a/packages/flutter_tools/lib/src/build_runner/build_script.dart b/packages/flutter_tools/lib/src/build_runner/build_script.dart
index a6975b8..88c304d 100644
--- a/packages/flutter_tools/lib/src/build_runner/build_script.dart
+++ b/packages/flutter_tools/lib/src/build_runner/build_script.dart
@@ -277,6 +277,7 @@
// The following parameters are hard-coded in Flutter's test embedder. Since
// we don't have an embedder yet this is the lowest-most layer we can put
// this stuff in.
+ ui.debugEmulateFlutterTesterEnvironment = true;
await ui.webOnlyInitializeEngine();
// TODO(flutterweb): remove need for dynamic cast.
(ui.window as dynamic).debugOverrideDevicePixelRatio(3.0);
diff --git a/packages/flutter_web_plugins/test/plugin_event_channel_test.dart b/packages/flutter_web_plugins/test/plugin_event_channel_test.dart
index 074954a..cbbd81b 100644
--- a/packages/flutter_web_plugins/test/plugin_event_channel_test.dart
+++ b/packages/flutter_web_plugins/test/plugin_event_channel_test.dart
@@ -5,12 +5,16 @@
@TestOn('chrome') // Uses web-only Flutter SDK
import 'dart:async';
+import 'dart:ui' as ui;
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
void main() {
+ // Disabling tester emulation because this test relies on real message channel communication.
+ ui.debugEmulateFlutterTesterEnvironment = false; // ignore: undefined_prefixed_name
+
group('Plugin Event Channel', () {
setUp(() {
TestWidgetsFlutterBinding.ensureInitialized();
diff --git a/packages/flutter_web_plugins/test/plugin_registry_test.dart b/packages/flutter_web_plugins/test/plugin_registry_test.dart
index 9d779ce..a1f13f2 100644
--- a/packages/flutter_web_plugins/test/plugin_registry_test.dart
+++ b/packages/flutter_web_plugins/test/plugin_registry_test.dart
@@ -4,6 +4,8 @@
@TestOn('chrome') // Uses web-only Flutter SDK
+import 'dart:ui' as ui;
+
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
@@ -27,6 +29,9 @@
}
void main() {
+ // Disabling tester emulation because this test relies on real message channel communication.
+ ui.debugEmulateFlutterTesterEnvironment = false; // ignore: undefined_prefixed_name
+
group('Plugin Registry', () {
setUp(() {
TestWidgetsFlutterBinding.ensureInitialized();