Skip to content

Upgrade Stylo to 2026-04-01#43878

Merged
Loirooriol merged 10 commits intoservo:mainfrom
Loirooriol:stylo-upgrade
Apr 3, 2026
Merged

Upgrade Stylo to 2026-04-01#43878
Loirooriol merged 10 commits intoservo:mainfrom
Loirooriol:stylo-upgrade

Conversation

@Loirooriol
Copy link
Copy Markdown
Contributor

@Loirooriol Loirooriol commented Apr 2, 2026

This continues #43045

Changelog:

Stylo tracking issue: servo/stylo#347

Summary of improvements:

  • Adding support for the CSS-wide revert-rule keyword
  • ::details-content becomes element-backed, thus accepting nested pseudo-elements like ::details-content::before.
  • Custom properties can now be registered using dashed idents in their syntax
  • Various attr() improvements

Testing: Various WPT improvements

@Loirooriol Loirooriol added the T-full Do a full try run label Apr 2, 2026
@github-actions github-actions bot removed the T-full Do a full try run label Apr 2, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 2, 2026

🔨 Triggering try run (#23917334846) for Linux (Unit Tests, Build libservo, WPT, Bencher), Windows (Unit Tests, Build libservo), MacOS Arm64 (Unit Tests), Android, OpenHarmony, Lint

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 2, 2026

🐰 Bencher Report

Branch43878/PR
Testbedself-hosted-image:servo-ubuntu2204-bench

⚠️ WARNING: Truncated view!

The full continuous benchmarking report exceeds the maximum length allowed on this platform.

⚠️ WARNING: No Threshold found!

Without a Threshold, no Alerts will ever be generated.

🐰 View full continuous benchmarking report in Bencher

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 2, 2026

🐰 Bencher Report

Branch43878/PR
TestbedHUAWEI Mate 80 Pro

⚠️ WARNING: Truncated view!

The full continuous benchmarking report exceeds the maximum length allowed on this platform.

⚠️ WARNING: No Threshold found!

Without a Threshold, no Alerts will ever be generated.

🐰 View full continuous benchmarking report in Bencher

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 2, 2026

Test results for linux-wpt from try job (#23917334846):

Flaky unexpected result (49)
  • TIMEOUT /FileAPI/url/url-in-tags-revoke.window.html (#19978)
    • PASS [expected TIMEOUT] subtest: Fetching a blob URL immediately before revoking it works in <script> tags.
  • OK /_mozilla/mozilla/getBoundingClientRect.html (#39668)
    • FAIL [expected PASS] subtest: getBoundingClientRect 1

      assert_equals: expected 62 but got 60.35
      

  • CRASH [expected OK] /_webgl/conformance/glsl/bugs/modulo-arithmetic-accuracy.html
  • CRASH [expected ERROR] /_webgl/conformance2/misc/uninitialized-test-2.html (#41656)
  • CRASH [expected OK] /content-security-policy/meta/sandbox-iframe.html (#43478)
  • OK /cookies/partitioned-cookies/partitioned-cookies-samesite-attribute.https.html
    • FAIL [expected PASS] subtest: In embedded cross-site contexts, partitioned cookies can only be set with explicit SameSite=None

      assert_equals: expected 0 but got 3
      

  • FAIL [expected PASS] /css/css-backgrounds/background-size-041.html
  • OK /css/css-cascade/layer-font-face-override.html (#35935)
    • PASS [expected FAIL] subtest: @font-face override update with appended sheet 1
    • PASS [expected FAIL] subtest: @font-face override update with appended sheet 2
  • OK /css/css-fonts/variations/at-font-face-font-matching.html (#20684)
    • FAIL [expected PASS] subtest: Matching font-style: 'oblique 0deg' should prefer 'oblique 15deg 20deg' over 'oblique 30deg 60deg'

      assert_equals: Unexpected font on test element expected 487 but got 532
      

  • FAIL [expected PASS] /css/css-ui/webkit-appearance-menulist-001.html
  • FAIL [expected PASS] /css/css-ui/webkit-appearance-meter-001.html
  • OK /fetch/content-length/api-and-duplicate-headers.any.worker.html (#35197)
    • FAIL [expected PASS] subtest: fetch() and duplicate Content-Length/Content-Type headers

      promise_test: Unhandled rejection with value: object "TypeError: Network error: HTTP failure: client error (SendRequest)"
      

  • ERROR [expected OK] /fetch/fetch-later/quota/same-origin-iframe/accumulated-oversized-payload.https.window.html (#41705)
  • OK [expected ERROR] /fetch/fetch-later/quota/same-origin-iframe/sandboxed-iframe.https.window.html (#41704)
  • ERROR [expected OK] /fetch/metadata/window-open.https.sub.html (#40339)
  • ERROR [expected OK] /focus/focus-event-after-switching-iframes.sub.html (#40368)
  • OK /html/browsers/browsing-the-web/navigating-across-documents/005.html (#27062)
    • FAIL [expected PASS] subtest: Link with onclick navigation and href navigation

      assert_equals: expected "href" but got "click"
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.html (#29049)
    • PASS [expected FAIL] subtest: Same-origin navigation started from unload handler must be ignored
  • CRASH [expected OK] /html/browsers/history/the-history-interface/combination_history_001.html
  • OK /html/browsers/history/the-history-interface/traverse_the_history_3.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • ERROR [expected OK] /html/canvas/offscreen/text/2d.text.measure.getActualBoundingBox.tentative.html (#43710)
  • OK /html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html (#39694)
    • PASS [expected FAIL] subtest: Meta refresh is blocked by the allow-scripts sandbox flag at its creation time, not when refresh comes due
  • OK /html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html (#39703)
    • FAIL [expected PASS] subtest: Meta refresh of the original iframe is not blocked if moved into a sandboxed iframe

      uncaught exception: Error: assert_unreached: The iframe into which the meta was moved must not refresh Reached unreachable code
      

  • OK /html/semantics/embedded-content/media-elements/playing-the-media-resource/loop-from-ended.tentative.html (#33778)
    • FAIL [expected PASS] subtest: play() with loop set to true after playback ended

      this argument is not a finite floating-point value
      

  • OK [expected TIMEOUT] /html/semantics/embedded-content/media-elements/src_object_blob.html (#40340)
    • PASS [expected TIMEOUT] subtest: HTMLMediaElement.srcObject blob
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigate_other_frame_popup.sub.html (#39702)
    • TIMEOUT [expected FAIL] subtest: Sandboxed iframe can not navigate other frame's popup

      Test timed out
      

  • OK /html/semantics/scripting-1/the-script-element/execution-timing/077.html (#22139)
    • FAIL [expected PASS] subtest: adding several types of scripts through the DOM and removing some of them confuses scheduler

      assert_array_equals: expected property 1 to be "Script #1 ran" but got "Script #3 ran" (expected array ["Script #2 ran", "Script #1 ran", "Script #3 ran", "Script #4 ran"] got ["Script #2 ran", "Script #3 ran", "Script #4 ran", "Script #1 ran"])
      

  • TIMEOUT [expected OK] /html/user-activation/navigation-state-reset-sameorigin.html
    • TIMEOUT [expected PASS] subtest: Post-navigation state reset.

      Test timed out
      

  • FAIL [expected PASS] /png/apng/fcTL-dispose-background-final.html (#41581)
  • OK /preload/link-header-preload-delay-onload.html (#39622)
    • FAIL [expected PASS] subtest: Makes sure that Link headers preload resources and block window.onload after resource discovery

      assert_true: expected true got false
      

  • TIMEOUT [expected OK] /preload/modulepreload-sri-importmap.html (#43354)
    • TIMEOUT [expected PASS] subtest: Script should not be loaded if modulepreload's integrity is invalid

      Test timed out
      

  • CRASH [expected TIMEOUT] /referrer-policy/gen/top.meta/unsafe-url/svg-a-tag.http.html
  • OK /resource-timing/buffer-full-add-then-clear.html (#40819)
    • FAIL [expected PASS] subtest: Test that if the buffer is cleared after entries were added to the secondary buffer, those entries make it into the primary one

      assert_equals: Number of entries does not match the expected value. expected 3 but got 0
      

  • OK /resource-timing/test_resource_timing.https.html (#25216)
    • PASS [expected FAIL] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (img)
    • PASS [expected FAIL] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (xmlhttprequest)
  • OK [expected TIMEOUT] /trusted-types/trusted-types-navigation.html?06-10 (#37920)
    • PASS [expected TIMEOUT] subtest: Navigate a frame via anchor with javascript:-urls w/ default policy in report-only mode.
    • FAIL [expected NOTRUN] subtest: Navigate a window via anchor with javascript:-urls w/ a default policy throwing an exception in enforcing mode.

      promise_test: Unhandled rejection with value: "Unexpected message received: \"No securitypolicyviolation reported!\""
      

    • FAIL [expected NOTRUN] subtest: Navigate a window via anchor with javascript:-urls w/ a default policy throwing an exception in report-only mode.

      promise_test: Unhandled rejection with value: "Unexpected message received: \"No securitypolicyviolation reported!\""
      

  • OK [expected TIMEOUT] /trusted-types/trusted-types-navigation.html?26-30 (#38807)
    • PASS [expected TIMEOUT] subtest: Navigate a window via form-submission with javascript:-urls in report-only mode.
    • PASS [expected NOTRUN] subtest: Navigate a window via form-submission with javascript:-urls w/ default policy in report-only mode.
    • PASS [expected NOTRUN] subtest: Navigate a frame via form-submission with javascript:-urls in enforcing mode.
    • PASS [expected NOTRUN] subtest: Navigate a frame via form-submission with javascript:-urls w/ default policy in enforcing mode.
  • OK [expected TIMEOUT] /trusted-types/trusted-types-navigation.html?31-35 (#38034)
    • PASS [expected TIMEOUT] subtest: Navigate a frame via form-submission with javascript:-urls w/ default policy in report-only mode.
    • FAIL [expected NOTRUN] subtest: Navigate a window via form-submission with javascript:-urls w/ a default policy throwing an exception in enforcing mode.

      promise_test: Unhandled rejection with value: "Unexpected message received: \"No securitypolicyviolation reported!\""
      

    • FAIL [expected NOTRUN] subtest: Navigate a window via form-submission with javascript:-urls w/ a default policy throwing an exception in report-only mode.

      promise_test: Unhandled rejection with value: "Unexpected message received: \"No securitypolicyviolation reported!\""
      

    • FAIL [expected NOTRUN] subtest: Navigate a window via form-submission with javascript:-urls w/ a default policy making the URL invalid in enforcing mode.

      promise_test: Unhandled rejection with value: "Unexpected message received: \"No securitypolicyviolation reported!\""
      

  • OK /webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html (#22849)
    • FAIL [expected PASS] subtest: buffer-stitching-2

      assert_approx_equals: Stitched sine‑wave buffers at sample rate 43800 sample[21748] |9.129282270489798e+21 - -0.08254216611385345| = 9.129282270489798e+21 > 0.0038986 expected -0.08254216611385345 +/- 0.0038986 but got 9.129282270489798e+21
      

  • OK /webdriver/tests/classic/element_send_keys/events.py
    • FAIL [expected PASS] subtest: test_file_upload

      webdriver.error.NoSuchWindowException: no such window (404): No such window
      

  • OK /webdriver/tests/classic/element_send_keys/file_upload.py
    • FAIL [expected PASS] subtest: test_empty_text

      webdriver.error.NoSuchWindowException: no such window (404): No such window
      

  • OK /webdriver/tests/classic/execute_async_script/node.py
    • FAIL [expected PASS] subtest: test_detached_shadow_root[top_context]

      webdriver.error.NoSuchWindowException: no such window (404): No such window
      

  • OK /webdriver/tests/classic/execute_script/execute.py
    • ERROR [expected PASS] subtest: test_no_top_browsing_context

      setup error: webdriver.error.NoSuchElementException: no such element (404)
      

  • OK /webdriver/tests/classic/execute_script/window.py
    • FAIL [expected PASS] subtest: test_web_reference[frame]

      AssertionError: no such window (404): No such window
      

  • OK /webdriver/tests/classic/find_elements_from_element/user_prompts.py
    • FAIL [expected PASS] subtest: test_accept[alert-None]

      webdriver.error.NoSuchWindowException: no such window (404): No such window
      

  • OK /webdriver/tests/classic/get_element_rect/user_prompts.py
    • FAIL [expected PASS] subtest: test_accept[alert-None]

      webdriver.error.NoSuchWindowException: no such window (404): No such window
      

  • OK /webdriver/tests/classic/perform_actions/key_shortcuts.py
    • ERROR [expected PASS] subtest: test_mod_a_and_backspace_deletes_all_text

      setup error: webdriver.error.NoSuchWindowException: no such window (404): No such window
      

  • OK [expected TIMEOUT] /webdriver/tests/classic/perform_actions/navigation.py
  • CRASH [expected OK] /webxr/hit-test/ar_hittest_source_cancel.https.html
  • CRASH [expected OK] /webxr/xrSession_sameObject.https.html
Stable unexpected results that are known to be intermittent (15)
  • FAIL [expected PASS] /_mozilla/mozilla/sslfail.html (#10760)
  • TIMEOUT [expected OK] /_mozilla/mozilla/window_resize_event.html (#36741)
    • TIMEOUT [expected PASS] subtest: Popup onresize event fires after resizeTo

      Test timed out
      

  • OK /css/css-fonts/generic-family-keywords-001.html (#37467)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(fangsong)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(kai)
  • OK /css/css-fonts/generic-family-keywords-003.html (#38994)
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted fantasy (drawing text in a canvas)

      assert_equals: quoted fantasy matches  @font-face rule expected 125 but got 40
      

    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(fangsong) (drawing text in a canvas)
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted generic(khmer-mul) (drawing text in a canvas)

      assert_equals: quoted generic(khmer-mul) matches  @font-face rule expected 125 but got 40
      

    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted generic(nastaliq) (drawing text in a canvas)

      assert_equals: unquoted generic(nastaliq) does not match @font-face rule expected 40 but got 125
      

  • OK /dom/nodes/moveBefore/iframe-document-preserve.window.html (#43152)
    • PASS [expected FAIL] subtest: moveBefore(): cross-origin iframe is preserved: remove self
  • OK /fetch/metadata/generated/css-font-face.sub.tentative.html (#34624)
    • PASS [expected FAIL] subtest: sec-fetch-storage-access - Not sent to non-trustworthy same-site destination
    • PASS [expected FAIL] subtest: sec-fetch-storage-access - Not sent to non-trustworthy cross-site destination
  • OK /html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html (#28697)
    • FAIL [expected PASS] subtest: aElement.click() before the load event must NOT replace

      assert_equals: expected "http://web-platform.test:8000/common/blank.html?thereplacement" but got "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/resources/code-injector.html?pipe=sub(none)&code=%0A%20%20%20%20const%20a%20%3D%20document.createElement(%22a%22)%3B%0A%20%20%20%20a.href%20%3D%20%22%2Fcommon%2Fblank.html%3Fthereplacement%22%3B%0A%20%20%20%20document.currentScript.before(a)%3B%0A%20%20%20%20a.click()%3B%0A%20%20"
      

  • OK /html/browsers/history/the-history-interface/traverse_the_history_4.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • OK /mixed-content/tentative/autoupgrades/mixed-content-cors.https.sub.html (#41123)
    • PASS [expected FAIL] subtest: Cross-Origin video should get upgraded even if CORS is set
  • OK /navigation-timing/test-navigation-type-reload.html (#33334)
    • FAIL [expected PASS] subtest: Reload domContentLoadedEventEnd > Original domContentLoadedEventEnd

      assert_true: Reload domContentLoadedEventEnd > Original domContentLoadedEventEnd expected true got false
      

    • FAIL [expected PASS] subtest: Reload domContentLoadedEventStart > Original domContentLoadedEventStart

      assert_true: Reload domContentLoadedEventStart > Original domContentLoadedEventStart expected true got false
      

  • OK /preload/prefetch-document.html (#37210)
    • FAIL [expected PASS] subtest: different-site document prefetch with 'as=document' should not be consumed

      assert_equals: expected 2 but got 1
      

  • OK [expected CRASH] /resource-timing/render-blocking-status-link.html (#41664)
  • OK /touch-events/single-tap-when-touchend-listener-use-sync-xhr.html (#41175)
    • FAIL [expected PASS] subtest: Click event should be fired when touchend opens synchronous XHR

      assert_equals: expected "touchend@div, mousedown@div, mouseup@div, click@div" but got "touchend@div, mousedown@div"
      

  • OK /visual-viewport/resize-event-order.html (#41981)
    • PASS [expected FAIL] subtest: Popup: DOMWindow resize fired before VisualViewport.
  • OK [expected TIMEOUT] /webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.html (#29053)
    • PASS [expected TIMEOUT] subtest: StorageKey: test 3P about:blank window opened from a 3P iframe
Stable unexpected results (21)
  • OK /css/css-cascade/revert-rule-basic.html
    • PASS [expected FAIL] subtest: The revert-rule keyword rolls back to the previous rule
    • PASS [expected FAIL] subtest: Cascade order determines the previous rule, not order of appearance
    • PASS [expected FAIL] subtest: Reverting from style attribute reverts to regular rules
    • PASS [expected FAIL] subtest: A chain of revert-rule works
  • OK /css/css-cascade/revert-rule-custom-property.html
    • PASS [expected FAIL] subtest: revert-rule in a custom property
  • OK /css/css-cascade/revert-rule-important.html
    • PASS [expected FAIL] subtest: revert-rule in !important declaration reverts to later normal rule if the !important rule comes first
  • OK /css/css-cascade/revert-rule-layer.html
    • PASS [expected FAIL] subtest: The revert-rule keyword can cross layers
    • PASS [expected FAIL] subtest: The revert-rule does not unconditionally cross layers
  • OK /css/css-cascade/revert-rule-revert-layer.html
    • PASS [expected FAIL] subtest: Combination of revert-rule and revert-layer
    • PASS [expected FAIL] subtest: Combination of revert-layer and revert-rule
    • PASS [expected FAIL] subtest: Combination revert-rule/revert-rule/revert-layer
    • PASS [expected FAIL] subtest: Combination revert-layer/revert-rule/revert-layer
    • PASS [expected FAIL] subtest: Combination revert-rule/revert-layer/revert-rule
  • OK /css/css-cascade/revert-rule-shadow.html
    • PASS [expected FAIL] subtest: revert-rule in document rule falls back to :host rule
    • PASS [expected FAIL] subtest: revert-rule in document rule falls back to ::slotted rule
    • PASS [expected FAIL] subtest: revert-rule with no shadow fallback falls through to unset (inherited)
    • PASS [expected FAIL] subtest: revert-rule in document rule falls back to the winning :host rule
    • PASS [expected FAIL] subtest: revert-rule chain across document rule and :host rule
    • PASS [expected FAIL] subtest: revert-rule on host and ::part() rule on part are independent
  • PASS [expected FAIL] /css/css-conditional/at-supports-selector-details-content-before.html
  • OK /css/css-conditional/js/CSS-supports-details-content-pseudo-parsing.html
    • PASS [expected FAIL] subtest: selector() function accepts ::details-content followed by ::before
  • OK /css/css-env/env-revert-rule.html
    • PASS [expected FAIL] subtest: The revert-rule works in an env() fallback
  • OK /css/css-nesting/nesting-revert-rule.html
    • PASS [expected FAIL] subtest: The revert-rule keyword can revert to a nested rule
    • PASS [expected FAIL] subtest: The revert-rule keyword can revert to a CSSNestedDeclarationsRule
    • PASS [expected FAIL] subtest: The revert-rule keyword can revert from a CSSNestedDeclarationsRule
  • OK /css/css-properties-values-api/register-property-syntax-parsing.html
    • PASS [expected FAIL] subtest: syntax:'--foo', initialValue:'--foo' is valid
    • PASS [expected FAIL] subtest: syntax:'--foo | <color>', initialValue:'--foo' is valid
    • PASS [expected FAIL] subtest: syntax:'--foo | <color>', initialValue:'red' is valid
    • PASS [expected FAIL] subtest: syntax:'--foo+', initialValue:'--foo --foo' is valid
    • PASS [expected FAIL] subtest: syntax:'--a | --b | --c', initialValue:'--b' is valid
  • OK /css/css-values/attr-all-types.html
    • PASS [expected FAIL] subtest: CSS Values and Units Test: attr 74
    • PASS [expected FAIL] subtest: CSS Values and Units Test: attr 75
    • PASS [expected FAIL] subtest: CSS Values and Units Test: attr 76
    • PASS [expected FAIL] subtest: CSS Values and Units Test: attr 77
    • PASS [expected FAIL] subtest: CSS Values and Units Test: attr 79
  • OK /css/css-values/attr-cycle.html
    • PASS [expected FAIL] subtest: CSS Values and Units Test: attr 2
    • PASS [expected FAIL] subtest: CSS Values and Units Test: attr 3
    • PASS [expected FAIL] subtest: CSS Values and Units Test: attr 6
    • PASS [expected FAIL] subtest: CSS Values and Units Test: attr 9
    • PASS [expected FAIL] subtest: CSS Values and Units Test: attr 10
    • PASS [expected FAIL] subtest: CSS Values and Units Test: attr 14
    • PASS [expected FAIL] subtest: CSS Values and Units Test: attr 16
    • PASS [expected FAIL] subtest: CSS Values and Units Test: attr 17
    • PASS [expected FAIL] subtest: CSS Values and Units Test: attr 19
    • PASS [expected FAIL] subtest: CSS Values and Units Test: attr 27
  • OK /css/css-values/attr-revert-rule.html
    • PASS [expected FAIL] subtest: The revert-rule works in an attr() fallback
  • OK /css/css-values/attr-security.html
    • PASS [expected FAIL] subtest: 'background-image: image-set(attr(data-foo))' with data-foo="https://does-not-exist.test/404.png"
    • PASS [expected FAIL] subtest: 'background-image: image-set(var(--y, attr(data-foo)))' with data-foo="https://does-not-exist.test/404.png"
    • PASS [expected FAIL] subtest: 'background-image: image-set(var(--some-string))' with data-foo="https://does-not-exist.test/404.png"
    • PASS [expected FAIL] subtest: 'background-image: image-set(var(--some-other-url))' with data-foo="https://does-not-exist.test/404.png"
    • PASS [expected FAIL] subtest: 'background-image: image-set(var(--image-set-valid))' with data-foo="image/jpeg"
  • OK /css/css-values/attr-universal-selector.html
    • PASS [expected FAIL] subtest: CSS Values and Units Test: attr() security limitations in universal selector
  • OK /css/css-values/if-cycle.html
    • PASS [expected FAIL] subtest: CSS Values and Units Test: CSS if() function cycles 2
    • PASS [expected FAIL] subtest: CSS Values and Units Test: CSS if() function cycles 3
    • PASS [expected FAIL] subtest: CSS Values and Units Test: CSS if() function cycles 16
  • OK /css/css-variables/revert-rule-in-fallback.html
    • PASS [expected FAIL] subtest: var(--unknown, revert-rule) in shorthand
    • PASS [expected FAIL] subtest: var(--unknown, revert-rule) in shorthand observed via longhand
    • PASS [expected FAIL] subtest: var(--unknown, revert-rule) in longhand
  • OK /css/css-variables/revert-rule-to-var.html
    • PASS [expected FAIL] subtest: Using revert-rule to revert to a value containing var()
  • OK /css/css-will-change/parsing/will-change-invalid.html
    • PASS [expected FAIL] subtest: e.style['will-change'] = "transform, revert-rule" should not set the property value
    • PASS [expected FAIL] subtest: e.style['will-change'] = "revert-rule, transform" should not set the property value
    • PASS [expected FAIL] subtest: e.style['will-change'] = "revert-rule, revert-rule" should not set the property value
  • PASS [expected FAIL] /html/rendering/the-details-element/details-pseudo-elements-004.html

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 2, 2026

⚠️ Try run (#23917334846) failed!

@Loirooriol Loirooriol force-pushed the stylo-upgrade branch 2 times, most recently from 2b204a2 to bf9c0f0 Compare April 2, 2026 20:20
@Loirooriol Loirooriol added the dependencies Pull requests that update a dependency file label Apr 2, 2026
@Loirooriol Loirooriol marked this pull request as ready for review April 2, 2026 20:27
@servo-highfive servo-highfive added the S-awaiting-review There is new code that needs to be reviewed. label Apr 2, 2026
Copy link
Copy Markdown
Contributor

@nicoburns nicoburns left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nothing that look obviously wrong to me with this or the Stylo PR. The tests/unit/style tests probably ought to move into the Stylo repo?

@servo-highfive servo-highfive removed the S-awaiting-review There is new code that needs to be reviewed. label Apr 2, 2026
@Loirooriol
Copy link
Copy Markdown
Contributor Author

The tests/unit/style tests probably ought to move into the Stylo repo?

Likely so, but servo/stylo#308 should be addressed first

Signed-off-by: Oriol Brufau <[email protected]>
Signed-off-by: Oriol Brufau <[email protected]>
@servo-highfive servo-highfive added the S-awaiting-review There is new code that needs to be reviewed. label Apr 2, 2026
@Loirooriol Loirooriol enabled auto-merge April 2, 2026 23:55
@Loirooriol Loirooriol added this pull request to the merge queue Apr 3, 2026
@servo-highfive servo-highfive added the S-awaiting-merge The PR is in the process of compiling and running tests on the automated CI. label Apr 3, 2026
Merged via the queue into servo:main with commit b058291 Apr 3, 2026
33 checks passed
@Loirooriol Loirooriol deleted the stylo-upgrade branch April 3, 2026 00:39
@servo-highfive servo-highfive removed the S-awaiting-merge The PR is in the process of compiling and running tests on the automated CI. label Apr 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file S-awaiting-review There is new code that needs to be reviewed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants