From f2e6dbc56743c9f014fcf5607696a808b7928e90 Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Wed, 22 Jan 2025 13:50:46 -0500 Subject: [PATCH] [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 --- .ci.yaml | 192 ------------------ TESTOWNERS | 1 - dev/benchmarks/macrobenchmarks/README.md | 4 +- dev/bots/suite_runners/run_web_tests.dart | 83 +++----- dev/bots/test.dart | 6 +- dev/integration_tests/web_e2e_tests/README.md | 6 +- .../capabilities_integration_html.dart | 18 -- .../capabilities_integration_html_test.dart | 7 - 8 files changed, 32 insertions(+), 285 deletions(-) delete mode 100644 dev/integration_tests/web_e2e_tests/test_driver/capabilities_integration_html.dart delete mode 100644 dev/integration_tests/web_e2e_tests/test_driver/capabilities_integration_html_test.dart diff --git a/.ci.yaml b/.ci.yaml index 1e5fcbe956..549478d858 100644 --- a/.ci.yaml +++ b/.ci.yaml @@ -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 diff --git a/TESTOWNERS b/TESTOWNERS index 77699dcfdb..72a8a9355e 100644 --- a/TESTOWNERS +++ b/TESTOWNERS @@ -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 diff --git a/dev/benchmarks/macrobenchmarks/README.md b/dev/benchmarks/macrobenchmarks/README.md index b1c2e92b02..1bf1462bfe 100644 --- a/dev/benchmarks/macrobenchmarks/README.md +++ b/dev/benchmarks/macrobenchmarks/README.md @@ -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: diff --git a/dev/bots/suite_runners/run_web_tests.dart b/dev/bots/suite_runners/run_web_tests.dart index be43d38878..4af1774233 100644 --- a/dev/bots/suite_runners/run_web_tests.dart +++ b/dev/bots/suite_runners/run_web_tests.dart @@ -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> kWebTestFileKnownFailures = >{ - 'html': [ - // 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': [ // 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'), - ['test/web_extension_test.dart'], - false, - ), () => _runFlutterWebTest( 'canvaskit', path.join(flutterRoot, 'packages', 'integration_test'), @@ -313,10 +308,6 @@ class WebTestsSuite { await _stopChromeDriver(); } - Future runWebHtmlUnitTests() { - return _runWebUnitTests('html', false); - } - Future runWebCanvasKitUnitTests() { return _runWebUnitTests('canvaskit', false); } @@ -370,7 +361,6 @@ class WebTestsSuite { '-d', 'web-server', '--$buildMode', - // '--web-renderer=$webRenderer', if (webRenderer == 'skwasm') ...[ // 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') ...[ - // 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 _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 _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 { [ ...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') ...[ // 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') ...[ - // 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, diff --git a/dev/bots/test.dart b/dev/bots/test.dart index 792816f4bb..e715acaccb 100644 --- a/dev/bots/test.dart +++ b/dev/bots/test.dart @@ -131,11 +131,9 @@ Future main(List 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, diff --git a/dev/integration_tests/web_e2e_tests/README.md b/dev/integration_tests/web_e2e_tests/README.md index 9988784836..a1f87a3fce 100644 --- a/dev/integration_tests/web_e2e_tests/README.md +++ b/dev/integration_tests/web_e2e_tests/README.md @@ -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: diff --git a/dev/integration_tests/web_e2e_tests/test_driver/capabilities_integration_html.dart b/dev/integration_tests/web_e2e_tests/test_driver/capabilities_integration_html.dart deleted file mode 100644 index e15b5de9ee..0000000000 --- a/dev/integration_tests/web_e2e_tests/test_driver/capabilities_integration_html.dart +++ /dev/null @@ -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); - }); -} diff --git a/dev/integration_tests/web_e2e_tests/test_driver/capabilities_integration_html_test.dart b/dev/integration_tests/web_e2e_tests/test_driver/capabilities_integration_html_test.dart deleted file mode 100644 index b2d2a1770b..0000000000 --- a/dev/integration_tests/web_e2e_tests/test_driver/capabilities_integration_html_test.dart +++ /dev/null @@ -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 main() async => test.integrationDriver();