Repository navigation
Enable Safari dart2wasm/skwasm CI suites on macOS 26.6 - #193681
Conversation
This switches the Safari Web engine CI suites to run on the Mac-26.6.2 LUCI bots, and enables the WasmGC and skwasm Safari suites now that Safari 26.2+ is available on these bots. Addresses #5XBX3 and #JN3PH
|
It looks like this pull request may not have tests. Please make sure to add tests or get an explicit test exemption before merging. If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix? Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. If you believe this PR qualifies for a test exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group. |
There was a problem hiding this comment.
Code Review
This pull request enables Safari Dart2Wasm test suites in CI by updating felt_config.yaml and linux_web_engine_test.json. It also attempts to update the macOS runner version in linux_web_engine_test.json and generate_builder_json.dart. However, the reviewer identified that the specified version Mac-26.6.2 is likely a typo for Mac-15.2, which would cause LUCI to fail to find matching bots.
Use 2-part Major.Minor `Mac-26.6` in `generate_builder_json.dart` and `linux_web_engine_test.json` to match `.ci.yaml` and `engine/src/flutter/ci/builders/*.json` from flutter#193317.
Safari 26 (macOS 26.6) serializes CSS `outline: none` on inline styles as `'medium'` (matching `input.style.border`) in `text_editing_test.dart`, and serializes `getComputedStyle(element).outline` in canonical CSSOM order (`'0px none rgb(0, 0, 0)'`) in `style_manager_test.dart`.
…focus_binding tests When `safaridriver` runs on a Mac Swarming bot where `Safari.app` is not the frontmost WindowServer application (`!domDocument.hasFocus()`): - WebKit's `:focus` pseudo-class does not match in `getComputedStyle`, returning the initial unfocused outline `'3px none rgb(0, 0, 0)'` in `style_manager_test.dart`. - `ViewFocusBinding._handleFocusout` checked raw `domDocument.hasFocus()` instead of `_documentHasFocus` (`debugViewFocusDocumentHasFocusOverride`).
|
Failed to create CP due to merge conflicts. |
### Issue Link: What is the link to the issue this cherry-pick is addressing? #193833, #193834 ### Impact Description: What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping of production apps (the app crashes on launch). This information is for domain experts and release engineers to understand the consequences of saying yes or no to the cherry pick. CI test-only change to migrate tests to macOS 26. This is a partial cherry-pick of #193681, only including the parts required for macOS 26. ### Changelog Description: Explain this cherry pick: * In one line that is accessible to most Flutter developers. * That describes the state prior to the fix. * That includes which platforms are impacted. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples. N/A - CI test-only change ### Workaround: Is there a workaround for this issue? Rerun test ### Risk: What is the risk level of this cherry-pick? ### Test Coverage: Are you confident that your fix is well-tested by automated tests? ### Validation Steps: What are the steps to validate that this fix works? Run in CI
This switches the Safari Web engine CI suites (`Mac run safari suites`) to run on `Mac-26.6` LUCI bots (matching the `Mac-26.6` dimension convention in flutter#193317) and enables the 4 WasmGC / Skwasm Safari suites now that Safari 26 (with Wasm `js-string` builtins) ships on macOS 26.6.2 bots (flutter#192559 / flutter#192572): - `safari-dart2wasm-canvaskit-engine` - `safari-dart2wasm-skwasm-ui` - `safari-coi-dart2wasm-skwasm-ui` - `safari-coi-dart2wasm-skwasm-skwasm` ### Safari 26 & WebDriver Focus Test Updates Running `Mac run safari suites` on `Mac-26.6` exposed two Safari 26 CSS `outline` serialization differences and one test that depended on `Safari.app` holding macOS WindowServer foreground focus under `safaridriver`: 1. **`text_editing_test.dart` (`text editing styles invisible element`)**: Safari 26 serializes inline `outline: none` on `input.style.outline` as `'medium'` (matching `input.style.border` immediately below it). 2. **`view_embedder/style_manager_test.dart` (`attachGlobalStyles hides the outline when focused`)**: Safari 26 serializes `getComputedStyle(element).outline` in canonical CSSOM order (`'0px none rgb(0, 0, 0)'` instead of `'rgb(0, 0, 0) none 0px'`). Additionally, in WebKit `:focus` only matches when `domDocument.hasFocus()` is `true`; when `Safari.app` is not the frontmost macOS WindowServer app (`!domDocument.hasFocus()`), WebKit returns the unfocused initial outline (`'3px none rgb(0, 0, 0)'`). 3. **`platform_dispatcher/view_focus_binding.dart` & `view_focus_binding_test.dart` (`works even if focus is changed in the middle of a blur call`)**: Use `_documentHasFocus` (introduced in flutter#190942 for `debugViewFocusDocumentHasFocusOverride`) in `ViewFocusBinding._handleFocusout` (`wasFocusInvoked`) and set `debugViewFocusDocumentHasFocusOverride = true` in the test so it does not flake when the `safaridriver` window is unfocused in WindowServer. Fixes flutter#193833 Fixes flutter#193834 Part of flutter#192559 Part of flutter#192572
### Issue Link: What is the link to the issue this cherry-pick is addressing? flutter/flutter#193833, flutter/flutter#193834 ### Impact Description: What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping of production apps (the app crashes on launch). This information is for domain experts and release engineers to understand the consequences of saying yes or no to the cherry pick. CI test-only change to migrate tests to macOS 26. This is a partial cherry-pick of flutter/flutter#193681, only including the parts required for macOS 26. ### Changelog Description: Explain this cherry pick: * In one line that is accessible to most Flutter developers. * That describes the state prior to the fix. * That includes which platforms are impacted. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples. N/A - CI test-only change ### Workaround: Is there a workaround for this issue? Rerun test ### Risk: What is the risk level of this cherry-pick? ### Test Coverage: Are you confident that your fix is well-tested by automated tests? ### Validation Steps: What are the steps to validate that this fix works? Run in CI
### Issue Link: What is the link to the issue this cherry-pick is addressing? flutter/flutter#193833, flutter/flutter#193834 ### Impact Description: What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping of production apps (the app crashes on launch). This information is for domain experts and release engineers to understand the consequences of saying yes or no to the cherry pick. CI test-only change to migrate tests to macOS 26. This is a partial cherry-pick of flutter/flutter#193681, only including the parts required for macOS 26. ### Changelog Description: Explain this cherry pick: * In one line that is accessible to most Flutter developers. * That describes the state prior to the fix. * That includes which platforms are impacted. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples. N/A - CI test-only change ### Workaround: Is there a workaround for this issue? Rerun test ### Risk: What is the risk level of this cherry-pick? ### Test Coverage: Are you confident that your fix is well-tested by automated tests? ### Validation Steps: What are the steps to validate that this fix works? Run in CI
### Issue Link: What is the link to the issue this cherry-pick is addressing? flutter/flutter#193833, flutter/flutter#193834 ### Impact Description: What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping of production apps (the app crashes on launch). This information is for domain experts and release engineers to understand the consequences of saying yes or no to the cherry pick. CI test-only change to migrate tests to macOS 26. This is a partial cherry-pick of flutter/flutter#193681, only including the parts required for macOS 26. ### Changelog Description: Explain this cherry pick: * In one line that is accessible to most Flutter developers. * That describes the state prior to the fix. * That includes which platforms are impacted. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples. N/A - CI test-only change ### Workaround: Is there a workaround for this issue? Rerun test ### Risk: What is the risk level of this cherry-pick? ### Test Coverage: Are you confident that your fix is well-tested by automated tests? ### Validation Steps: What are the steps to validate that this fix works? Run in CI
This switches the Safari Web engine CI suites (
Mac run safari suites) to run onMac-26.6LUCI bots (matching theMac-26.6dimension convention in #193317) and enables the 4 WasmGC / Skwasm Safari suites now that Safari 26 (with Wasmjs-stringbuiltins) ships on macOS 26.6.2 bots (#192559 / #192572):safari-dart2wasm-canvaskit-enginesafari-dart2wasm-skwasm-uisafari-coi-dart2wasm-skwasm-uisafari-coi-dart2wasm-skwasm-skwasmSafari 26 & WebDriver Focus Test Updates
Running
Mac run safari suitesonMac-26.6exposed two Safari 26 CSSoutlineserialization differences and one test that depended onSafari.appholding macOS WindowServer foreground focus undersafaridriver:text_editing_test.dart(text editing styles invisible element): Safari 26 serializes inlineoutline: noneoninput.style.outlineas'medium'(matchinginput.style.borderimmediately below it).view_embedder/style_manager_test.dart(attachGlobalStyles hides the outline when focused): Safari 26 serializesgetComputedStyle(element).outlinein canonical CSSOM order ('0px none rgb(0, 0, 0)'instead of'rgb(0, 0, 0) none 0px'). Additionally, in WebKit:focusonly matches whendomDocument.hasFocus()istrue; whenSafari.appis not the frontmost macOS WindowServer app (!domDocument.hasFocus()), WebKit returns the unfocused initial outline ('3px none rgb(0, 0, 0)').platform_dispatcher/view_focus_binding.dart&view_focus_binding_test.dart(works even if focus is changed in the middle of a blur call): Use_documentHasFocus(introduced in Reland "[web] Keep the keyboard up during an iOS caret drag" #190942 fordebugViewFocusDocumentHasFocusOverride) inViewFocusBinding._handleFocusout(wasFocusInvoked) and setdebugViewFocusDocumentHasFocusOverride = truein the test so it does not flake when thesafaridriverwindow is unfocused in WindowServer.Fixes #193833
Fixes #193834
Part of #192559
Part of #192572