[web] Remove HTML from bots, test suites and e2e tests (#161537)

- Stop running framework tests in HTML mode in CI.
- Update some READMEs
- Remove HTML-specific integration tests
This commit is contained in:
Mouad Debbar 2025-01-22 13:50:46 -05:00 committed by GitHub
parent 74ab593738
commit f2e6dbc567
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 32 additions and 285 deletions

192
.ci.yaml
View File

@ -1723,198 +1723,6 @@ targets:
- engine/**
- DEPS
- name: Linux web_tests_0
recipe: flutter/flutter_drone
timeout: 60
properties:
dependencies: >-
[
{"dependency": "android_sdk", "version": "version:35v1"},
{"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"},
{"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}
]
shard: web_tests
subshard: "0"
tags: >
["framework", "hostonly", "shard", "linux"]
# Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
presubmit_max_attempts: "2"
runIf:
- dev/**
- packages/**
- bin/**
- .ci.yaml
- engine/**
- DEPS
- name: Linux web_tests_1
recipe: flutter/flutter_drone
timeout: 60
properties:
dependencies: >-
[
{"dependency": "android_sdk", "version": "version:35v1"},
{"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"},
{"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}
]
shard: web_tests
subshard: "1"
tags: >
["framework", "hostonly", "shard", "linux"]
# Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
presubmit_max_attempts: "2"
runIf:
- dev/**
- packages/**
- bin/**
- .ci.yaml
- engine/**
- DEPS
- name: Linux web_tests_2
recipe: flutter/flutter_drone
timeout: 60
properties:
dependencies: >-
[
{"dependency": "android_sdk", "version": "version:35v1"},
{"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"},
{"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}
]
shard: web_tests
subshard: "2"
tags: >
["framework", "hostonly", "shard", "linux"]
# Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
presubmit_max_attempts: "2"
runIf:
- dev/**
- packages/**
- bin/**
- .ci.yaml
- engine/**
- DEPS
- name: Linux web_tests_3
recipe: flutter/flutter_drone
timeout: 60
properties:
dependencies: >-
[
{"dependency": "android_sdk", "version": "version:35v1"},
{"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"},
{"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}
]
shard: web_tests
subshard: "3"
tags: >
["framework", "hostonly", "shard", "linux"]
# Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
presubmit_max_attempts: "2"
runIf:
- dev/**
- packages/**
- bin/**
- .ci.yaml
- engine/**
- DEPS
- name: Linux web_tests_4
recipe: flutter/flutter_drone
timeout: 60
properties:
dependencies: >-
[
{"dependency": "android_sdk", "version": "version:35v1"},
{"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"},
{"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}
]
shard: web_tests
subshard: "4"
tags: >
["framework", "hostonly", "shard", "linux"]
# Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
presubmit_max_attempts: "2"
runIf:
- dev/**
- packages/**
- bin/**
- .ci.yaml
- engine/**
- DEPS
- name: Linux web_tests_5
recipe: flutter/flutter_drone
timeout: 60
properties:
dependencies: >-
[
{"dependency": "android_sdk", "version": "version:35v1"},
{"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"},
{"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}
]
shard: web_tests
subshard: "5"
tags: >
["framework", "hostonly", "shard", "linux"]
# Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
presubmit_max_attempts: "2"
runIf:
- dev/**
- packages/**
- bin/**
- .ci.yaml
- engine/**
- DEPS
- name: Linux web_tests_6
recipe: flutter/flutter_drone
timeout: 60
properties:
dependencies: >-
[
{"dependency": "android_sdk", "version": "version:35v1"},
{"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"},
{"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}
]
shard: web_tests
subshard: "6"
tags: >
["framework", "hostonly", "shard", "linux"]
# Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
presubmit_max_attempts: "2"
runIf:
- dev/**
- packages/**
- bin/**
- .ci.yaml
- engine/**
- DEPS
- name: Linux web_tests_7_last
recipe: flutter/flutter_drone
timeout: 60
properties:
dependencies: >-
[
{"dependency": "android_sdk", "version": "version:35v1"},
{"dependency": "chrome_and_driver", "version": "version:125.0.6422.141"},
{"dependency": "goldctl", "version": "git_revision:2387d6fff449587eecbb7e45b2692ca0710b63b9"}
]
shard: web_tests
subshard: "7_last"
tags: >
["framework", "hostonly", "shard", "linux"]
# Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
presubmit_max_attempts: "2"
runIf:
- dev/**
- packages/**
- bin/**
- .ci.yaml
- engine/**
- DEPS
- name: Linux web_canvaskit_tests_0
recipe: flutter/flutter_drone
timeout: 60

View File

@ -345,6 +345,5 @@
# web_canvaskit_tests @yjbanov @flutter/web
# web_integration_tests @yjbanov @flutter/web
# web_long_running_tests @yjbanov @flutter/web
# web_tests @yjbanov @flutter/web
# web_skwasm_tests @eyebrowsoffire @flutter/web
# web_tool_tests @yjbanov @flutter/tool

View File

@ -121,8 +121,8 @@ Example:
```sh
cd dev/benchmarks/macrobenchmarks
# Runs in profile mode using the CanvasKit renderer
flutter run --web-renderer=canvaskit --profile -d web-server lib/web_benchmarks.dart
# Runs in profile mode
flutter run --profile -d web-server lib/web_benchmarks.dart
```
You can also run all benchmarks exactly as the devicelab runs them:

View File

@ -49,12 +49,6 @@ class WebTestsSuite {
//
// TODO(yjbanov): we're getting rid of this as part of https://github.com/flutter/flutter/projects/60
static const Map<String, List<String>> kWebTestFileKnownFailures = <String, List<String>>{
'html': <String>[
// These tests are not compilable on the web due to dependencies on
// VM-specific functionality.
'test/services/message_codecs_vm_test.dart',
'test/examples/sector_layout_test.dart',
],
'canvaskit': <String>[
// These tests are not compilable on the web due to dependencies on
// VM-specific functionality.
@ -148,48 +142,58 @@ class WebTestsSuite {
],
// This test doesn't do anything interesting w.r.t. rendering, so we don't run the full build mode x renderer matrix.
() => _runWebE2eTest('profile_diagnostics_integration', buildMode: 'debug', renderer: 'html'),
() => _runWebE2eTest(
'profile_diagnostics_integration',
buildMode: 'debug',
renderer: 'canvaskit',
),
() => _runWebE2eTest(
'profile_diagnostics_integration',
buildMode: 'profile',
renderer: 'canvaskit',
),
() =>
_runWebE2eTest('profile_diagnostics_integration', buildMode: 'release', renderer: 'html'),
() => _runWebE2eTest(
'profile_diagnostics_integration',
buildMode: 'release',
renderer: 'canvaskit',
),
// This test is only known to work in debug mode.
() => _runWebE2eTest('scroll_wheel_integration', buildMode: 'debug', renderer: 'html'),
() => _runWebE2eTest('scroll_wheel_integration', buildMode: 'debug', renderer: 'canvaskit'),
// This test doesn't do anything interesting w.r.t. rendering, so we don't run the full build mode x renderer matrix.
// These tests have been extremely flaky, so we are temporarily disabling them until we figure out how to make them more robust.
() => _runWebE2eTest('text_editing_integration', buildMode: 'debug', renderer: 'canvaskit'),
() => _runWebE2eTest('text_editing_integration', buildMode: 'profile', renderer: 'html'),
() => _runWebE2eTest('text_editing_integration', buildMode: 'release', renderer: 'html'),
() => _runWebE2eTest('text_editing_integration', buildMode: 'profile', renderer: 'canvaskit'),
() => _runWebE2eTest('text_editing_integration', buildMode: 'release', renderer: 'canvaskit'),
// This test doesn't do anything interesting w.r.t. rendering, so we don't run the full build mode x renderer matrix.
() => _runWebE2eTest('url_strategy_integration', buildMode: 'debug', renderer: 'html'),
() => _runWebE2eTest('url_strategy_integration', buildMode: 'debug', renderer: 'canvaskit'),
() => _runWebE2eTest('url_strategy_integration', buildMode: 'profile', renderer: 'canvaskit'),
() => _runWebE2eTest('url_strategy_integration', buildMode: 'release', renderer: 'html'),
() => _runWebE2eTest('url_strategy_integration', buildMode: 'release', renderer: 'canvaskit'),
// This test doesn't do anything interesting w.r.t. rendering, so we don't run the full build mode x renderer matrix.
() => _runWebE2eTest(
'capabilities_integration_canvaskit',
buildMode: 'debug',
renderer: 'auto',
renderer: 'canvaskit',
),
() => _runWebE2eTest(
'capabilities_integration_canvaskit',
buildMode: 'profile',
renderer: 'canvaskit',
),
() => _runWebE2eTest('capabilities_integration_html', buildMode: 'release', renderer: 'html'),
() => _runWebE2eTest(
'capabilities_integration_canvaskit',
buildMode: 'release',
renderer: 'canvaskit',
),
// This test doesn't do anything interesting w.r.t. rendering, so we don't run the full build mode x renderer matrix.
// CacheWidth and CacheHeight are only currently supported in CanvasKit mode, so we don't run the test in HTML mode.
() => _runWebE2eTest(
'cache_width_cache_height_integration',
buildMode: 'debug',
renderer: 'auto',
renderer: 'canvaskit',
),
() => _runWebE2eTest(
'cache_width_cache_height_integration',
@ -203,14 +207,11 @@ class WebTestsSuite {
testAppDirectory: path.join(flutterRoot, 'examples', 'hello_world'),
target: 'test_driver/smoke_web_engine.dart',
buildMode: 'profile',
webRenderer: 'auto',
webRenderer: 'canvaskit',
),
() => _runGalleryE2eWebTest('debug'),
() => _runGalleryE2eWebTest('debug', canvasKit: true),
() => _runGalleryE2eWebTest('profile'),
() => _runGalleryE2eWebTest('profile', canvasKit: true),
() => _runGalleryE2eWebTest('release'),
() => _runGalleryE2eWebTest('release', canvasKit: true),
() =>
runWebServiceWorkerTest(headless: true, testType: ServiceWorkerTestType.withoutFlutterJs),
() => runWebServiceWorkerTest(headless: true, testType: ServiceWorkerTestType.withFlutterJs),
@ -284,12 +285,6 @@ class WebTestsSuite {
() => _runWebReleaseTest('lib/assertion_test.dart'),
() => _runWebDebugTest('lib/sound_mode.dart'),
() => _runWebReleaseTest('lib/sound_mode.dart'),
() => _runFlutterWebTest(
'html',
path.join(flutterRoot, 'packages', 'integration_test'),
<String>['test/web_extension_test.dart'],
false,
),
() => _runFlutterWebTest(
'canvaskit',
path.join(flutterRoot, 'packages', 'integration_test'),
@ -313,10 +308,6 @@ class WebTestsSuite {
await _stopChromeDriver();
}
Future<void> runWebHtmlUnitTests() {
return _runWebUnitTests('html', false);
}
Future<void> runWebCanvasKitUnitTests() {
return _runWebUnitTests('canvaskit', false);
}
@ -370,7 +361,6 @@ class WebTestsSuite {
'-d',
'web-server',
'--$buildMode',
// '--web-renderer=$webRenderer',
if (webRenderer == 'skwasm') ...<String>[
// See: WebRendererMode.dartDefines[skwasm]
'--dart-define=FLUTTER_WEB_USE_SKIA=false',
@ -381,11 +371,6 @@ class WebTestsSuite {
'--dart-define=FLUTTER_WEB_USE_SKIA=true',
'--dart-define=FLUTTER_WEB_USE_SKWASM=false',
],
if (webRenderer == 'html') ...<String>[
// See: WebRendererMode.dartDefines[html]
'--dart-define=FLUTTER_WEB_USE_SKIA=false',
'--dart-define=FLUTTER_WEB_USE_SKWASM=false',
],
],
expectNonZeroExit: expectFailure,
workingDirectory: testAppDirectory,
@ -478,20 +463,11 @@ class WebTestsSuite {
///
/// This is not a performance test.
///
/// If [canvasKit] is set to true, runs the test in CanvasKit mode.
///
/// The test is written using `package:integration_test` (despite the "e2e" in
/// the name, which is there for historic reasons).
Future<void> _runGalleryE2eWebTest(String buildMode, {bool canvasKit = false}) async {
// TODO(yjbanov): this is temporarily disabled due to https://github.com/flutter/flutter/issues/147731
if (buildMode == 'debug' && canvasKit) {
print(
'SKIPPED: Gallery e2e web test in debug CanvasKit mode due to https://github.com/flutter/flutter/issues/147731',
);
return;
}
Future<void> _runGalleryE2eWebTest(String buildMode) async {
printProgress(
'${green}Running flutter_gallery integration test in --$buildMode using ${canvasKit ? 'CanvasKit' : 'HTML'} renderer.$reset',
'${green}Running flutter_gallery integration test in --$buildMode using CanvasKit renderer.$reset',
);
final String testAppDirectory = path.join(
flutterRoot,
@ -505,8 +481,7 @@ class WebTestsSuite {
<String>[
...flutterTestArgs,
'drive',
if (canvasKit) '--dart-define=FLUTTER_WEB_USE_SKIA=true',
if (!canvasKit) '--dart-define=FLUTTER_WEB_USE_SKIA=false',
'--dart-define=FLUTTER_WEB_USE_SKIA=true',
'--driver=test_driver/transitions_perf_e2e_test.dart',
'--target=test_driver/transitions_perf_e2e.dart',
'--browser-name=chrome',
@ -734,7 +709,6 @@ class WebTestsSuite {
'-v',
'--platform=chrome',
if (useWasm) '--wasm',
// '--web-renderer=$webRenderer',
if (webRenderer == 'skwasm') ...<String>[
// See: WebRendererMode.dartDefines[skwasm]
'--dart-define=FLUTTER_WEB_USE_SKIA=false',
@ -745,11 +719,6 @@ class WebTestsSuite {
'--dart-define=FLUTTER_WEB_USE_SKIA=true',
'--dart-define=FLUTTER_WEB_USE_SKWASM=false',
],
if (webRenderer == 'html') ...<String>[
// See: WebRendererMode.dartDefines[html]
'--dart-define=FLUTTER_WEB_USE_SKIA=false',
'--dart-define=FLUTTER_WEB_USE_SKWASM=false',
],
'--dart-define=DART_HHH_BOT=$runningInDartHHHBot',
...flutterTestArgs,
...tests,

View File

@ -131,11 +131,9 @@ Future<void> main(List<String> args) async {
'android_preview_tool_integration_tests': androidPreviewIntegrationToolTestsRunner,
'android_java11_tool_integration_tests': androidJava11IntegrationToolTestsRunner,
'tool_host_cross_arch_tests': _runToolHostCrossArchTests,
// All the unit/widget tests run using `flutter test --platform=chrome --web-renderer=html`
'web_tests': webTestsSuite.runWebHtmlUnitTests,
// All the unit/widget tests run using `flutter test --platform=chrome --web-renderer=canvaskit`
// All the unit/widget tests run using `flutter test --platform=chrome`
'web_canvaskit_tests': webTestsSuite.runWebCanvasKitUnitTests,
// All the unit/widget tests run using `flutter test --platform=chrome --wasm --web-renderer=skwasm`
// All the unit/widget tests run using `flutter test --platform=chrome --wasm`
'web_skwasm_tests': webTestsSuite.runWebSkwasmUnitTests,
// All web integration tests
'web_long_running_tests': webTestsSuite.webLongRunningTestsRunner,

View File

@ -22,12 +22,10 @@ Here's an example of running an integration test:
flutter drive --target=test_driver/text_editing_integration.dart \
-d web-server \
--browser-name=chrome \
--profile \
--web-renderer=html
--profile
```
This example runs the test in profile mode (`--profile`) using the HTML
renderer (`--web-renderer=html`).
This example runs the test in profile mode (`--profile`).
More resources:

View File

@ -1,18 +0,0 @@
// Copyright 2014 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/foundation.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
testWidgets('capabilities are set properly in HTML mode', (WidgetTester tester) async {
await tester.pumpAndSettle();
expect(isCanvasKit, false);
expect(isSkwasm, false);
expect(isSkiaWeb, false);
});
}

View File

@ -1,7 +0,0 @@
// Copyright 2014 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' as test;
Future<void> main() async => test.integrationDriver();