Skip to content

html: Support selecting <media> element source from children#39717

Merged
jdm merged 1 commit intoservo:mainfrom
tharkum:html-media-resource-selection-source-children
Oct 9, 2025
Merged

html: Support selecting <media> element source from children#39717
jdm merged 1 commit intoservo:mainfrom
tharkum:html-media-resource-selection-source-children

Conversation

@tharkum
Copy link
Copy Markdown
Contributor

@tharkum tharkum commented Oct 8, 2025

Follow the HTML implemetation and support selection of the 'media' element loading source from 'source' children elements with validation processing over their 'media/src/type' attributes.

See https://html.spec.whatwg.org/multipage/#concept-media-load-algorithm

To handle loading with multiple 'source' children was introduced source children pointer to track the remaining unprocessed 'source' elements after the resource selection algorithm was invoked.

Testing: Changes in the following tests
with improvements:

  • html/semantics/embedded-content/media-elements/loading-the-media-resource/*
  • webgl/tests/conformance/textures/misc/texture-video-transparent.html

with regressions (after enabled 'source' type attribute validation):

  • content-security-policy/media-src/media-src*
  • mixed-content/gen/top*audio|video-tag*
  • resource-timing/initiator-type/*

Fixes: #21481
Fixes: #34127

@tharkum tharkum requested a review from gterzian as a code owner October 8, 2025 13:13
@servo-highfive servo-highfive added the S-awaiting-review There is new code that needs to be reviewed. label Oct 8, 2025
@tharkum
Copy link
Copy Markdown
Contributor Author

tharkum commented Oct 8, 2025

JFYI < Almost all following tests were fixed, except the next:

  • resource-selection-currentSrc.html (not implemented MediaSource in Servo)
  • resource-selection-invoke-in-sync-event.html (buggy test itself)
  • resource-selection-source-media-env-change.html (buggy WindowProxy in Servo)

@tharkum tharkum requested review from jdm and mrobinson October 8, 2025 13:17
@tharkum tharkum added the T-linux-wpt Do a try run of the WPT label Oct 8, 2025
@github-actions github-actions bot removed the T-linux-wpt Do a try run of the WPT label Oct 8, 2025
@github-actions
Copy link
Copy Markdown

github-actions bot commented Oct 8, 2025

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

@github-actions
Copy link
Copy Markdown

github-actions bot commented Oct 8, 2025

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

Flaky unexpected result (24)
  • OK /IndexedDB/delete-request-queue.any.html (#39162)
    • PASS [expected FAIL] subtest: Deletes are processed as a FIFO queue
  • OK /IndexedDB/idbfactory_open.any.html
    • FAIL [expected PASS] subtest: Calling open() with version argument 1.5 should not throw.

      assert_equals: version expected 1 but got 9007199254740991
      

  • OK /_mozilla/css/offset_properties_inline.html
    • FAIL [expected PASS] subtest: offsetTop

      assert_equals: offsetTop of #inline-1 should be 0. expected 0 but got -1
      

    • FAIL [expected PASS] subtest: offsetLeft

      assert_equals: offsetLeft of #inline-2 should be 40. expected 40 but got 25
      

  • 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
      

  • FAIL [expected PASS] /css/CSS2/bidi-text/direction-applies-to-002.xht
  • FAIL [expected PASS] /css/CSS2/normal-flow/block-non-replaced-height-005.xht
  • FAIL [expected PASS] /css/WOFF2/metadatadisplay-schema-extension-008.xht
  • FAIL [expected PASS] /css/WOFF2/metadatadisplay-schema-trademark-029.xht
  • FAIL [expected PASS] /css/WOFF2/metadatadisplay-schema-vendor-006.xht
  • FAIL [expected PASS] /css/WOFF2/metadatadisplay-well-formed-006.xht
  • FAIL [expected PASS] /css/css-fonts/font-palette-11.html
  • TIMEOUT [expected OK] /fetch/api/redirect/redirect-keepalive.https.any.html (#32153)
    • TIMEOUT [expected PASS] subtest: [keepalive][iframe][load] mixed content redirect; setting up

      Test timed out
      

  • 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/initial-empty-document/iframe-nosrc.html (#34819)
    • PASS [expected FAIL] subtest: link click
  • 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"
      

  • TIMEOUT [expected PASS] /html/browsers/origin/origin-keyed-agent-clusters/popups-crash.https.html
  • TIMEOUT [expected OK] /html/browsers/sandboxing/sandbox-initial-empty-document-toward-same-origin.html (#35948)
    • TIMEOUT [expected PASS] subtest: Check sandbox-flags inheritance in case of javascript window reuse.

      Test timed out
      

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

      this argument is not a finite floating-point value
      

  • TIMEOUT [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html (#24066)
    • NOTRUN [expected FAIL] subtest: Check that popups from a sandboxed iframe do not escape the sandbox
  • 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 /preload/preload-xhr.html (#39092)
    • FAIL [expected PASS] subtest: Make an XHR request immediately after creating link rel=preload.

      assert_equals: resources/dummy.xml?token=0defb040-b772-4ffe-8138-087065ae474a expected 1 but got 0
      

  • OK /service-workers/service-worker/fetch-event.https.html (#36234)
    • PASS [expected FAIL] subtest: Service Worker falls back to network in fetch event with POST form
  • TIMEOUT /trusted-types/trusted-types-navigation.html?06-10 (#37920)
    • PASS [expected FAIL] subtest: Navigate a frame via anchor with javascript:-urls in report-only mode.
  • ERROR [expected OK] /workers/baseurl/alpha/import-in-moduleworker.html (#21315)
Stable unexpected results that are known to be intermittent (31)
  • OK /IndexedDB/idbcursor-continuePrimaryKey-exceptions.any.worker.html (#39277)
    • FAIL [expected PASS] subtest: IDBCursor continuePrimaryKey() on object store cursor

      assert_throws_dom: continuePrimaryKey() should throw if source is not an index function "function() {
              cursor.continuePrimaryKey(2, 2);
            }" threw object "TypeError: cursor.continuePrimaryKey is not a function" that is not a DOMException InvalidAccessError: property "code" is equal to undefined, expected 15
      

  • OK /IndexedDB/idbobjectstore_getAll.any.html (#39276)
    • PASS [expected FAIL] subtest: Get all values with transaction.commit()
  • OK /IndexedDB/idbobjectstore_getAll.any.worker.html (#39400)
    • PASS [expected FAIL] subtest: Get all values with transaction.commit()
  • OK /IndexedDB/key-conversion-exceptions.any.html (#39305)
    • FAIL [expected PASS] subtest: IDBCursor continue() method with throwing/invalid keys

      assert_throws_exactly: key conversion with throwing getter should rethrow function "() =&gt; {
            receiver[method](key);
          }" threw object "TypeError: receiver[method] is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • OK /IndexedDB/key-conversion-exceptions.any.worker.html (#39284)
    • FAIL [expected PASS] subtest: IDBCursor continue() method with throwing/invalid keys

      assert_throws_exactly: key conversion with throwing getter should rethrow function "() =&gt; {
            receiver[method](key);
          }" threw object "TypeError: receiver[method] is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • FAIL [expected PASS] /_mozilla/css/iframe/hide_and_show.html (#15265)
  • 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
      

  • TIMEOUT [expected PASS] /_mozilla/shadow-dom/move-element-with-ua-shadow-tree-crash.html (#39473)
  • OK /_webgl/conformance/textures/misc/texture-upload-size.html (#21770)
    • PASS [expected FAIL] subtest: WebGL test #45
    • PASS [expected FAIL] subtest: WebGL test #47
    • PASS [expected FAIL] subtest: WebGL test #49
    • PASS [expected FAIL] subtest: WebGL test #51
    • FAIL [expected PASS] subtest: WebGL test #53

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

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

      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 #57

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

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

      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 #61
    • PASS [expected FAIL] subtest: WebGL test #63
    • And 18 more unexpected results...
  • FAIL [expected PASS] /css/compositing/mix-blend-mode/mix-blend-mode-video.html (#32763)
  • OK /css/css-fonts/variations/font-weight-matching.html (#38577)
    • FAIL [expected PASS] subtest: Test @font-face matching for weight 600

      assert_approx_equals: @font-face should be mapped to CSSTest Weights 200. expected 90 +/- 2 but got 92.56666666666666
      

    • FAIL [expected PASS] subtest: Test @font-face matching for weight 750

      assert_approx_equals: @font-face should be mapped to CSSTest Weights 200. expected 90 +/- 2 but got 92.56666666666666
      

    • FAIL [expected PASS] subtest: Test @font-face matching for weight 751

      assert_approx_equals: @font-face should be mapped to CSSTest Weights 100. expected 90 +/- 2 but got 92.56666666666666
      

    • FAIL [expected PASS] subtest: Test @font-face matching for weight 900

      assert_approx_equals: @font-face should be mapped to CSSTest Weights 100. expected 90 +/- 2 but got 92.56666666666666
      

    • FAIL [expected PASS] subtest: Test @font-face matching for weight 1000

      assert_approx_equals: @font-face should be mapped to CSSTest Weights 100. expected 90 +/- 2 but got 92.56666666666666
      

  • TIMEOUT [expected FAIL] /dom/xslt/large-cdata.html (#38029)
  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • FAIL [expected PASS] subtest: sec-fetch-dest

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

  • 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
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.html (#29056)
    • FAIL [expected PASS] subtest: Cross-origin navigation started from unload handler must be ignored

      promise_test: Unhandled rejection with value: object "SecurityError: The operation is insecure."
      

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

  • OK [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html (#24057)
    • FAIL [expected TIMEOUT] subtest: Check that popups from a sandboxed iframe escape the sandbox if allow-popups-to-escape-sandbox is used

      assert_equals: It came from a sandboxed iframe expected "null" but got "http://web-platform.test:8000"
      

  • OK [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html (#24066)
  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • FAIL [expected PASS] subtest: application/x-www-form-urlencoded: Basic test (normal form)

      assert_equals: expected "basic=test" but got ""
      

  • OK [expected CRASH] /html/semantics/forms/the-fieldset-element/disabled-003.html (#31730, #39631)
  • OK [expected TIMEOUT] /mixed-content/gen/top.http-rp/opt-in/audio-tag.https.html (#35744)
    • PASS [expected TIMEOUT] subtest: Mixed-Content: Expects blocked for audio-tag to cross-http origin and keep-scheme redirection from https context.
    • PASS [expected NOTRUN] subtest: Mixed-Content: Expects blocked for audio-tag to cross-http origin and no-redirect redirection from https context.
    • PASS [expected NOTRUN] subtest: Mixed-Content: Expects blocked for audio-tag to cross-http origin and swap-scheme redirection from https context.
    • FAIL [expected NOTRUN] subtest: Mixed-Content: Expects blocked for audio-tag to cross-https origin and swap-scheme redirection from https context.

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

    • PASS [expected NOTRUN] subtest: Mixed-Content: Expects blocked for audio-tag to same-http origin and keep-scheme redirection from https context.
    • PASS [expected NOTRUN] subtest: Mixed-Content: Expects blocked for audio-tag to same-http origin and no-redirect redirection from https context.
    • PASS [expected NOTRUN] subtest: Mixed-Content: Expects blocked for audio-tag to same-http origin and swap-scheme redirection from https context.
    • FAIL [expected NOTRUN] subtest: Mixed-Content: Expects blocked for audio-tag to same-https origin and swap-scheme redirection from https context.

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

  • OK [expected TIMEOUT] /mixed-content/gen/top.meta/unset/audio-tag.https.html (#35744)
    • FAIL [expected TIMEOUT] subtest: Mixed-Content: Expects allowed for audio-tag to cross-http origin and keep-scheme redirection from https context.

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

    • FAIL [expected NOTRUN] subtest: Mixed-Content: Expects allowed for audio-tag to cross-http origin and no-redirect redirection from https context.

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

    • FAIL [expected NOTRUN] subtest: Mixed-Content: Expects allowed for audio-tag to cross-http origin and swap-scheme redirection from https context.

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

    • FAIL [expected NOTRUN] subtest: Mixed-Content: Expects allowed for audio-tag to same-http origin and keep-scheme redirection from https context.

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

    • FAIL [expected NOTRUN] subtest: Mixed-Content: Expects allowed for audio-tag to same-http origin and no-redirect redirection from https context.

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

    • FAIL [expected NOTRUN] subtest: Mixed-Content: Expects allowed for audio-tag to same-http origin and swap-scheme redirection from https context.

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

    • PASS [expected NOTRUN] subtest: Mixed-Content: Expects allowed for audio-tag to same-https origin and keep-scheme redirection from https context.
    • PASS [expected NOTRUN] subtest: Mixed-Content: Expects allowed for audio-tag to same-https origin and no-redirect redirection from https context.
  • OK /preload/preload-error.sub.html (#37177)
    • PASS [expected FAIL] subtest: success (fetch): main
    • FAIL [expected PASS] subtest: 404 (fetch): main

      assert_greater_than: http://web-platform.test:8000/preload/resources/dummy.xml?pipe=status%28404%29&amp;label=fetch should be loaded expected a number greater than 0 but got 0
      

  • OK /resource-timing/initiator-type/video.html (#34498)
    • FAIL [expected PASS] subtest: The initiator type for &lt;source src&gt; with type="video/mp4" must be 'video'

      promise_test: Unhandled rejection with value: object "Error: observe_entry: timeout"
      

  • OK [expected TIMEOUT] /resource-timing/nested-context-navigations-iframe.html (#24311)
    • PASS [expected NOTRUN] subtest: Test that cross-site iframe navigations are not observable by the parent, even after history navigations by the parent
    • PASS [expected NOTRUN] subtest: Test that iframe navigations are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that crossorigin iframe navigations are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that cross-site iframe navigations are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that iframe refreshes are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that crossorigin iframe refreshes are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that cross-site iframe refreshes are not observable by the parent
  • OK /trusted-types/trusted-types-navigation.html?01-05 (#38975)
    • PASS [expected FAIL] subtest: Navigate a frame via anchor with javascript:-urls in enforcing mode.
  • OK /trusted-types/trusted-types-navigation.html?21-25 (#38997)
    • FAIL [expected PASS] subtest: Navigate a window via form-submission with javascript:-urls in enforcing mode.

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

  • OK /trusted-types/trusted-types-navigation.html?26-30 (#38807)
    • FAIL [expected PASS] subtest: Navigate a window via form-submission with javascript:-urls in report-only mode.

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

  • OK /webdriver/tests/classic/dismiss_alert/dismiss.py (#39098)
    • PASS [expected FAIL] subtest: test_dismiss_in_popup_window
Stable unexpected results (11)
  • TIMEOUT /_webgl/conformance/textures/misc/tex-video-using-tex-unit-non-zero.html
    • FAIL [expected PASS] subtest: WebGL test #0

      assert_true: video.play failed: NotSupportedError: The operation is not supported. expected true got false
      

  • TIMEOUT [expected OK] /content-security-policy/media-src/media-src-7_2.html
    • FAIL [expected PASS] subtest: In-policy audio source element

      assert_unreached: Media error handler should be triggered for non-allowed domain. Reached unreachable code
      

    • NOTRUN [expected PASS] subtest: Should not fire policy violation events
  • TIMEOUT /content-security-policy/media-src/media-src-7_2_2.sub.html
    • PASS [expected NOTRUN] subtest: Disallowed audio source element
    • TIMEOUT [expected PASS] subtest: Test that securitypolicyviolation events are fired

      Test timed out
      

  • TIMEOUT /content-security-policy/media-src/media-src-blocked.sub.html
    • PASS [expected TIMEOUT] subtest: Disallowed async video source element
    • PASS [expected NOTRUN] subtest: Disallowed audio src
    • TIMEOUT [expected NOTRUN] subtest: Disallowed audio source element

      Test timed out
      

  • OK /html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-video.html
    • FAIL [expected PASS] subtest: sRGB-FF0100, Context srgb, ImageData srgb, cropSource=false

      assert_true: Actual pixel value 240,14,16,255 is approximately equal to 255,1,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: sRGB-FF0100, Context srgb, ImageData srgb, cropSource=true

      assert_true: Actual pixel value 240,14,16,255 is approximately equal to 255,1,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: sRGB-FF0100, Context display-p3, ImageData srgb, cropSource=false

      assert_true: Actual pixel value 240,14,16,255 is approximately equal to 255,0,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: sRGB-FF0100, Context display-p3, ImageData srgb, cropSource=true

      assert_true: Actual pixel value 240,14,16,255 is approximately equal to 255,0,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: sRGB-BB0000, Context srgb, ImageData srgb, cropSource=false

      assert_true: Actual pixel value 179,14,16,255 is approximately equal to 187,0,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: sRGB-BB0000, Context srgb, ImageData srgb, cropSource=true

      assert_true: Actual pixel value 179,14,16,255 is approximately equal to 187,0,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: sRGB-BB0000, Context display-p3, ImageData srgb, cropSource=false

      assert_true: Actual pixel value 179,14,16,255 is approximately equal to 187,1,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: sRGB-BB0000, Context display-p3, ImageData srgb, cropSource=true

      assert_true: Actual pixel value 179,14,16,255 is approximately equal to 187,1,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: Rec2020-3FF000000, Context srgb, ImageData srgb, cropSource=false

      assert_true: Actual pixel value 238,14,14,255 is approximately equal to 255,0,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: Rec2020-3FF000000, Context srgb, ImageData srgb, cropSource=true

      assert_true: Actual pixel value 238,14,14,255 is approximately equal to 255,0,0,255. expected true got false
      

    • And 2 more unexpected results...
  • OK /html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html
    • FAIL [expected PASS] subtest: sRGB-FF0100, Context srgb, ImageData srgb, scaleImage=false

      assert_true: Actual pixel value 240,14,16,255 is approximately equal to 255,1,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: sRGB-FF0100, Context srgb, ImageData srgb, scaleImage=true

      assert_true: Actual pixel value 240,14,16,255 is approximately equal to 255,1,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: sRGB-FF0100, Context display-p3, ImageData srgb, scaleImage=false

      assert_true: Actual pixel value 240,14,16,255 is approximately equal to 255,0,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: sRGB-FF0100, Context display-p3, ImageData srgb, scaleImage=true

      assert_true: Actual pixel value 240,14,16,255 is approximately equal to 255,0,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: sRGB-BB0000, Context srgb, ImageData srgb, scaleImage=false

      assert_true: Actual pixel value 179,14,16,255 is approximately equal to 187,0,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: sRGB-BB0000, Context srgb, ImageData srgb, scaleImage=true

      assert_true: Actual pixel value 179,14,16,255 is approximately equal to 187,0,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: sRGB-BB0000, Context display-p3, ImageData srgb, scaleImage=false

      assert_true: Actual pixel value 179,14,16,255 is approximately equal to 187,1,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: sRGB-BB0000, Context display-p3, ImageData srgb, scaleImage=true

      assert_true: Actual pixel value 179,14,16,255 is approximately equal to 187,1,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: Rec2020-3FF000000, Context srgb, ImageData srgb, scaleImage=false

      assert_true: Actual pixel value 238,14,14,255 is approximately equal to 255,0,0,255. expected true got false
      

    • FAIL [expected PASS] subtest: Rec2020-3FF000000, Context srgb, ImageData srgb, scaleImage=true

      assert_true: Actual pixel value 238,14,14,255 is approximately equal to 255,0,0,255. expected true got false
      

    • And 2 more unexpected results...
  • ERROR [expected OK] /html/semantics/embedded-content/the-video-element/video_crash_empty_src.html
  • OK [expected TIMEOUT] /mixed-content/gen/top.meta/opt-in/audio-tag.https.html
    • PASS [expected TIMEOUT] subtest: Mixed-Content: Expects blocked for audio-tag to cross-http origin and no-redirect redirection from https context.
    • PASS [expected NOTRUN] subtest: Mixed-Content: Expects blocked for audio-tag to same-http origin and no-redirect redirection from https context.
  • OK [expected TIMEOUT] /mixed-content/gen/top.meta/opt-in/video-tag.https.html
    • PASS [expected TIMEOUT] subtest: Mixed-Content: Expects blocked for video-tag to cross-http origin and no-redirect redirection from https context.
    • PASS [expected NOTRUN] subtest: Mixed-Content: Expects blocked for video-tag to same-http origin and no-redirect redirection from https context.
  • OK [expected TIMEOUT] /mixed-content/gen/top.meta/unset/video-tag.https.html
    • FAIL [expected TIMEOUT] subtest: Mixed-Content: Expects allowed for video-tag to cross-http origin and keep-scheme redirection from https context.

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

    • FAIL [expected NOTRUN] subtest: Mixed-Content: Expects allowed for video-tag to cross-http origin and no-redirect redirection from https context.

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

    • FAIL [expected NOTRUN] subtest: Mixed-Content: Expects allowed for video-tag to cross-http origin and swap-scheme redirection from https context.

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

    • FAIL [expected NOTRUN] subtest: Mixed-Content: Expects allowed for video-tag to same-http origin and keep-scheme redirection from https context.

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

    • FAIL [expected NOTRUN] subtest: Mixed-Content: Expects allowed for video-tag to same-http origin and no-redirect redirection from https context.

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

    • FAIL [expected NOTRUN] subtest: Mixed-Content: Expects allowed for video-tag to same-http origin and swap-scheme redirection from https context.

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

    • PASS [expected NOTRUN] subtest: Mixed-Content: Expects allowed for video-tag to same-https origin and keep-scheme redirection from https context.
    • PASS [expected NOTRUN] subtest: Mixed-Content: Expects allowed for video-tag to same-https origin and no-redirect redirection from https context.
  • OK /resource-timing/initiator-type/audio.html
    • FAIL [expected PASS] subtest: The initiator type for &lt;source src&gt; with type 'audio/ogg' must be 'audio'

      promise_test: Unhandled rejection with value: object "Error: observe_entry: timeout"
      

@github-actions
Copy link
Copy Markdown

github-actions bot commented Oct 8, 2025

⚠️ Try run (#18346035795) failed.

Copy link
Copy Markdown
Member

@jdm jdm left a comment

Choose a reason for hiding this comment

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

Really great work! Thanks for all the new spec text comments.

Follow the HTML implemetation and support selection of the
'media' element loading source from 'source' children elements
with validation processing over their 'media/src/type' attributes.

See https://html.spec.whatwg.org/multipage/#concept-media-load-algorithm

To handle loading with multiple 'source' children was introduced
source children pointer to track the remaining unprocessed 'source'
elements after the resource selection algorithm was invoked.

Testing: Changes in the following tests
with improvements:
- html/semantics/embedded-content/media-elements/loading-the-media-resource/*
- webgl/tests/conformance/textures/misc/texture-video-transparent.html

with regressions (after enabled 'source' type attribute validation):
- content-security-policy/media-src/media-src*
- mixed-content/gen/top*audio|video-tag*
- resource-timing/initiator-type/*

Fixes: servo#21481
Fixes: servo#34127

Signed-off-by: Andrei Volykhin <[email protected]>
@tharkum tharkum force-pushed the html-media-resource-selection-source-children branch from 1baa765 to 32e4c0c Compare October 9, 2025 10:21
@servo-highfive servo-highfive added the S-awaiting-review There is new code that needs to be reviewed. label Oct 9, 2025
@tharkum tharkum added the T-linux-wpt Do a try run of the WPT label Oct 9, 2025
@github-actions github-actions bot removed the T-linux-wpt Do a try run of the WPT label Oct 9, 2025
@tharkum
Copy link
Copy Markdown
Contributor Author

tharkum commented Oct 9, 2025

  • Fixed error handling between network and media engine failures
  • Add tests with regressions (filled the new issues for servo/media - see above)

@github-actions
Copy link
Copy Markdown

github-actions bot commented Oct 9, 2025

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

@github-actions
Copy link
Copy Markdown

github-actions bot commented Oct 9, 2025

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

Flaky unexpected result (29)
  • OK /IndexedDB/idbfactory_open.any.html
    • FAIL [expected PASS] subtest: Calling open() with version argument 1.5 should not throw.

      assert_equals: version expected 1 but got 9007199254740991
      

  • FAIL [expected PASS] /css/CSS2/linebox/line-height-057.xht
  • FAIL [expected PASS] /css/WOFF2/directory-mismatched-tables-001.xht
  • FAIL [expected PASS] /css/WOFF2/metadatadisplay-schema-metadata-003.xht
  • FAIL [expected PASS] /css/WOFF2/metadatadisplay-schema-vendor-011.xht
  • FAIL [expected PASS] /css/WOFF2/tabledata-extraneous-data-001.xht
  • FAIL [expected PASS] /css/WOFF2/tabledata-transform-bad-flag-002.xht (#39636)
  • FAIL [expected PASS] /css/css-flexbox/flex-minimum-width-flex-items-001.xht
  • FAIL [expected PASS] /css/css-fonts/font-palette-20.html
  • FAIL [expected PASS] /css/css-fonts/font-palette-25.html
  • FAIL [expected PASS] /css/css-text/letter-spacing/letter-spacing-211.html (#39600)
  • 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/initial-empty-document/load-pageshow-events-window-open.html (#28691)
    • FAIL [expected PASS] subtest: load event does not fire on window.open('about:blank')

      assert_unreached: load should not be fired Reached unreachable code
      

  • 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 PASS] /html/browsers/browsing-the-web/navigating-across-documents/unknown-protocol-reload-crash.html (#39669)
  • 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_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
  • TIMEOUT [expected OK] /html/interaction/focus/the-autofocus-attribute/document-with-fragment-top.html (#28259)
    • TIMEOUT [expected FAIL] subtest: Autofocus elements in top-level browsing context's documents with "top" fragments should work.

      Test timed out
      

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

  • OK [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html (#24057)
    • FAIL [expected TIMEOUT] subtest: Check that popups from a sandboxed iframe escape the sandbox if allow-popups-to-escape-sandbox is used

      assert_equals: It came from a sandboxed iframe expected "null" but got "http://web-platform.test:8000"
      

  • TIMEOUT [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html (#24066)
    • NOTRUN [expected FAIL] subtest: Check that popups from a sandboxed iframe do not escape the sandbox
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html (#22154)
    • NOTRUN [expected FAIL] subtest: Check that popups from a sandboxed iframe do not escape the sandbox
  • TIMEOUT [expected OK] /mixed-content/gen/top.http-rp/opt-in/video-tag.https.html
  • OK /preload/preload-invalid-resources.html (#39091)
    • PASS [expected FAIL] subtest: Preloading an invalid image (missing) should preload and not re-fetch
  • OK [expected ERROR] /service-workers/service-worker/claim-with-redirect.https.html
    • FAIL [expected PASS] subtest: Claim works after redirection to another origin

      assert_equals: expected (string) "updated" but got (undefined) undefined
      

  • OK /service-workers/service-worker/fetch-event.https.html (#36234)
    • PASS [expected FAIL] subtest: Service Worker falls back to network in fetch event with POST form
  • OK [expected TIMEOUT] /webmessaging/with-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
  • OK [expected TIMEOUT] /webmessaging/with-ports/018.html (#24485)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, javascript:
Stable unexpected results that are known to be intermittent (30)
  • OK /IndexedDB/idbcursor-continuePrimaryKey-exceptions.any.worker.html (#39277)
    • FAIL [expected PASS] subtest: IDBCursor continuePrimaryKey() on object store cursor

      assert_throws_dom: continuePrimaryKey() should throw if source is not an index function "function() {
              cursor.continuePrimaryKey(2, 2);
            }" threw object "TypeError: cursor.continuePrimaryKey is not a function" that is not a DOMException InvalidAccessError: property "code" is equal to undefined, expected 15
      

  • OK /IndexedDB/idbobjectstore_getAll.any.html (#39276)
    • PASS [expected FAIL] subtest: Get all values with transaction.commit()
  • OK /IndexedDB/idbobjectstore_getAll.any.worker.html (#39400)
    • PASS [expected FAIL] subtest: Get all values with transaction.commit()
  • OK /IndexedDB/key-conversion-exceptions.any.html (#39305)
    • FAIL [expected PASS] subtest: IDBCursor continue() method with throwing/invalid keys

      assert_throws_exactly: key conversion with throwing getter should rethrow function "() =&gt; {
            receiver[method](key);
          }" threw object "TypeError: receiver[method] is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • OK /IndexedDB/key-conversion-exceptions.any.worker.html (#39284)
    • FAIL [expected PASS] subtest: IDBCursor continue() method with throwing/invalid keys

      assert_throws_exactly: key conversion with throwing getter should rethrow function "() =&gt; {
            receiver[method](key);
          }" threw object "TypeError: receiver[method] is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • 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
      

  • FAIL [expected PASS] /css/compositing/mix-blend-mode/mix-blend-mode-video.html (#32763)
  • 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 /css/css-fonts/generic-family-keywords-003.html (#38994)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted serif (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted ui-sans-serif (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted ui-monospace (drawing text in a canvas)
  • OK /css/css-fonts/variations/font-weight-matching.html (#38577)
    • FAIL [expected PASS] subtest: Test @font-face matching for weight 600

      assert_approx_equals: @font-face should be mapped to CSSTest Weights 200. expected 90 +/- 2 but got 92.56666666666666
      

    • FAIL [expected PASS] subtest: Test @font-face matching for weight 750

      assert_approx_equals: @font-face should be mapped to CSSTest Weights 200. expected 90 +/- 2 but got 92.56666666666666
      

    • FAIL [expected PASS] subtest: Test @font-face matching for weight 751

      assert_approx_equals: @font-face should be mapped to CSSTest Weights 100. expected 90 +/- 2 but got 92.56666666666666
      

    • FAIL [expected PASS] subtest: Test @font-face matching for weight 900

      assert_approx_equals: @font-face should be mapped to CSSTest Weights 100. expected 90 +/- 2 but got 92.56666666666666
      

    • FAIL [expected PASS] subtest: Test @font-face matching for weight 1000

      assert_approx_equals: @font-face should be mapped to CSSTest Weights 100. expected 90 +/- 2 but got 92.56666666666666
      

  • TIMEOUT [expected FAIL] /dom/xslt/large-cdata.html (#38029)
  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • PASS [expected FAIL] subtest: sec-fetch-user
    • PASS [expected FAIL] subtest: sec-fetch-storage-access - Same site
  • CRASH [expected TIMEOUT] /html/anonymous-iframe/indexeddb.tentative.https.window.html (#39254)
  • 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-cross-origin.sub.window.html (#29056)
    • FAIL [expected PASS] subtest: Cross-origin navigation started from unload handler must be ignored

      promise_test: Unhandled rejection with value: object "SecurityError: The operation is insecure."
      

  • OK [expected TIMEOUT] /html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.html (#30970)
  • 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
      

  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html (#22647)
    • TIMEOUT [expected FAIL] subtest: Check that popups from a sandboxed iframe escape the sandbox if allow-popups-to-escape-sandbox is used

      Test timed out
      

  • OK [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html (#24066)
  • OK /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • PASS [expected FAIL] subtest: text/plain: Basic test (normal form)
  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: Basic File test (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in filename (formdata event)
  • OK /preload/preload-error.sub.html (#37177)
    • PASS [expected FAIL] subtest: success (fetch): main
    • PASS [expected FAIL] subtest: CORS (fetch): main
  • TIMEOUT /resource-timing/nested-context-navigations-iframe.html (#24311)
    • TIMEOUT [expected PASS] subtest: Test that iframe navigations are not observable by the parent, even after history navigations by the parent

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Test that crossorigin iframe navigations are not observable by the parent, even after history navigations by the parent
  • OK /trusted-types/trusted-types-navigation.html?01-05 (#38975)
    • PASS [expected FAIL] subtest: Navigate a window via anchor with javascript:-urls in report-only mode.
  • OK /trusted-types/trusted-types-navigation.html?21-25 (#38997)
    • FAIL [expected PASS] subtest: Navigate a window via form-submission with javascript:-urls in enforcing mode.

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

  • OK /trusted-types/trusted-types-navigation.html?26-30 (#38807)
    • FAIL [expected PASS] subtest: Navigate a window via form-submission with javascript:-urls in report-only mode.

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

  • OK /webdriver/tests/classic/dismiss_alert/dismiss.py (#39098)
    • PASS [expected FAIL] subtest: test_dismiss_in_popup_window
  • TIMEOUT [expected OK] /webdriver/tests/classic/perform_actions/navigation.py (#38822)
  • ERROR [expected OK] /workers/baseurl/alpha/sharedworker-in-worker.html (#21315)
Stable unexpected results (1)
  • TIMEOUT /_webgl/conformance/textures/misc/tex-video-using-tex-unit-non-zero.html
    • FAIL [expected PASS] subtest: WebGL test #0

      assert_true: video.play failed: NotSupportedError: The operation is not supported. expected true got false
      

@github-actions
Copy link
Copy Markdown

github-actions bot commented Oct 9, 2025

⚠️ Try run (#18374617701) failed.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Oct 9, 2025

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

@tharkum tharkum requested a review from jdm October 9, 2025 13:54
@github-actions
Copy link
Copy Markdown

github-actions bot commented Oct 9, 2025

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

Flaky unexpected result (27)
  • OK /FileAPI/url/url-with-fetch.any.worker.html (#21517)
    • FAIL [expected PASS] subtest: Revoke blob URL after calling fetch, fetch should succeed

      promise_test: Unhandled rejection with value: object "TypeError: Network error occurred"
      

  • OK /IndexedDB/idbfactory_open.any.html
    • FAIL [expected PASS] subtest: Calling open() with version argument 1.5 should not throw.

      assert_equals: version expected 1 but got 9007199254740991
      

  • FAIL [expected PASS] /_mozilla/gfx-rs-gecko/descriptor-ranges.html (#23258)
  • FAIL [expected PASS] /css/WOFF2/blocks-extraneous-data-001.xht
  • FAIL [expected PASS] /css/WOFF2/blocks-extraneous-data-002.xht
  • FAIL [expected PASS] /css/WOFF2/metadatadisplay-schema-licensee-003.xht
  • OK /css/css-cascade/layer-cssom-order-reverse.html (#36094)
    • FAIL [expected PASS] subtest: Delete layer invalidates @font-face

      assert_equals: expected "220px" but got "133px"
      

  • FAIL [expected PASS] /css/css-fonts/alternates-order.html (#38955)
  • PASS [expected FAIL] /css/css-fonts/font-palette-16.html
  • OK /css/css-fonts/generic-family-keywords-003.html (#38994)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted serif (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted sans-serif (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(fangsong) (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(khmer-mul) (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(nastaliq) (drawing text in a canvas)
  • OK /custom-elements/form-associated/ElementInternals-setFormValue.html (#29174)
    • PASS [expected FAIL] subtest: Newline normalization - \r\n in value (formdata)
  • ERROR [expected OK] /domparsing/DOMParser-parseFromString-url-base.html (#25823)
  • 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
  • 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
      

  • CRASH [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html (#22647)
  • OK [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html (#24057)
    • FAIL [expected TIMEOUT] subtest: Check that popups from a sandboxed iframe escape the sandbox if allow-popups-to-escape-sandbox is used

      assert_equals: It came from a sandboxed iframe expected "null" but got "http://web-platform.test:8000"
      

  • OK /html/semantics/forms/form-submission-0/multipart-formdata.window.html (#28725)
    • PASS [expected FAIL] subtest: multipart/form-data: Basic test (normal form)
  • OK /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • PASS [expected FAIL] subtest: text/plain: Basic test (normal form)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in value (normal form)
  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • FAIL [expected PASS] subtest: application/x-www-form-urlencoded: Basic test (normal form)

      assert_equals: expected "basic=test" but got ""
      

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

  • FAIL [expected PASS] /png/apng/fcTL-dispose-background-final.html
  • 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
      

  • OK /preload/preload-xhr.html (#39092)
    • FAIL [expected PASS] subtest: Make an XHR request immediately after creating link rel=preload.

      assert_equals: resources/dummy.xml?token=e2c50905-69f0-4e4e-ae3b-2ab76dbb1a68 expected 1 but got 0
      

  • ERROR /service-workers/idlharness.https.any.html (#36250)
    • PASS [expected TIMEOUT] subtest: ServiceWorkerContainer interface: operation register((TrustedScriptURL or USVString), optional RegistrationOptions)
    • PASS [expected TIMEOUT] subtest: NavigationPreloadManager interface: operation enable()
    • PASS [expected TIMEOUT] subtest: NavigationPreloadManager interface: operation disable()
    • PASS [expected TIMEOUT] subtest: NavigationPreloadManager interface: operation setHeaderValue(ByteString)
    • PASS [expected TIMEOUT] subtest: NavigationPreloadManager interface: operation getState()
  • TIMEOUT /trusted-types/trusted-types-navigation.html?06-10 (#37920)
    • PASS [expected FAIL] subtest: Navigate a frame via anchor with javascript:-urls in report-only mode.
  • TIMEOUT [expected OK] /webdriver/tests/classic/perform_actions/navigation.py (#38822)
  • TIMEOUT [expected OK] /webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.html (#29053)
    • TIMEOUT [expected PASS] subtest: StorageKey: test 3P about:blank window opened from a 3P iframe

      Test timed out
      

Stable unexpected results that are known to be intermittent (27)
  • OK /IndexedDB/idbcursor-continuePrimaryKey-exceptions.any.worker.html (#39277)
    • FAIL [expected PASS] subtest: IDBCursor continuePrimaryKey() on object store cursor

      assert_throws_dom: continuePrimaryKey() should throw if source is not an index function "function() {
              cursor.continuePrimaryKey(2, 2);
            }" threw object "TypeError: cursor.continuePrimaryKey is not a function" that is not a DOMException InvalidAccessError: property "code" is equal to undefined, expected 15
      

  • OK /IndexedDB/idbobjectstore_getAll.any.html (#39276)
    • PASS [expected FAIL] subtest: Get all values with transaction.commit()
  • OK /IndexedDB/idbobjectstore_getAll.any.worker.html (#39400)
    • PASS [expected FAIL] subtest: Get all values with transaction.commit()
  • OK /IndexedDB/key-conversion-exceptions.any.html (#39305)
    • FAIL [expected PASS] subtest: IDBCursor continue() method with throwing/invalid keys

      assert_throws_exactly: key conversion with throwing getter should rethrow function "() =&gt; {
            receiver[method](key);
          }" threw object "TypeError: receiver[method] is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • OK /IndexedDB/key-conversion-exceptions.any.worker.html (#39284)
    • FAIL [expected PASS] subtest: IDBCursor continue() method with throwing/invalid keys

      assert_throws_exactly: key conversion with throwing getter should rethrow function "() =&gt; {
            receiver[method](key);
          }" threw object "TypeError: receiver[method] is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • 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
      

  • TIMEOUT /_webgl/conformance/textures/misc/tex-video-using-tex-unit-non-zero.html (#39735)
    • FAIL [expected PASS] subtest: WebGL test #0

      assert_true: video.play failed: NotSupportedError: The operation is not supported. expected true got false
      

  • FAIL [expected PASS] /css/compositing/mix-blend-mode/mix-blend-mode-video.html (#32763)
  • OK /css/css-fonts/variations/font-weight-matching.html (#38577)
    • FAIL [expected PASS] subtest: Test @font-face matching for weight 600

      assert_approx_equals: @font-face should be mapped to CSSTest Weights 200. expected 90 +/- 2 but got 92.56666666666666
      

    • FAIL [expected PASS] subtest: Test @font-face matching for weight 750

      assert_approx_equals: @font-face should be mapped to CSSTest Weights 200. expected 90 +/- 2 but got 92.56666666666666
      

    • FAIL [expected PASS] subtest: Test @font-face matching for weight 751

      assert_approx_equals: @font-face should be mapped to CSSTest Weights 100. expected 90 +/- 2 but got 92.56666666666666
      

    • FAIL [expected PASS] subtest: Test @font-face matching for weight 900

      assert_approx_equals: @font-face should be mapped to CSSTest Weights 100. expected 90 +/- 2 but got 92.56666666666666
      

    • FAIL [expected PASS] subtest: Test @font-face matching for weight 1000

      assert_approx_equals: @font-face should be mapped to CSSTest Weights 100. expected 90 +/- 2 but got 92.56666666666666
      

  • PASS [expected FAIL] /css/css-grid/grid-items/grid-auto-margin-and-replaced-item-001.html (#37162)
  • TIMEOUT [expected FAIL] /dom/xslt/large-cdata.html (#38029)
  • TIMEOUT /fetch/fetch-later/send-on-deactivate.https.window.html (#39628)
    • FAIL [expected TIMEOUT] subtest: fetchLater() sends on navigating away a page w/o BFCache.

      assert_equals: expected (object) object "[object Object]" but got (undefined) undefined
      

  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • FAIL [expected PASS] subtest: sec-fetch-dest

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

    • PASS [expected FAIL] subtest: sec-fetch-storage-access - Cross-site
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.html (#29056)
    • FAIL [expected PASS] subtest: Cross-origin navigation started from unload handler must be ignored

      promise_test: Unhandled rejection with value: object "SecurityError: The operation is insecure."
      

  • OK /html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html (#28697)
    • PASS [expected FAIL] subtest: aElement.click() before the load event must NOT replace
  • 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 [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • FAIL [expected TIMEOUT] subtest: Element with tabindex should support autofocus

      assert_equals: expected "SPAN" but got "BODY"
      

    • PASS [expected NOTRUN] subtest: Non-HTMLElement should not support autofocus
    • FAIL [expected NOTRUN] subtest: Host element with delegatesFocus should support autofocus

      assert_equals: expected Element node &lt;div autofocus=""&gt;&lt;/div&gt; but got Element node &lt;body&gt;&lt;div autofocus=""&gt;&lt;/div&gt;&lt;/body&gt;
      

    • FAIL [expected NOTRUN] subtest: Host element with delegatesFocus including no focusable descendants should be skipped

      assert_equals: expected Element node &lt;input autofocus=""&gt;&lt;/input&gt; but got Element node &lt;body&gt;&lt;/body&gt;
      

    • FAIL [expected NOTRUN] subtest: Area element should support autofocus

      assert_equals: expected Element node &lt;area autofocus="" href="/common/blank.html"&gt;&lt;/area&gt; but got Element node &lt;body&gt;
      &lt;img src="/media/poster.png" usemap="#map"&gt;
      &lt;map n...
      

  • OK [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html (#24066)
  • OK /html/webappapis/user-prompts/print-during-unload.html (#35944)
    • FAIL [expected PASS] subtest: print() during unload

      assert_array_equals: expected property 1 to be "destination" but got "error: window.print is not a function" (expected array ["start", "destination"] got ["start", "error: window.print is not a function"])
      

  • OK /preload/preload-error.sub.html (#37177)
    • PASS [expected FAIL] subtest: success (fetch): main
    • FAIL [expected PASS] subtest: 404 (fetch): main

      assert_greater_than: http://web-platform.test:8000/preload/resources/dummy.xml?pipe=status%28404%29&amp;label=fetch should be loaded expected a number greater than 0 but got 0
      

    • PASS [expected FAIL] subtest: CORS (fetch): main
  • OK [expected TIMEOUT] /resource-timing/nested-context-navigations-iframe.html (#24311)
    • PASS [expected NOTRUN] subtest: Test that cross-site iframe navigations are not observable by the parent, even after history navigations by the parent
    • PASS [expected NOTRUN] subtest: Test that iframe navigations are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that crossorigin iframe navigations are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that cross-site iframe navigations are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that iframe refreshes are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that crossorigin iframe refreshes are not observable by the parent
    • PASS [expected NOTRUN] subtest: Test that cross-site iframe refreshes are not observable by the parent
  • OK /trusted-types/trusted-types-navigation.html?01-05 (#38975)
    • PASS [expected FAIL] subtest: Navigate a window via anchor with javascript:-urls in enforcing mode.
  • OK /trusted-types/trusted-types-navigation.html?21-25 (#38997)
    • FAIL [expected PASS] subtest: Navigate a window via form-submission with javascript:-urls in enforcing mode.

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

  • OK /trusted-types/trusted-types-navigation.html?26-30 (#38807)
    • FAIL [expected PASS] subtest: Navigate a window via form-submission with javascript:-urls in report-only mode.

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

  • OK /webdriver/tests/classic/dismiss_alert/dismiss.py (#39098)
    • PASS [expected FAIL] subtest: test_dismiss_in_popup_window
  • OK [expected ERROR] /webxr/render_state_update.https.html (#27535)

@github-actions
Copy link
Copy Markdown

github-actions bot commented Oct 9, 2025

✨ Try run (#18378183381) succeeded.

@jdm jdm added this pull request to the merge queue Oct 9, 2025
@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 Oct 9, 2025
Merged via the queue into servo:main with commit 7d811f1 Oct 9, 2025
100 of 101 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 Oct 9, 2025
@tharkum tharkum deleted the html-media-resource-selection-source-children branch October 9, 2025 19:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-awaiting-review There is new code that needs to be reviewed.

Projects

None yet

3 participants