diff --git a/.ci.yaml b/.ci.yaml index 0e7856c0d5c5e..0e80303bb165c 100644 --- a/.ci.yaml +++ b/.ci.yaml @@ -304,7 +304,7 @@ targets: {"download_emsdk": true} dependencies: >- [ - {"dependency": "chrome_and_driver", "version": "version:111.0"}, + {"dependency": "chrome_and_driver", "version": "version:111.0a"}, {"dependency": "curl", "version": "version:7.64.0"} ] framework: "true" diff --git a/ci/builders/linux_web_engine.json b/ci/builders/linux_web_engine.json index 351a6777614e3..ddb871b0076c6 100644 --- a/ci/builders/linux_web_engine.json +++ b/ci/builders/linux_web_engine.json @@ -365,7 +365,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -401,7 +401,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -437,7 +437,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -473,7 +473,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -509,7 +509,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -545,7 +545,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -581,7 +581,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -617,7 +617,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -833,7 +833,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -869,7 +869,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -905,7 +905,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -941,7 +941,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -977,7 +977,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -1013,7 +1013,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -1049,7 +1049,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -1085,7 +1085,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -1281,7 +1281,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -1317,7 +1317,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -1353,7 +1353,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -1389,7 +1389,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -1425,7 +1425,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -1461,7 +1461,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -1497,7 +1497,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -1533,7 +1533,7 @@ }, { "dependency": "chrome_and_driver", - "version": "version:111.0" + "version": "version:111.0a" } ], "tasks": [ @@ -1547,294 +1547,6 @@ "script": "flutter/lib/web_ui/dev/felt" } ] - }, - { - "name": "Windows run chrome-dart2wasm-html-engine suite", - "recipe": "engine_v2/tester_engine", - "drone_dimensions": [ - "device_type=none", - "os=Windows" - ], - "gclient_variables": { - "download_android_deps": false - }, - "dependencies": [ - "web_tests/artifacts", - "web_tests/test_bundles/dart2wasm-html-engine" - ], - "test_dependencies": [ - { - "dependency": "goldctl", - "version": "git_revision:3a77d0b12c697a840ca0c7705208e8622dc94603" - }, - { - "dependency": "chrome_and_driver", - "version": "version:111.0" - } - ], - "tasks": [ - { - "name": "run suite chrome-dart2wasm-html-engine", - "parameters": [ - "test", - "--run", - "--suite=chrome-dart2wasm-html-engine" - ], - "script": "flutter/lib/web_ui/dev/felt" - } - ] - }, - { - "name": "Windows run chrome-dart2wasm-html-html suite", - "recipe": "engine_v2/tester_engine", - "drone_dimensions": [ - "device_type=none", - "os=Windows" - ], - "gclient_variables": { - "download_android_deps": false - }, - "dependencies": [ - "web_tests/artifacts", - "web_tests/test_bundles/dart2wasm-html-html" - ], - "test_dependencies": [ - { - "dependency": "goldctl", - "version": "git_revision:3a77d0b12c697a840ca0c7705208e8622dc94603" - }, - { - "dependency": "chrome_and_driver", - "version": "version:111.0" - } - ], - "tasks": [ - { - "name": "run suite chrome-dart2wasm-html-html", - "parameters": [ - "test", - "--run", - "--suite=chrome-dart2wasm-html-html" - ], - "script": "flutter/lib/web_ui/dev/felt" - } - ] - }, - { - "name": "Windows run chrome-dart2wasm-html-ui suite", - "recipe": "engine_v2/tester_engine", - "drone_dimensions": [ - "device_type=none", - "os=Windows" - ], - "gclient_variables": { - "download_android_deps": false - }, - "dependencies": [ - "web_tests/artifacts", - "web_tests/test_bundles/dart2wasm-html-ui" - ], - "test_dependencies": [ - { - "dependency": "goldctl", - "version": "git_revision:3a77d0b12c697a840ca0c7705208e8622dc94603" - }, - { - "dependency": "chrome_and_driver", - "version": "version:111.0" - } - ], - "tasks": [ - { - "name": "run suite chrome-dart2wasm-html-ui", - "parameters": [ - "test", - "--run", - "--suite=chrome-dart2wasm-html-ui" - ], - "script": "flutter/lib/web_ui/dev/felt" - } - ] - }, - { - "name": "Windows run chrome-dart2wasm-canvaskit-canvaskit suite", - "recipe": "engine_v2/tester_engine", - "drone_dimensions": [ - "device_type=none", - "os=Windows" - ], - "gclient_variables": { - "download_android_deps": false - }, - "dependencies": [ - "web_tests/artifacts", - "web_tests/test_bundles/dart2wasm-canvaskit-canvaskit" - ], - "test_dependencies": [ - { - "dependency": "goldctl", - "version": "git_revision:3a77d0b12c697a840ca0c7705208e8622dc94603" - }, - { - "dependency": "chrome_and_driver", - "version": "version:111.0" - } - ], - "tasks": [ - { - "name": "run suite chrome-dart2wasm-canvaskit-canvaskit", - "parameters": [ - "test", - "--run", - "--suite=chrome-dart2wasm-canvaskit-canvaskit" - ], - "script": "flutter/lib/web_ui/dev/felt" - } - ] - }, - { - "name": "Windows run chrome-dart2wasm-canvaskit-ui suite", - "recipe": "engine_v2/tester_engine", - "drone_dimensions": [ - "device_type=none", - "os=Windows" - ], - "gclient_variables": { - "download_android_deps": false - }, - "dependencies": [ - "web_tests/artifacts", - "web_tests/test_bundles/dart2wasm-canvaskit-ui" - ], - "test_dependencies": [ - { - "dependency": "goldctl", - "version": "git_revision:3a77d0b12c697a840ca0c7705208e8622dc94603" - }, - { - "dependency": "chrome_and_driver", - "version": "version:111.0" - } - ], - "tasks": [ - { - "name": "run suite chrome-dart2wasm-canvaskit-ui", - "parameters": [ - "test", - "--run", - "--suite=chrome-dart2wasm-canvaskit-ui" - ], - "script": "flutter/lib/web_ui/dev/felt" - } - ] - }, - { - "name": "Windows run chrome-dart2wasm-skwasm-ui suite", - "recipe": "engine_v2/tester_engine", - "drone_dimensions": [ - "device_type=none", - "os=Windows" - ], - "gclient_variables": { - "download_android_deps": false - }, - "dependencies": [ - "web_tests/artifacts", - "web_tests/test_bundles/dart2wasm-skwasm-ui" - ], - "test_dependencies": [ - { - "dependency": "goldctl", - "version": "git_revision:3a77d0b12c697a840ca0c7705208e8622dc94603" - }, - { - "dependency": "chrome_and_driver", - "version": "version:111.0" - } - ], - "tasks": [ - { - "name": "run suite chrome-dart2wasm-skwasm-ui", - "parameters": [ - "test", - "--run", - "--suite=chrome-dart2wasm-skwasm-ui" - ], - "script": "flutter/lib/web_ui/dev/felt" - } - ] - }, - { - "name": "Windows run chrome-full-dart2wasm-canvaskit-canvaskit suite", - "recipe": "engine_v2/tester_engine", - "drone_dimensions": [ - "device_type=none", - "os=Windows" - ], - "gclient_variables": { - "download_android_deps": false - }, - "dependencies": [ - "web_tests/artifacts", - "web_tests/test_bundles/dart2wasm-canvaskit-canvaskit" - ], - "test_dependencies": [ - { - "dependency": "goldctl", - "version": "git_revision:3a77d0b12c697a840ca0c7705208e8622dc94603" - }, - { - "dependency": "chrome_and_driver", - "version": "version:111.0" - } - ], - "tasks": [ - { - "name": "run suite chrome-full-dart2wasm-canvaskit-canvaskit", - "parameters": [ - "test", - "--run", - "--suite=chrome-full-dart2wasm-canvaskit-canvaskit" - ], - "script": "flutter/lib/web_ui/dev/felt" - } - ] - }, - { - "name": "Windows run chrome-full-dart2wasm-canvaskit-ui suite", - "recipe": "engine_v2/tester_engine", - "drone_dimensions": [ - "device_type=none", - "os=Windows" - ], - "gclient_variables": { - "download_android_deps": false - }, - "dependencies": [ - "web_tests/artifacts", - "web_tests/test_bundles/dart2wasm-canvaskit-ui" - ], - "test_dependencies": [ - { - "dependency": "goldctl", - "version": "git_revision:3a77d0b12c697a840ca0c7705208e8622dc94603" - }, - { - "dependency": "chrome_and_driver", - "version": "version:111.0" - } - ], - "tasks": [ - { - "name": "run suite chrome-full-dart2wasm-canvaskit-ui", - "parameters": [ - "test", - "--run", - "--suite=chrome-full-dart2wasm-canvaskit-ui" - ], - "script": "flutter/lib/web_ui/dev/felt" - } - ] } ] } diff --git a/lib/web_ui/dev/browser_lock.yaml b/lib/web_ui/dev/browser_lock.yaml index eedf5d6828087..94eceed0afcd5 100644 --- a/lib/web_ui/dev/browser_lock.yaml +++ b/lib/web_ui/dev/browser_lock.yaml @@ -16,8 +16,8 @@ chrome: Linux: 1097615 Mac: 1097624 Mac_Arm: 1097626 - Win: 1097664 - version: '111.0' # CIPD tag for the above Build IDs. Normally "ChromeMajorVersion.UploadAttempt". ;) + Win: 1097610 + version: '111.0a' # CIPD tag for the above Build IDs. Normally "ChromeMajorVersion.UploadAttempt". ;) firefox: version: '106.0' diff --git a/lib/web_ui/dev/common.dart b/lib/web_ui/dev/common.dart index cd61c8f39e196..d8548c1ecbc34 100644 --- a/lib/web_ui/dev/common.dart +++ b/lib/web_ui/dev/common.dart @@ -66,11 +66,11 @@ class WindowsPlatformBinding implements PlatformBinding { @override String getChromeDownloadUrl(String version) => - 'https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Win%2F$version%2Fchrome-win.zip?alt=media'; + 'https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Win_x64%2F$version%2Fchrome-win.zip?alt=media'; @override String getChromeDriverDownloadUrl(String version) => - 'https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Win%2F$version%2Fchromedriver_win32.zip?alt=media'; + 'https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Win_x64%2F$version%2Fchromedriver_win32.zip?alt=media'; @override String getChromeExecutablePath(io.Directory versionDir) => diff --git a/lib/web_ui/dev/generate_builder_json.dart b/lib/web_ui/dev/generate_builder_json.dart index 719d088824f0f..68c89a7c4e5f9 100644 --- a/lib/web_ui/dev/generate_builder_json.dart +++ b/lib/web_ui/dev/generate_builder_json.dart @@ -108,25 +108,29 @@ Map _getBundleBuildStep(TestBundle bundle) { Iterable _getAllTestSteps(List suites) { return [ - ..._getTestStepsForPlatform(suites, 'Linux', { - BrowserName.chrome, - BrowserName.firefox, - }), - ..._getTestStepsForPlatform(suites, 'Mac', { - BrowserName.safari, - }), - ..._getTestStepsForPlatform(suites, 'Windows', { - BrowserName.chrome, - }), + ..._getTestStepsForPlatform(suites, 'Linux', (TestSuite suite) => + suite.runConfig.browser == BrowserName.chrome || + suite.runConfig.browser == BrowserName.firefox + ), + ..._getTestStepsForPlatform(suites, 'Mac', (TestSuite suite) => + suite.runConfig.browser == BrowserName.safari + ), + ..._getTestStepsForPlatform(suites, 'Windows', (TestSuite suite) => + suite.runConfig.browser == BrowserName.chrome && + + // TODO(jacksongardner): Enable dart2wasm tests on Windows + // https://github.com/flutter/flutter/issues/124082 + suite.testBundle.compileConfig.compiler != Compiler.dart2wasm + ), ]; } Iterable _getTestStepsForPlatform( List suites, String platform, - Set browsers) { + bool Function(TestSuite suite) filter) { return suites - .where((TestSuite suite) => browsers.contains(suite.runConfig.browser)) + .where(filter) .map((TestSuite suite) => { 'name': '$platform run ${suite.name} suite', 'recipe': 'engine_v2/tester_engine', @@ -149,7 +153,7 @@ Iterable _getTestStepsForPlatform( if (suite.runConfig.browser == BrowserName.chrome) { 'dependency': 'chrome_and_driver', - 'version': 'version:111.0', + 'version': 'version:111.0a', }, if (suite.runConfig.browser == BrowserName.firefox) { diff --git a/lib/web_ui/dev/steps/run_suite_step.dart b/lib/web_ui/dev/steps/run_suite_step.dart index 3650670590bff..18cec8247ab10 100644 --- a/lib/web_ui/dev/steps/run_suite_step.dart +++ b/lib/web_ui/dev/steps/run_suite_step.dart @@ -115,9 +115,15 @@ class RunSuiteStep implements PipelineStep { await browserEnvironment.cleanup(); + // Since we are just calling `main()` on the test executable, it will modify + // the exit code. We use this as a signal that there were some tests that failed. if (io.exitCode != 0) { print('[${suite.name.ansiCyan}] ${'Some tests failed.'.ansiRed}'); + // Change the exit code back to 0 when we're done. Failures will be bubbled up + // at the end of the pipeline and we'll exit abnormally if there were any + // failures in the pipeline. io.exitCode = 0; + throw ToolExit('Some unit tests failed in suite ${suite.name.ansiCyan}.'); } else { print('[${suite.name.ansiCyan}] ${'All tests passed!'.ansiGreen}'); } diff --git a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart index 6d70ee28b3f80..4aee9ba55ee9c 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/canvaskit_api.dart @@ -3795,7 +3795,7 @@ void patchCanvasKitModule(DomHTMLScriptElement canvasKitScript) { final Object? exportsAccessor = js_util.jsify({ 'get': allowInterop(() { if (domDocument.currentScript == canvasKitScript) { - return js_util.callConstructor(objectConstructor, null); + return js_util.callConstructor(objectConstructor, []); } else { return _flutterWebCachedExports; } @@ -3812,7 +3812,7 @@ void patchCanvasKitModule(DomHTMLScriptElement canvasKitScript) { final Object? moduleAccessor = js_util.jsify({ 'get': allowInterop(() { if (domDocument.currentScript == canvasKitScript) { - return js_util.callConstructor(objectConstructor, null); + return js_util.callConstructor(objectConstructor, []); } else { return _flutterWebCachedModule; } diff --git a/lib/web_ui/test/canvaskit/canvas_golden_test.dart b/lib/web_ui/test/canvaskit/canvas_golden_test.dart index b3790cf78bac4..5d77675283f84 100644 --- a/lib/web_ui/test/canvaskit/canvas_golden_test.dart +++ b/lib/web_ui/test/canvaskit/canvas_golden_test.dart @@ -802,7 +802,7 @@ void testMain() { test('emoji text with skin tone', () async { await testSampleText('emoji_with_skin_tone', '👋🏿 👋🏾 👋🏽 👋🏼 👋🏻'); - }); + }, skip: isWasm || isSafari || isFirefox); // https://github.com/flutter/flutter/issues/124068 // Make sure we clear the canvas in between frames. test('empty frame after contentful frame', () async { diff --git a/lib/web_ui/test/canvaskit/text_fragmenter_test.dart b/lib/web_ui/test/canvaskit/text_fragmenter_test.dart index 420b1aaa70858..365de0c8677a2 100644 --- a/lib/web_ui/test/canvaskit/text_fragmenter_test.dart +++ b/lib/web_ui/test/canvaskit/text_fragmenter_test.dart @@ -183,7 +183,7 @@ void testMain() { testCacheCapacity(segmentationCache.small, kSmallParagraphCacheSpec); testCacheCapacity(segmentationCache.medium, kMediumParagraphCacheSpec); testCacheCapacity(segmentationCache.large, kLargeParagraphCacheSpec); - }); + }, timeout: const Timeout.factor(4)); }, skip: !browserSupportsCanvaskitChromium); }