Skip to content

Commit 3755fd1

Browse files
authored
[web] Remove HTML renderer from framework tests (#162038)
- Cleanup many HTML special cases and skips in framework tests. - Update some dartdocs that referred to the HTML renderer. For reviewers: it may help if you set `Hide whitespace` to true in Github. It will help you skip through all the formatting/indentation changes.
1 parent b82e902 commit 3755fd1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+944
-1340
lines changed

packages/flutter/lib/src/material/ink_sparkle.dart

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@ import 'material.dart';
2222
/// Begin a Material 3 ink sparkle ripple, centered at the tap or click position
2323
/// relative to the [referenceBox].
2424
///
25-
/// This effect relies on a shader and therefore is unsupported on the Flutter
26-
/// Web HTML backend.
27-
///
2825
/// To use this effect, pass an instance of [splashFactory] to the
2926
/// `splashFactory` parameter of either the Material [ThemeData] or any
3027
/// component that has a `splashFactory` parameter, such as buttons:

packages/flutter/lib/src/material/page_transitions_theme.dart

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -335,9 +335,8 @@ class _ZoomEnterTransition extends StatefulWidget {
335335

336336
class _ZoomEnterTransitionState extends State<_ZoomEnterTransition>
337337
with _ZoomTransitionBase<_ZoomEnterTransition> {
338-
// See SnapshotWidget doc comment, this is disabled on web because the HTML backend doesn't
339-
// support this functionality and the canvaskit backend uses a single thread for UI and raster
340-
// work which diminishes the impact of this performance improvement.
338+
// See SnapshotWidget doc comment, this is disabled on web because the canvaskit backend uses a
339+
// single thread for UI and raster work which diminishes the impact of this performance improvement.
341340
@override
342341
bool get useSnapshot => !kIsWeb && widget.allowSnapshotting;
343342

@@ -447,9 +446,8 @@ class _ZoomExitTransitionState extends State<_ZoomExitTransition>
447446
with _ZoomTransitionBase<_ZoomExitTransition> {
448447
late _ZoomExitTransitionPainter delegate;
449448

450-
// See SnapshotWidget doc comment, this is disabled on web because the HTML backend doesn't
451-
// support this functionality and the canvaskit backend uses a single thread for UI and raster
452-
// work which diminishes the impact of this performance improvement.
449+
// See SnapshotWidget doc comment, this is disabled on web because the canvaskit backend uses a
450+
// single thread for UI and raster work which diminishes the impact of this performance improvement.
453451
@override
454452
bool get useSnapshot => !kIsWeb && widget.allowSnapshotting;
455453

packages/flutter/lib/src/widgets/snapshot_widget.dart

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,8 @@ class SnapshotController extends ChangeNotifier {
9999
/// defaults to [SnapshotMode.normal] which will throw an exception if a
100100
/// platform view is encountered.
101101
///
102-
/// * The snapshotting functionality of this widget is not supported on the HTML
103-
/// backend of Flutter for the Web. Setting [SnapshotController.allowSnapshotting] to true
104-
/// may cause an error to be thrown. On the CanvasKit backend of Flutter, the
105-
/// performance of using this widget may regress performance due to the fact
106-
/// that both the UI and engine share a single thread.
102+
/// * On the CanvasKit backend of Flutter, the performance of using this widget may regress
103+
/// performance due to the fact that both the UI and engine share a single thread.
107104
class SnapshotWidget extends SingleChildRenderObjectWidget {
108105
/// Create a new [SnapshotWidget].
109106
///

packages/flutter/test/cupertino/date_picker_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ import 'dart:math' as math;
1212
import 'dart:ui';
1313

1414
import 'package:flutter/cupertino.dart';
15-
import 'package:flutter/foundation.dart' show isCanvasKit;
15+
import 'package:flutter/foundation.dart' show isSkwasm;
1616
import 'package:flutter/material.dart';
1717
import 'package:flutter/rendering.dart';
1818
import 'package:flutter_test/flutter_test.dart';
1919

2020
import '../impeller_test_helpers.dart';
2121

2222
// TODO(yjbanov): on the web text rendered with perspective produces flaky goldens: https://github.com/flutter/flutter/issues/110785
23-
final bool skipPerspectiveTextGoldens = isBrowser && !isCanvasKit;
23+
final bool skipPerspectiveTextGoldens = isBrowser && isSkwasm;
2424

2525
// A number of the hit tests below say "warnIfMissed: false". This is because
2626
// the way the CupertinoPicker works, the hits don't actually reach the labels,

packages/flutter/test/cupertino/dialog_test.dart

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -928,10 +928,7 @@ void main() {
928928
// regular font. However, when using the test font, "Cancel" becomes 2 lines which
929929
// is why the height we're verifying for "Cancel" is larger than "OK".
930930

931-
if (!kIsWeb || isSkiaWeb) {
932-
// https://github.com/flutter/flutter/issues/99933
933-
expect(tester.getSize(find.text('The Title')), equals(const Size(270.0, 132.0)));
934-
}
931+
expect(tester.getSize(find.text('The Title')), equals(const Size(270.0, 132.0)));
935932
expect(tester.getTopLeft(find.text('The Title')), equals(const Offset(265.0, 80.0 + 24.0)));
936933
expect(
937934
tester.getSize(find.widgetWithText(CupertinoDialogAction, 'Cancel')),

packages/flutter/test/cupertino/text_selection_toolbar_test.dart

Lines changed: 29 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -109,50 +109,45 @@ void main() {
109109
);
110110
}
111111

112-
testWidgets(
113-
'chevrons point to the correct side',
114-
(WidgetTester tester) async {
115-
// Add enough TestBoxes to need 3 pages.
116-
final List<Widget> children = List<Widget>.generate(15, (int i) => const TestBox());
117-
await tester.pumpWidget(
118-
CupertinoApp(
119-
home: Center(
120-
child: CupertinoTextSelectionToolbar(
121-
anchorAbove: const Offset(50.0, 100.0),
122-
anchorBelow: const Offset(50.0, 200.0),
123-
children: children,
124-
),
112+
testWidgets('chevrons point to the correct side', (WidgetTester tester) async {
113+
// Add enough TestBoxes to need 3 pages.
114+
final List<Widget> children = List<Widget>.generate(15, (int i) => const TestBox());
115+
await tester.pumpWidget(
116+
CupertinoApp(
117+
home: Center(
118+
child: CupertinoTextSelectionToolbar(
119+
anchorAbove: const Offset(50.0, 100.0),
120+
anchorBelow: const Offset(50.0, 200.0),
121+
children: children,
125122
),
126123
),
127-
);
124+
),
125+
);
128126

129-
expect(findOverflowBackButton(), findsNothing);
130-
expect(findOverflowNextButton(), findsOneWidget);
127+
expect(findOverflowBackButton(), findsNothing);
128+
expect(findOverflowNextButton(), findsOneWidget);
131129

132-
expect(findOverflowNextButton(), overflowNextPaintPattern());
130+
expect(findOverflowNextButton(), overflowNextPaintPattern());
133131

134-
// Tap the overflow next button to show the next page of children.
135-
await tester.tapAt(tester.getCenter(findOverflowNextButton()));
136-
await tester.pumpAndSettle();
132+
// Tap the overflow next button to show the next page of children.
133+
await tester.tapAt(tester.getCenter(findOverflowNextButton()));
134+
await tester.pumpAndSettle();
137135

138-
expect(findOverflowBackButton(), findsOneWidget);
139-
expect(findOverflowNextButton(), findsOneWidget);
136+
expect(findOverflowBackButton(), findsOneWidget);
137+
expect(findOverflowNextButton(), findsOneWidget);
140138

141-
expect(findOverflowBackButton(), overflowBackPaintPattern());
142-
expect(findOverflowNextButton(), overflowNextPaintPattern());
139+
expect(findOverflowBackButton(), overflowBackPaintPattern());
140+
expect(findOverflowNextButton(), overflowNextPaintPattern());
143141

144-
// Tap the overflow next button to show the last page of children.
145-
await tester.tapAt(tester.getCenter(findOverflowNextButton()));
146-
await tester.pumpAndSettle();
142+
// Tap the overflow next button to show the last page of children.
143+
await tester.tapAt(tester.getCenter(findOverflowNextButton()));
144+
await tester.pumpAndSettle();
147145

148-
expect(findOverflowBackButton(), findsOneWidget);
149-
expect(findOverflowNextButton(), findsNothing);
146+
expect(findOverflowBackButton(), findsOneWidget);
147+
expect(findOverflowNextButton(), findsNothing);
150148

151-
expect(findOverflowBackButton(), overflowBackPaintPattern());
152-
},
153-
// Path.combine is not implemented in the HTML backend https://github.com/flutter/flutter/issues/44572
154-
skip: kIsWeb,
155-
);
149+
expect(findOverflowBackButton(), overflowBackPaintPattern());
150+
});
156151

157152
testWidgets('paginates children if they overflow', (WidgetTester tester) async {
158153
late StateSetter setState;

packages/flutter/test/material/about_test.dart

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,7 @@ void main() {
479479
tester.getTopLeft(find.text('Licenses')),
480480
const Offset(16.0 + safeareaPadding, 14.0 + safeareaPadding),
481481
);
482-
}, skip: kIsWeb && !isSkiaWeb); // https://github.com/flutter/flutter/issues/99933
482+
});
483483

484484
testWidgets('LicensePage returns early if unmounted', (WidgetTester tester) async {
485485
final Completer<LicenseEntry> licenseCompleter = Completer<LicenseEntry>();
@@ -1464,10 +1464,7 @@ void main() {
14641464
// If the layout width is less than 840.0 pixels, nested layout is
14651465
// used which positions license page title at the top center.
14661466
Offset titleOffset = tester.getCenter(find.text(title));
1467-
if (!kIsWeb || isSkiaWeb) {
1468-
// https://github.com/flutter/flutter/issues/99933
1469-
expect(titleOffset, Offset(defaultSize.width / 2, 96.0));
1470-
}
1467+
expect(titleOffset, Offset(defaultSize.width / 2, 96.0));
14711468
expect(tester.getCenter(find.byType(ListView)), Offset(defaultSize.width / 2, 328.0));
14721469

14731470
// Configure a wide window to show the lateral UI.
@@ -1588,10 +1585,7 @@ void main() {
15881585
// If the layout width is less than 840.0 pixels, nested layout is
15891586
// used which positions license page title at the top center.
15901587
Offset titleOffset = tester.getCenter(find.text(title));
1591-
if (!kIsWeb || isSkiaWeb) {
1592-
// https://github.com/flutter/flutter/issues/99933
1593-
expect(titleOffset, Offset(defaultSize.width / 2, 96.0));
1594-
}
1588+
expect(titleOffset, Offset(defaultSize.width / 2, 96.0));
15951589
expect(tester.getCenter(find.byType(ListView)), Offset(defaultSize.width / 2, 328.0));
15961590

15971591
// Configure a wide window to show the lateral UI.

packages/flutter/test/material/app_bar_sliver_test.dart

Lines changed: 34 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'package:flutter/foundation.dart';
65
import 'package:flutter/material.dart';
76
import 'package:flutter/rendering.dart';
87
import 'package:flutter_test/flutter_test.dart';
@@ -241,7 +240,7 @@ void main() {
241240
await tester.pumpWidget(buildAppBar(textScaleFactor: 3.0));
242241
expect(tester.getRect(expandedTitle).height, 43.0);
243242
verifyTextNotClipped(expandedTitle, tester);
244-
}, skip: kIsWeb && !isSkiaWeb); // https://github.com/flutter/flutter/issues/99933
243+
});
245244

246245
testWidgets('SliverAppBar.large expanded title has upper limit on text scaling', (
247246
WidgetTester tester,
@@ -275,46 +274,44 @@ void main() {
275274

276275
await tester.pumpWidget(buildAppBar(textScaleFactor: 3.0));
277276
expect(tester.getRect(expandedTitle).height, closeTo(48.0, 0.1));
278-
}, skip: kIsWeb && !isSkiaWeb); // https://github.com/flutter/flutter/issues/99933
279-
280-
testWidgets(
281-
'SliverAppBar.medium expanded title position is adjusted with textScaleFactor',
282-
(WidgetTester tester) async {
283-
const String title = 'Medium AppBar';
284-
Widget buildAppBar({double textScaleFactor = 1.0}) {
285-
return MaterialApp(
286-
theme: ThemeData(useMaterial3: true),
287-
home: MediaQuery.withClampedTextScaling(
288-
minScaleFactor: textScaleFactor,
289-
maxScaleFactor: textScaleFactor,
290-
child: Material(
291-
child: CustomScrollView(
292-
slivers: <Widget>[
293-
const SliverAppBar.medium(title: Text(title, maxLines: 1)),
294-
SliverToBoxAdapter(child: Container(height: 1200, color: Colors.orange[400])),
295-
],
296-
),
277+
});
278+
279+
testWidgets('SliverAppBar.medium expanded title position is adjusted with textScaleFactor', (
280+
WidgetTester tester,
281+
) async {
282+
const String title = 'Medium AppBar';
283+
Widget buildAppBar({double textScaleFactor = 1.0}) {
284+
return MaterialApp(
285+
theme: ThemeData(useMaterial3: true),
286+
home: MediaQuery.withClampedTextScaling(
287+
minScaleFactor: textScaleFactor,
288+
maxScaleFactor: textScaleFactor,
289+
child: Material(
290+
child: CustomScrollView(
291+
slivers: <Widget>[
292+
const SliverAppBar.medium(title: Text(title, maxLines: 1)),
293+
SliverToBoxAdapter(child: Container(height: 1200, color: Colors.orange[400])),
294+
],
297295
),
298296
),
299-
);
300-
}
297+
),
298+
);
299+
}
301300

302-
await tester.pumpWidget(buildAppBar());
301+
await tester.pumpWidget(buildAppBar());
303302

304-
final Finder expandedTitle = find.text(title).first;
305-
expect(tester.getBottomLeft(expandedTitle).dy, 96.0);
306-
verifyTextNotClipped(expandedTitle, tester);
303+
final Finder expandedTitle = find.text(title).first;
304+
expect(tester.getBottomLeft(expandedTitle).dy, 96.0);
305+
verifyTextNotClipped(expandedTitle, tester);
307306

308-
await tester.pumpWidget(buildAppBar(textScaleFactor: 2.0));
309-
expect(tester.getBottomLeft(expandedTitle).dy, 107.0);
310-
verifyTextNotClipped(expandedTitle, tester);
307+
await tester.pumpWidget(buildAppBar(textScaleFactor: 2.0));
308+
expect(tester.getBottomLeft(expandedTitle).dy, 107.0);
309+
verifyTextNotClipped(expandedTitle, tester);
311310

312-
await tester.pumpWidget(buildAppBar(textScaleFactor: 3.0));
313-
expect(tester.getBottomLeft(expandedTitle).dy, 107.0);
314-
verifyTextNotClipped(expandedTitle, tester);
315-
},
316-
skip: kIsWeb && !isSkiaWeb, // https://github.com/flutter/flutter/issues/99933
317-
);
311+
await tester.pumpWidget(buildAppBar(textScaleFactor: 3.0));
312+
expect(tester.getBottomLeft(expandedTitle).dy, 107.0);
313+
verifyTextNotClipped(expandedTitle, tester);
314+
});
318315

319316
testWidgets('SliverAppBar.large expanded title position is adjusted with textScaleFactor', (
320317
WidgetTester tester,
@@ -1264,9 +1261,7 @@ void main() {
12641261
// Test the expanded title is positioned correctly.
12651262
final Offset titleOffset = tester.getBottomLeft(expandedTitle);
12661263
expect(titleOffset.dx, 16.0);
1267-
if (!kIsWeb || isSkiaWeb) {
1268-
expect(titleOffset.dy, 96.0);
1269-
}
1264+
expect(titleOffset.dy, 96.0);
12701265

12711266
verifyTextNotClipped(expandedTitle, tester);
12721267

packages/flutter/test/material/badge_test.dart

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'package:flutter/foundation.dart';
65
import 'package:flutter/material.dart';
76
import 'package:flutter/rendering.dart';
87
import 'package:flutter_test/flutter_test.dart';
@@ -42,10 +41,7 @@ void main() {
4241
expect(tester.getSize(find.byType(Badge)), const Size(24, 24)); // default Icon size
4342
expect(tester.getTopLeft(find.byType(Badge)), Offset.zero);
4443

45-
if (!kIsWeb || isSkiaWeb) {
46-
// https://github.com/flutter/flutter/issues/99933
47-
expect(tester.getTopLeft(find.text('0')), const Offset(16, -4));
48-
}
44+
expect(tester.getTopLeft(find.text('0')), const Offset(16, -4));
4945

5046
final RenderBox box = tester.renderObject(find.byType(Badge));
5147
final RRect rrect = RRect.fromLTRBR(12, -4, 31.5, 12, const Radius.circular(8));
@@ -82,10 +78,7 @@ void main() {
8278
expect(tester.getSize(find.byType(Badge)), const Size(24, 24)); // default Icon size
8379
expect(tester.getTopLeft(find.byType(Badge)), Offset.zero);
8480

85-
if (!kIsWeb || isSkiaWeb) {
86-
// https://github.com/flutter/flutter/issues/99933
87-
expect(tester.getTopLeft(find.text('0')), const Offset(0, -4));
88-
}
81+
expect(tester.getTopLeft(find.text('0')), const Offset(0, -4));
8982

9083
final RenderBox box = tester.renderObject(find.byType(Badge));
9184
final RRect rrect = RRect.fromLTRBR(-4, -4, 15.5, 12, const Radius.circular(8));
@@ -132,10 +125,7 @@ void main() {
132125

133126
// x = alignment.start + padding.left
134127
// y = alignment.top
135-
if (!kIsWeb || isSkiaWeb) {
136-
// https://github.com/flutter/flutter/issues/99933
137-
expect(tester.getTopLeft(find.text('0')), const Offset(16, -4));
138-
}
128+
expect(tester.getTopLeft(find.text('0')), const Offset(16, -4));
139129

140130
final RenderBox box = tester.renderObject(find.byType(Badge));
141131
// '0'.width = 12

packages/flutter/test/material/banner_test.dart

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'package:flutter/foundation.dart';
65
import 'package:flutter/material.dart';
76
import 'package:flutter/rendering.dart';
87
import 'package:flutter_test/flutter_test.dart';
@@ -258,29 +257,17 @@ void main() {
258257
await tester.pumpWidget(buildApp(textScaler: TextScaler.noScaling));
259258
expect(find.text(label), findsOneWidget);
260259

261-
if (!kIsWeb || isSkiaWeb) {
262-
// https://github.com/flutter/flutter/issues/99933
263-
expect(tester.getSize(find.text(label)), const Size(14.25, 20.0));
264-
}
260+
expect(tester.getSize(find.text(label)), const Size(14.25, 20.0));
265261

266262
await tester.pumpWidget(buildApp(textScaler: const TextScaler.linear(1.1)));
267263
await tester.pumpAndSettle();
268-
if (!kIsWeb || isSkiaWeb) {
269-
// https://github.com/flutter/flutter/issues/99933
270-
expect(_sizeAlmostEqual(tester.getSize(find.text(label)), const Size(15.65, 22.0)), true);
271-
}
264+
expect(_sizeAlmostEqual(tester.getSize(find.text(label)), const Size(15.65, 22.0)), true);
272265

273266
await tester.pumpWidget(buildApp(textScaler: const TextScaler.linear(1.5)));
274-
if (!kIsWeb || isSkiaWeb) {
275-
// https://github.com/flutter/flutter/issues/99933
276-
expect(_sizeAlmostEqual(tester.getSize(find.text(label)), const Size(21.25, 30)), true);
277-
}
267+
expect(_sizeAlmostEqual(tester.getSize(find.text(label)), const Size(21.25, 30)), true);
278268

279269
await tester.pumpWidget(buildApp(textScaler: const TextScaler.linear(4)));
280-
if (!kIsWeb || isSkiaWeb) {
281-
// https://github.com/flutter/flutter/issues/99933
282-
expect(_sizeAlmostEqual(tester.getSize(find.text(label)), const Size(21.25, 30)), true);
283-
}
270+
expect(_sizeAlmostEqual(tester.getSize(find.text(label)), const Size(21.25, 30)), true);
284271
});
285272

286273
group('MaterialBanner elevation', () {

0 commit comments

Comments
 (0)