Skip to content

script: Don't always allocate NodeRareData when accessing WeakRangeVec - #46440

Merged
TimvdLippe merged 1 commit into
servo:mainfrom
mrobinson:weak-ranges-efficiency
Jul 13, 2026
Merged

script: Don't always allocate NodeRareData when accessing WeakRangeVec#46440
TimvdLippe merged 1 commit into
servo:mainfrom
mrobinson:weak-ranges-efficiency

Conversation

@mrobinson

@mrobinson mrobinson commented Jul 10, 2026

Copy link
Copy Markdown
Member

Previously the code would eagerly allocate NodeRareData when trying to
access a Node's WeakRangeVec (essentially live ranges) during
mutation. Some of the callsites were guarded with calls to
weak_ranges_is_empty, but others were not. This kind of thing can lead
to a lot of extra allocation during DOM mutation. This change splits the
getter into one that returns an Option and another that ensures that
the WeakRangeVec and NodeRareData exist. In addition, some addition
specification text is added naer edit sites.

Finally, a similar optimization is done for remove_mutation_observer.
When there is no rare data there is no mutation observer to remove.

This work might be useful if selection tracking is done via live ranges.

Testing: This should not change observable behavior, so is covered by existing tests.

@mrobinson
mrobinson requested a review from gterzian as a code owner July 10, 2026 13:44
@servo-highfive servo-highfive added the S-awaiting-review There is new code that needs to be reviewed. label Jul 10, 2026
…eVec`

Previously the code would eagerly allocate `NodeRareData` when trying to
access a Node's `WeakRangeVec` (essentially live ranges) during
mutation. Some of the callsites were guarded with calls to
`weak_ranges_is_empty`, but others were not. This kind of thing can lead
to a lot of extra allocation during DOM mutation. This change splits the
getter into one that returns an `Option` and another that ensures that
the `WeakRangeVec` and `NodeRareData` exist. In addition, some addition
specification text is added naer edit sites.

Finally, a similar optimization is done for `remove_mutation_observer`.
When there is no rare data there is no mutation observer to remove.

This work might be useful if selection tracking is done via live ranges.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
@mrobinson
mrobinson force-pushed the weak-ranges-efficiency branch from 4407fe3 to e69435d Compare July 10, 2026 13:45
@mrobinson mrobinson added the T-linux-wpt Do a try run of the WPT label Jul 11, 2026
@github-actions github-actions Bot removed the T-linux-wpt Do a try run of the WPT label Jul 11, 2026
@github-actions

Copy link
Copy Markdown

🔨 Triggering try run (#29146148354) for Linux (WPT)

@github-actions

Copy link
Copy Markdown

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

Flaky unexpected result (38)
  • OK /IndexedDB/idbdatabase_deleteObjectStore.any.html (#43823)
    • PASS [expected FAIL] subtest: Deleted object store's name should be removed from database's list. Attempting to use a deleted IDBObjectStore should throw an InvalidStateError
  • CRASH [expected OK] /_webgl/conformance/uniforms/no-over-optimization-on-uniform-array-14.html
  • TIMEOUT [expected OK] /_webgl/conformance/uniforms/no-over-optimization-on-uniform-array-16.html
  • TIMEOUT [expected OK] /_webgl/conformance2/state/gl-object-get-calls.html
    • NOTRUN [expected PASS] subtest: Overall test
  • OK /cookies/partitioned-cookies/partitioned-cookies-samesite-attribute.https.html (#45255)
    • 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
      

  • OK /css/css-fonts/matching/font-unicode-PUA.html (#46434)
    • PASS [expected FAIL] subtest: PUA character U+F000 is rendered with a non-generic font.
  • FAIL [expected PASS] /css/css-sizing/dynamic-available-size-iframe.html (#45763)
  • OK [expected TIMEOUT] /fetch/api/redirect/redirect-keepalive.https.any.html (#32153)
    • PASS [expected TIMEOUT] subtest: [keepalive][iframe][load] mixed content redirect; setting up
  • TIMEOUT [expected OK] /fetch/content-encoding/br/big-br-body.https.any.worker.html
    • TIMEOUT [expected PASS] subtest: large br data should be decompressed successfully

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: large br data should be decompressed successfully with byte stream
  • TIMEOUT [expected OK] /fetch/content-encoding/gzip/big-gzip-body.https.any.worker.html
    • TIMEOUT [expected PASS] subtest: large gzip data should be decompressed successfully

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: large gzip data should be decompressed successfully with byte stream
  • TIMEOUT [expected OK] /fetch/content-encoding/zstd/big-zstd-body.https.any.worker.html
    • TIMEOUT [expected PASS] subtest: large zstd data should be decompressed successfully

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: large zstd data should be decompressed successfully with byte stream
  • OK [expected ERROR] /fetch/fetch-later/quota/same-origin-iframe/multiple-iframes.https.window.html (#35176)
  • TIMEOUT [expected OK] /fetch/metadata/generated/css-font-face.https.sub.tentative.html
    • TIMEOUT [expected PASS] subtest: sec-fetch-site - Same-Origin -&gt; Same-Site

      Test timed out
      

    • NOTRUN [expected PASS] subtest: sec-fetch-site - Same-Origin -&gt; Cross-Site
    • NOTRUN [expected FAIL] subtest: sec-fetch-site - Same-Site -&gt; Same Origin
    • NOTRUN [expected PASS] subtest: sec-fetch-site - Same-Site -&gt; Same-Site
    • NOTRUN [expected PASS] subtest: sec-fetch-site - Same-Site -&gt; Cross-Site
    • NOTRUN [expected PASS] subtest: sec-fetch-mode
    • NOTRUN [expected PASS] subtest: sec-fetch-dest
    • NOTRUN [expected PASS] subtest: sec-fetch-user
    • NOTRUN [expected PASS] subtest: sec-fetch-storage-access - Cross-site
    • NOTRUN [expected PASS] subtest: sec-fetch-storage-access - Same site
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.html (#29056)
    • PASS [expected FAIL] subtest: Cross-origin navigation started from unload handler must be ignored
  • OK /html/browsers/browsing-the-web/navigating-across-documents/refresh/same-document-refresh.html (#34597)
    • FAIL [expected PASS] subtest: Same-Document Referrer from Refresh

      assert_equals: original page loads expected "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/refresh/resources/refresh-with-section.sub.html?url=%23section" but got "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/refresh/resources/refresh-with-section.sub.html?url=%23section#section"
      

  • OK /html/browsers/history/the-history-interface/traverse_the_history_2.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • CRASH [expected OK] /html/browsers/history/the-location-interface/assign-with-nested-iframe.html
  • TIMEOUT [expected ERROR] /html/browsers/history/the-location-interface/location_replace_session_history.html (#41896)
  • OK /html/browsers/windows/embedded-opener-remove-frame.html (#23867)
    • FAIL [expected PASS] subtest: opener of discarded auxiliary browsing context

      assert_object_equals: property "get" expected function "function opener() {
          [native code]
      }" got function "function opener() {
          [native code]
      }"
      

  • OK /html/semantics/embedded-content/media-elements/media_fragment_seek.html (#24114)
    • FAIL [expected PASS] subtest: Video should seek to time specified in media fragment syntax

      assert_equals: expected 4 but got 0
      

  • 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/forms/form-submission-0/jsurl-form-submit.tentative.html (#36489)
    • PASS [expected FAIL] subtest: Verifies that form submissions scheduled inside javascript: urls take precedence over the javascript: url's return value.
  • TIMEOUT [expected OK] /html/syntax/parsing/html5lib_write_single.html?file=tests14
    • TIMEOUT [expected PASS] subtest: &lt;!DOCTYPE html&gt;&lt;html&gt;&lt;body&gt;&lt;xyz:abc&gt;&lt;/xyz:abc&gt;

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: &lt;!DOCTYPE html&gt;&lt;html&gt;&lt;body&gt;&lt;xyz:abc&gt;&lt;/xyz:abc&gt;&lt;span&gt;&lt;/span&gt;

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: &lt;!DOCTYPE html&gt;&lt;html&gt;&lt;html abc:def=gh&gt;&lt;xyz:abc&gt;&lt;/xyz:abc&gt;

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: &lt;!DOCTYPE html&gt;&lt;html xml:lang=bar&gt;&lt;html xml:lang=foo&gt;

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: &lt;!DOCTYPE html&gt;&lt;html 123=456&gt;

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: &lt;!DOCTYPE html&gt;&lt;html 123=456&gt;&lt;html 789=012&gt;

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: &lt;!DOCTYPE html&gt;&lt;html&gt;&lt;body 789=012&gt;

      Test timed out
      

  • TIMEOUT [expected OK] /html/syntax/parsing/html5lib_write_single.html?file=tricky01
    • TIMEOUT [expected PASS] subtest: &lt;b&gt;&lt;p&gt;Bold &lt;/b&gt; Not bold&lt;/p&gt;\nAlso not bold.

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: &lt;html&gt;\n&lt;font color=red&gt;&lt;i&gt;Italic and Red&lt;p&gt;Italic and Red &lt;/font&gt; Just italic.&lt;/p&gt; Italic only.&lt;/i&gt; Plain\n&lt;p&gt;I should not be red. &lt;font color=red&gt;Red. &lt;i&gt;Italic and red.&lt;/p&gt;\n&lt;p&gt;Italic and red. &lt;/i&gt; Red.&lt;/font&gt; I should not be red.&lt;/p&gt;\n&lt;b&gt;Bold &lt;i&gt;Bold and italic&lt;/b&gt; Only Italic &lt;/i&gt; Plain

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: &lt;html&gt;&lt;body&gt;\n&lt;p&gt;&lt;font size="7"&gt;First paragraph.&lt;/p&gt;\n&lt;p&gt;Second paragraph.&lt;/p&gt;&lt;/font&gt;\n&lt;b&gt;&lt;p&gt;&lt;i&gt;Bold and Italic&lt;/b&gt; Italic&lt;/p&gt;

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: &lt;html&gt;\n&lt;dl&gt;\n&lt;dt&gt;&lt;b&gt;Boo\n&lt;dd&gt;Goo?\n&lt;/dl&gt;\n&lt;/html&gt;

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: &lt;html&gt;&lt;body&gt;\n&lt;label&gt;&lt;a&gt;&lt;div&gt;Hello&lt;div&gt;World&lt;/div&gt;&lt;/a&gt;&lt;/label&gt; \n&lt;/body&gt;&lt;/html&gt;

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: &lt;table&gt;&lt;center&gt; &lt;font&gt;a&lt;/center&gt; &lt;img&gt; &lt;tr&gt;&lt;td&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt;

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: &lt;table&gt;&lt;tr&gt;&lt;p&gt;&lt;a&gt;&lt;p&gt;You should see this text.

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: &lt;TABLE&gt;\n&lt;TR&gt;\n&lt;CENTER&gt;&lt;CENTER&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;\n&lt;FONT&gt;\n&lt;TABLE&gt;&lt;tr&gt;&lt;/tr&gt;&lt;/TABLE&gt;\n&lt;/P&gt;\n&lt;a&gt;&lt;/font&gt;&lt;font&gt;&lt;/a&gt;\nThis page contains an insanely badly-nested tag sequence.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: &lt;html&gt;\n&lt;body&gt;\n&lt;b&gt;&lt;nobr&gt;&lt;div&gt;This text is in a div inside a nobr&lt;/nobr&gt;More text that should not be in the nobr, i.e., the\nnobr should have closed the div inside it implicitly. &lt;/b&gt;&lt;pre&gt;A pre tag outside everything else.&lt;/pre&gt;\n&lt;/body&gt;\n&lt;/html&gt;
  • TIMEOUT [expected OK] /html/user-activation/navigation-state-reset-sameorigin.html (#45151)
    • TIMEOUT [expected FAIL] subtest: Post-navigation state reset.

      Test timed out
      

  • OK /html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html (#43671)
    • PASS [expected FAIL] subtest: document.write external script into iframe write back into parent
  • OK /mixed-content/tentative/autoupgrades/video-upgrade.https.sub.html (#41135)
    • FAIL [expected PASS] subtest: Video autoupgraded

      assert_equals: Length. expected 1 but got Infinity
      

  • OK /paint-timing/fcp-only/fcp-text-input.html
    • PASS [expected FAIL] subtest: Text input should become contentful when its value is non-empty
  • TIMEOUT [expected OK] /pointerevents/compat/pointerevent_touch-action_two-finger_interaction.html (#44693)
    • NOTRUN [expected PASS] subtest: touch two-finger pan on 'touch-action: pan-x pan-y'
    • NOTRUN [expected FAIL] subtest: touch two-finger pan on 'touch-action: pinch-zoom'
  • OK /resource-timing/buffer-full-then-increased.html (#44408)
    • PASS [expected FAIL] subtest: Test that overflowing the buffer and immediately increasing its limit does not trigger the resourcetimingbufferfull event
  • 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)
  • CRASH [expected ERROR] /svg/painting/parsing/marker-end-valid.svg
  • OK /touch-events/mouseevents-after-touchend.tentative.html
    • PASS [expected FAIL] subtest: Single tap should cause a click
    • PASS [expected FAIL] subtest: Tapping too far points should not cause a dblclick
  • CRASH [expected OK] /uievents/mouse/mousemove_prevent_default_action.html
  • OK /upgrade-insecure-requests/gen/sharedworker-module-data.meta/unset/fetch.https.html
    • FAIL [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for fetch to cross-http-downgrade origin and downgrade redirection from https context.

      assert_equals: The resource request should be 'blocked'. expected "blocked" but got "allowed"
      

    • FAIL [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for fetch to cross-http-downgrade origin and no-redirect redirection from https context.

      assert_equals: The resource request should be 'blocked'. expected "blocked" but got "allowed"
      

    • FAIL [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for fetch to cross-https origin and downgrade redirection from https context.

      assert_equals: The resource request should be 'blocked'. expected "blocked" but got "allowed"
      

    • FAIL [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for fetch to same-http-downgrade origin and downgrade redirection from https context.

      assert_equals: The resource request should be 'blocked'. expected "blocked" but got "allowed"
      

    • FAIL [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for fetch to same-http-downgrade origin and no-redirect redirection from https context.

      assert_equals: The resource request should be 'blocked'. expected "blocked" but got "allowed"
      

    • FAIL [expected PASS] subtest: Upgrade-Insecure-Requests: Expects blocked for fetch to same-https origin and downgrade redirection from https context.

      assert_equals: The resource request should be 'blocked'. expected "blocked" but got "allowed"
      

  • 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[24527] |-3671207182336 - -0.9742898344993591| = 3671207182335.026 &gt; 0.0038986 expected -0.9742898344993591 +/- 0.0038986 but got -3671207182336
      

Stable unexpected results that are known to be intermittent (15)
  • TIMEOUT /FileAPI/url/url-in-tags-revoke.window.html (#19978)
    • PASS [expected TIMEOUT] subtest: Fetching a blob URL immediately before revoking it works in &lt;script&gt; tags.
  • OK /_webgl/conformance/textures/misc/texture-upload-size.html (#21770)
    • FAIL [expected PASS] subtest: WebGL test #45

      assert_true: Texture was smaller than the expected size 2x2 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #47

      assert_true: getError expected: INVALID_VALUE. Was NO_ERROR : when calling texSubImage2D with the same texture upload with offset 1, 1 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #49

      assert_true: Texture was smaller than the expected size 2x2 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #51

      assert_true: getError expected: INVALID_VALUE. Was NO_ERROR : when calling texSubImage2D with the same texture upload with offset 1, 1 expected true got false
      

    • PASS [expected FAIL] subtest: WebGL test #53
    • PASS [expected FAIL] subtest: WebGL test #55
    • PASS [expected FAIL] subtest: WebGL test #57
    • PASS [expected FAIL] subtest: WebGL test #59
    • FAIL [expected PASS] subtest: WebGL test #61

      assert_true: Texture was smaller than the expected size 2x2 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #63

      assert_true: getError expected: INVALID_VALUE. Was NO_ERROR : when calling texSubImage2D with the same texture upload with offset 1, 1 expected true got false
      

    • And 6 more unexpected results...
  • OK /beacon/beacon-basic.https.window.html (#41723)
    • FAIL [expected PASS] subtest: Payload size restriction should be accumulated: type = blob

      assert_false: expected false got true
      

  • TIMEOUT [expected OK] /credential-management/credentialscontainer-frame-basics.https.html (#39430)
    • TIMEOUT [expected FAIL] subtest: navigator.credentials should be undefined in documents generated from data: URLs.

      Test timed out
      

  • OK /dom/nodes/moveBefore/iframe-document-preserve.window.html (#43152)
    • FAIL [expected PASS] subtest: moveBefore(): cross-origin iframe is preserved: remove new parent

      assert_equals: iframe does not fire a second load event expected 1 but got 0
      

  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/update-the-rendering.html (#24145)
    • FAIL [expected TIMEOUT] subtest: "Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks

      assert_array_equals: animationFrame lengths differ, expected array ["autofocus", "scroll", "animationFrame"] length 3, got ["animationFrame"] length 1
      

  • TIMEOUT /html/syntax/parsing/html5lib_write.html?file=processing-instructions (#46205)
    • TIMEOUT [expected PASS] subtest: &lt;body&gt;&lt;?data.v1&gt;

      Test timed out
      

  • OK [expected TIMEOUT] /html/syntax/parsing/html5lib_write_single.html?file=processing-instructions (#46206)
  • OK [expected ERROR] /intersection-observer/v2/animated-opacity.html (#40827)
  • OK /resource-timing/test_resource_timing.html (#25720)
    • PASS [expected FAIL] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (iframe)
  • OK /touch-events/hover-state-caused-by-compatibility-mouse-events.tentative.html (#46277)
    • FAIL [expected PASS] subtest: The compatibility mouse events should set :hover, but shouldn't be preserved after the target is replaced: The compatibility mouse events should be fired

      assert_equals: expected "[{ type: \"mouseover\", target: div.target },{ type: \"mousemove\", target: div.target },{ type: \"mousedown\", target: div.target },{ type: \"mouseup\", target: div.target },{ type: \"click\", target: div.target }]" but got "[]"
      

  • 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"
      

  • OK [expected TIMEOUT] /trusted-types/trusted-types-navigation.html?11-15 (#44834)
    • PASS [expected TIMEOUT] subtest: Navigate a window via area with javascript:-urls in report-only mode.
  • TIMEOUT [expected OK] /trusted-types/trusted-types-navigation.html?16-20 (#44835)
    • TIMEOUT [expected PASS] subtest: Navigate a frame via area with javascript:-urls w/ default policy in enforcing mode.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Navigate a frame via area with javascript:-urls in report-only mode.
    • NOTRUN [expected PASS] subtest: Navigate a frame via area with javascript:-urls w/ default policy in report-only mode.
  • TIMEOUT [expected OK] /webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.html (#29053)
    • TIMEOUT [expected FAIL] subtest: StorageKey: test 3P about:blank window opened from a 3P iframe

      Test timed out
      

Stable unexpected results (1)
  • OK /css/css-cascade/layer-font-face-override.html
    • FAIL [expected PASS] subtest: @font-face override update with appended sheet 1

      assert_equals: expected "80px" but got "38.3166666666667px"
      

    • FAIL [expected PASS] subtest: @font-face override update with appended sheet 2

      assert_equals: expected "80px" but got "38.3166666666667px"
      

@github-actions

Copy link
Copy Markdown

⚠️ Try run (#29146148354) failed!

@mrobinson

Copy link
Copy Markdown
Member Author

The failure here seems to be #35935.

@mrobinson mrobinson added the T-linux-wpt Do a try run of the WPT label Jul 13, 2026
@github-actions github-actions Bot removed the T-linux-wpt Do a try run of the WPT label Jul 13, 2026
@github-actions

Copy link
Copy Markdown

🔨 Triggering try run (#29242382438) for Linux (WPT)

@github-actions

Copy link
Copy Markdown

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

Flaky unexpected result (46)
  • OK /IndexedDB/idbdatabase_deleteObjectStore.any.sharedworker.html (#45919)
    • PASS [expected FAIL] subtest: Deleted object store's name should be removed from database's list. Attempting to use a deleted IDBObjectStore should throw an InvalidStateError
  • TIMEOUT [expected OK] /_mozilla/shadow-dom/getrootnode-in-deeply-nested-shadow.html
  • TIMEOUT [expected OK] /_webgl/conformance/reading/read-pixels-test.html
  • OK [expected TIMEOUT] /_webgl/conformance/textures/misc/tex-video-using-tex-unit-non-zero.html (#39735)
    • PASS [expected NOTRUN] subtest: Overall test
    • PASS [expected FAIL] subtest: WebGL test #0
  • TIMEOUT [expected OK] /_webgl/conformance/uniforms/no-over-optimization-on-uniform-array-06.html
    • NOTRUN [expected PASS] subtest: Overall test
  • TIMEOUT [expected OK] /_webgl/conformance2/sync/sync-webgl-specific.html
  • CRASH [expected OK] /_webgl/conformance2/wasm/readpixels-2gb-in-4gb-wasm-memory.html
  • OK /cookies/partitioned-cookies/partitioned-cookies-samesite-attribute.https.html (#45255)
    • 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
      

  • OK /css/css-grid/alignment/grid-alignment-implies-size-change-010.html
    • FAIL [expected PASS] subtest: .after 2

      assert_equals: 
      &lt;div data-expected-width="100" id="item" class=" before after" data-expected-height="100"&gt;XX X&lt;br&gt;X XXX&lt;br&gt;X&lt;br&gt;XX XXX&lt;/div&gt;
      height expected 100 but got 80
      

  • FAIL [expected PASS] /css/css-sizing/dynamic-available-size-iframe.html (#45763)
  • CRASH [expected OK] /dom/nodes/NodeList-static-length-getter-tampered-indexOf-3.html
  • TIMEOUT [expected OK] /fetch/content-encoding/zstd/big-zstd-body.https.any.html
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html (#20768)
    • FAIL [expected PASS] subtest: Tests that a fragment navigation in the unload handler will not block the initial navigation

      assert_equals: expected "" but got "#fragment"
      

  • 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
  • OK /html/browsers/browsing-the-web/navigating-across-documents/refresh/same-document-refresh.html (#34597)
    • FAIL [expected PASS] subtest: Same-Document Referrer from Refresh

      assert_equals: original page loads expected "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/refresh/resources/refresh-with-section.sub.html?url=%23section" but got "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/refresh/resources/refresh-with-section.sub.html?url=%23section#section"
      

  • TIMEOUT [expected OK] /html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-requestsubmit.html (#44098)
    • TIMEOUT [expected FAIL] subtest: Replace before load, triggered by formElement.requestSubmit()

      Test timed out
      

  • TIMEOUT /html/browsers/history/the-history-interface/001.html (#12580)
    • FAIL [expected PASS] subtest: traversing history must also traverse hash changes

      assert_equals: (this could cause other failures later on) expected "" but got "test"
      

  • OK /html/browsers/history/the-history-interface/traverse_the_history_3.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • 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 /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • TIMEOUT [expected ERROR] /html/browsers/history/the-location-interface/location_replace_session_history.html (#41896)
  • OK /html/browsers/windows/embedded-opener-remove-frame.html (#23867)
    • FAIL [expected PASS] subtest: opener of discarded auxiliary browsing context

      assert_object_equals: property "get" expected function "function opener() {
          [native code]
      }" got function "function opener() {
          [native code]
      }"
      

  • OK /html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html (#29087)
    • FAIL [expected PASS] subtest: &lt;dialog&gt;-contained autofocus element gets focused when the dialog is shown

      promise_test: Unhandled rejection with value: object "TypeError: can't access property "innerHTML", w.document.body is null"
      

  • OK /html/semantics/embedded-content/media-elements/seeking/seek-to-currentTime.html (#46014)
    • FAIL [expected PASS] subtest: seek to currentTime

      assert_array_equals: fired events lengths differ, expected array ["seeking", "timeupdate", "seeked"] length 3, got ["seeking", "timeupdate", "timeupdate", "seeked"] length 4
      

  • OK /html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-reload-location-reload.html (#32595)
    • FAIL [expected PASS] subtest: Reloading iframe loading='lazy' before it is loaded: location.reload

      uncaught exception: Error: assert_equals: expected "http://web-platform.test:8000/html/semantics/embedded-content/the-iframe-element/support/blank.htm?src" but got "about:blank"
      

  • 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/forms/form-submission-0/jsurl-form-submit.tentative.html (#36489)
    • PASS [expected FAIL] subtest: Verifies that form submissions scheduled inside javascript: urls take precedence over the javascript: url's return value.
  • TIMEOUT [expected OK] /html/syntax/parsing/html5lib_write.html?file=namespace-sensitivity
    • TIMEOUT [expected PASS] subtest: &lt;body&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;svg&gt;&lt;td&gt;&lt;foreignObject&gt;&lt;span&gt;&lt;/td&gt;Foo

      Test timed out
      

  • TIMEOUT [expected OK] /html/syntax/parsing/html5lib_write.html?file=scriptdata01
    • TIMEOUT [expected PASS] subtest: FOO&lt;script&gt;'Hello'&lt;/script&gt;BAR

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: FOO&lt;script&gt;&lt;/script&gt;BAR

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: FOO&lt;script&gt;&lt;/script &gt;BAR

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: FOO&lt;script&gt;&lt;/script/&gt;BAR

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: FOO&lt;script&gt;&lt;/script/ &gt;BAR

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: FOO&lt;script type="text/plain"&gt;&lt;/scriptx&gt;BAR

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: FOO&lt;script&gt;&lt;/script foo="&gt;" dd&gt;BAR

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: FOO&lt;script&gt;'&lt;'&lt;/script&gt;BAR

      Test timed out
      

    • NOTRUN [expected PASS] subtest: FOO&lt;script&gt;'&lt;!'&lt;/script&gt;BAR
    • NOTRUN [expected PASS] subtest: FOO&lt;script&gt;'&lt;!-'&lt;/script&gt;BAR
    • And 16 more unexpected results...
  • TIMEOUT [expected OK] /html/syntax/parsing/html5lib_write_single.html?file=scripted_webkit01
    • TIMEOUT [expected PASS] subtest: 1&lt;script&gt;document.write("2")&lt;/script&gt;3

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: 1&lt;script&gt;document.write("&lt;script&gt;document.write('2')&lt;/scr"+ "ipt&gt;&lt;script&gt;document.write('3')&lt;/scr" + "ipt&gt;")&lt;/script&gt;4

      Test timed out
      

  • TIMEOUT [expected OK] /html/user-activation/navigation-state-reset-sameorigin.html (#45151)
    • TIMEOUT [expected FAIL] subtest: Post-navigation state reset.

      Test timed out
      

  • OK /html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html (#43671)
    • PASS [expected FAIL] subtest: document.write external script into iframe write back into parent
  • OK /infrastructure/testdriver/click_iframe.html
    • FAIL [expected PASS] subtest: TestDriver click on a document in an iframe

      Unhandled rejection: assert_unreached: click failed Reached unreachable code
      

  • TIMEOUT [expected OK] /infrastructure/testdriver/click_nested.html (#43887)
    • NOTRUN [expected FAIL] subtest: TestDriver click method with multiple windows and nested iframe
  • TIMEOUT [expected OK] /pointerevents/compat/pointerevent_touch-action_two-finger_interaction.html (#44693)
    • NOTRUN [expected PASS] subtest: touch two-finger pan on 'touch-action: pan-x pan-y'
    • NOTRUN [expected FAIL] subtest: touch two-finger pan on 'touch-action: pinch-zoom'
  • OK /pointerevents/pointerevent_pointercapture_in_frame.html?touch (#45445)
    • FAIL [expected PASS] subtest: Test touchpointer capture in same-origin frame: Pointer down at inner frame and set pointer capture.

      assert_true: Timed out waiting for lostpointercapture expected true got false
      

    • FAIL [expected PASS] subtest: Test touchpointer capture in same-origin frame: Pointer down at inner frame and set pointer capture to outer frame should not capture.

      assert_array_equals: Received events: innerFrame received pointerdown,innerFrame received pointermove,innerFrame received pointerup,innerFrame received lostpointercapture lengths differ, expected array ["innerFrame received pointerdown", "innerFrame received pointermove", "innerFrame received pointerup"] length 3, got ["innerFrame received pointerdown", "innerFrame received pointermove", "innerFrame received pointerup", "innerFrame received lostpointercapture"] length 4
      

    • PASS [expected FAIL] subtest: Test touchpointer capture in same-origin frame: Pointerdown with set capture at inner frame, then release on next pointermove.
  • OK /resize-observer/observer-in-cross-origin-frame.sub.html
    • FAIL [expected PASS] subtest: Cross-origin observer responds to explicitly set physical size

      assert_equals: expected 200 but got 284
      

  • 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 /sanitizer-api/sanitizer-inert-document.html (#45260)
    • FAIL [expected PASS] subtest: Test whether setHTML loads the image.

      promise_test: Unhandled rejection with value: "The server observed a request. It shouldn't have."
      

    • PASS [expected FAIL] subtest: Test whether setHTMLUnsafe loads the image.
  • OK /touch-events/hover-state-caused-by-compatibility-mouse-events.tentative.html (#46277)
    • FAIL [expected PASS] subtest: The compatibility mouse events should set :hover: The compatibility mouse events should be fired

      assert_equals: expected "[{ type: \"mouseover\", target: div.target },{ type: \"mousemove\", target: div.target },{ type: \"mousedown\", target: div.target },{ type: \"mouseup\", target: div.target },{ type: \"click\", target: div.target }]" but got "[{ type: \"mouseover\", target: div.target },{ type: \"mousemove\", target: div.target },{ type: \"mousedown\", target: div.target }]"
      

    • FAIL [expected PASS] subtest: The compatibility mouse events should set :hover, but shouldn't be preserved after the target is replaced: The compatibility mouse events should be fired

      assert_equals: expected "[{ type: \"mouseover\", target: div.target },{ type: \"mousemove\", target: div.target },{ type: \"mousedown\", target: div.target },{ type: \"mouseup\", target: div.target },{ type: \"click\", target: div.target }]" but got "[]"
      

  • CRASH [expected OK] /trusted-types/require-trusted-types-for.html
  • TIMEOUT /trusted-types/trusted-types-navigation.html?06-10 (#37920)
    • FAIL [expected PASS] subtest: Navigate a frame via anchor with javascript:-urls 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 /visual-viewport/resize-event-order.html (#41981)
    • FAIL [expected PASS] subtest: Popup: DOMWindow resize fired before VisualViewport.

      assert_equals: expected "window-attribute,window-addEventListener,visualViewport-attribute,visualViewport-addEventListener" but got ""
      

  • OK /webdriver/tests/classic/perform_actions/pointer_pen.py
    • FAIL [expected PASS] subtest: test_pen_pointer_in_shadow_tree[outer-open]

      AssertionError
      

    • FAIL [expected PASS] subtest: test_pen_pointer_in_shadow_tree[outer-closed]

      AssertionError
      

    • FAIL [expected PASS] subtest: test_pen_pointer_in_shadow_tree[inner-open]

      AssertionError
      

    • FAIL [expected PASS] subtest: test_pen_pointer_in_shadow_tree[inner-closed]

      AssertionError
      

  • OK /webxr/xrSession_features_deviceSupport.https.html (#24357)
    • FAIL [expected PASS] subtest: Immersive XRSession requests with no supported device should reject

      assert_unreached: Should have rejected: undefined Reached unreachable code
      

Stable unexpected results that are known to be intermittent (19)
  • OK /_webgl/conformance/textures/misc/texture-upload-size.html (#21770)
    • FAIL [expected PASS] subtest: WebGL test #45

      assert_true: Texture was smaller than the expected size 2x2 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #47

      assert_true: getError expected: INVALID_VALUE. Was NO_ERROR : when calling texSubImage2D with the same texture upload with offset 1, 1 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #49

      assert_true: Texture was smaller than the expected size 2x2 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #51

      assert_true: getError expected: INVALID_VALUE. Was NO_ERROR : when calling texSubImage2D with the same texture upload with offset 1, 1 expected true got false
      

    • PASS [expected FAIL] subtest: WebGL test #53
    • PASS [expected FAIL] subtest: WebGL test #55
    • PASS [expected FAIL] subtest: WebGL test #57
    • PASS [expected FAIL] subtest: WebGL test #59
    • FAIL [expected PASS] subtest: WebGL test #61

      assert_true: Texture was smaller than the expected size 2x2 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #63

      assert_true: getError expected: INVALID_VALUE. Was NO_ERROR : when calling texSubImage2D with the same texture upload with offset 1, 1 expected true got false
      

    • And 6 more unexpected results...
  • OK /beacon/beacon-basic.https.window.html (#41723)
    • FAIL [expected PASS] subtest: Payload size restriction should be accumulated: type = string

      assert_false: expected false got true
      

  • OK [expected TIMEOUT] /content-security-policy/inheritance/auxiliary-blank-document.html (#44821)
    • FAIL [expected TIMEOUT] subtest: window.open() inherits CSPs on transient about:blank.

      assert_equals: expected "securitypolicyviolation" but got "load"
      

  • OK /css/css-cascade/layer-font-face-override.html (#35935)
    • FAIL [expected PASS] subtest: @font-face override update with appended sheet 1

      assert_equals: expected "80px" but got "38.3166666666667px"
      

    • FAIL [expected PASS] subtest: @font-face override update with appended sheet 2

      assert_equals: expected "80px" but got "38.3166666666667px"
      

  • OK /dom/nodes/moveBefore/iframe-document-preserve.window.html (#43152)
    • FAIL [expected PASS] subtest: moveBefore(): cross-origin iframe is preserved: remove self via innerHTML

      assert_equals: iframe does not fire a second load event expected 1 but got 0
      

  • OK [expected TIMEOUT] /fetch/api/redirect/redirect-keepalive.https.any.html (#32153)
    • PASS [expected TIMEOUT] subtest: [keepalive][iframe][load] mixed content redirect; setting up
  • TIMEOUT /fetch/metadata/generated/css-images.sub.tentative.html (#29047)
    • FAIL [expected PASS] subtest: content sec-fetch-site - HTTPS downgrade-upgrade

      assert_unreached: Reached unreachable code
      

  • TIMEOUT [expected OK] /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • TIMEOUT [expected FAIL] subtest: Host element with delegatesFocus including no focusable descendants should be skipped

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Area element should support autofocus
  • OK /html/semantics/embedded-content/media-elements/media_fragment_seek.html (#24114)
    • FAIL [expected PASS] subtest: Video should seek to time specified in media fragment syntax

      assert_equals: expected 3 but got 0
      

  • OK [expected TIMEOUT] /html/syntax/parsing/html5lib_write.html?file=processing-instructions (#46205)
  • TIMEOUT /html/syntax/parsing/html5lib_write_single.html?file=processing-instructions (#46206)
    • TIMEOUT [expected FAIL] subtest: &lt;div&gt;&lt;?something&gt;&lt;/div&gt;

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: &lt;div&gt;&lt;?something good&gt;&lt;/div&gt;

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: &lt;table&gt;&lt;?something&gt;&lt;/table&gt;

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: &lt;table&gt;&lt;tr&gt;&lt;?something&gt;&lt;/tr&gt;&lt;/table&gt;

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: &lt;script&gt;&lt;?something&gt;&lt;/script&gt;

      Test timed out
      

  • OK [expected ERROR] /intersection-observer/v2/animated-opacity.html (#40827)
  • 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)
    • FAIL [expected PASS] subtest: Validate render blocking status of link resources in PerformanceResourceTiming

      assert_equals: render blocking status for http://web-platform.test:8000/resource-timing/resources/empty_style.css?stylesheet-head-dynamic-docWrite should be blocking expected (string) "blocking" but got (undefined) undefined
      

  • OK /resource-timing/test_resource_timing.https.html (#25216)
    • PASS [expected FAIL] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (img)
  • 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"
      

  • TIMEOUT [expected OK] /trusted-types/trusted-types-navigation.html?16-20 (#44835)
    • TIMEOUT [expected PASS] subtest: Navigate a frame via area with javascript:-urls w/ default policy in enforcing mode.

      Test timed out
      

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

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Navigate a frame via form-submission with javascript:-urls w/ default policy in report-only mode.
    • NOTRUN [expected FAIL] subtest: Navigate a window via form-submission with javascript:-urls w/ a default policy throwing an exception in enforcing mode.
    • NOTRUN [expected FAIL] subtest: Navigate a window via form-submission with javascript:-urls w/ a default policy throwing an exception in report-only mode.
    • NOTRUN [expected FAIL] subtest: Navigate a window via form-submission with javascript:-urls w/ a default policy making the URL invalid in enforcing mode.
  • TIMEOUT [expected OK] /webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.html (#29053)
    • TIMEOUT [expected FAIL] subtest: StorageKey: test 3P about:blank window opened from a 3P iframe

      Test timed out
      

@github-actions

Copy link
Copy Markdown

✨ Try run (#29242382438) succeeded.

@servo-highfive servo-highfive removed the S-awaiting-review There is new code that needs to be reviewed. label Jul 13, 2026
@TimvdLippe
TimvdLippe added this pull request to the merge queue Jul 13, 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 Jul 13, 2026
Merged via the queue into servo:main with commit 96d984d Jul 13, 2026
107 of 108 checks passed
@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 Jul 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants