Skip to content

Add abort signal preference to experimental web features (#39421)#39943

Merged
TimvdLippe merged 1 commit intoservo:mainfrom
jdm:enable-abort-wpt
Oct 17, 2025
Merged

Add abort signal preference to experimental web features (#39421)#39943
TimvdLippe merged 1 commit intoservo:mainfrom
jdm:enable-abort-wpt

Conversation

@jdm
Copy link
Copy Markdown
Member

@jdm jdm commented Oct 17, 2025

This way we have full coverage on WPT rather than the specific folders with tests. The timeout in /performance-timeline/ will be addressed by #39941. The timeout under /webmessaging/ makes us match all other browsers.

Testing: Lots of new passing tests.
Fixes: #39904
Fixes: #39513

@servo-highfive servo-highfive added the S-awaiting-review There is new code that needs to be reviewed. label Oct 17, 2025
@jdm jdm added the T-linux-wpt Do a try run of the WPT label Oct 17, 2025
@github-actions github-actions bot removed the T-linux-wpt Do a try run of the WPT label Oct 17, 2025
@github-actions
Copy link
Copy Markdown

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

@jdm jdm force-pushed the enable-abort-wpt branch from e2b9109 to 8d3164b Compare October 17, 2025 03:39
@github-actions
Copy link
Copy Markdown

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

Flaky unexpected result (28)
  • 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 /_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 10 more unexpected results...
  • FAIL [expected PASS] /css/CSS2/css1/c5509-padn-l-000.xht
  • FAIL [expected PASS] /css/WOFF2/metadatadisplay-schema-extension-007.xht
  • FAIL [expected PASS] /css/WOFF2/metadatadisplay-schema-license-011.xht
  • FAIL [expected PASS] /css/WOFF2/tabledata-transform-hmtx-004.xht
  • FAIL [expected PASS] /css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-001.html
  • PASS [expected FAIL] /css/css-grid/grid-items/grid-auto-margin-and-replaced-item-001.html (#37162)
  • FAIL [expected PASS] /css/css-text/shaping/shaping-arabic-diacritics-002.html
  • FAIL [expected PASS] /css/css-text/white-space/trailing-space-and-text-alignment-rtl-002.html
  • OK /custom-elements/form-associated/ElementInternals-setFormValue.html (#29174)
    • PASS [expected FAIL] subtest: Single value - name is missing
  • ERROR /fetch/metadata/generated/serviceworker.https.sub.html (#36247)
    • FAIL [expected PASS] subtest: sec-fetch-site - Same origin, no options - registration

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

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

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

      Test timed out
      

  • ERROR [expected OK] /html/semantics/embedded-content/media-elements/event_timeupdate_noautoplay.html (#25046)
  • 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
  • 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-invalid-resources.html (#39091)
    • PASS [expected FAIL] subtest: Preloading an invalid image (missing) should preload and not re-fetch
  • 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
  • FAIL [expected PASS] /shadow-dom/shadow-style-invalidation-vw-units.html (#38468)
  • 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 /wasm/webapi/abort.any.html
    • FAIL [expected PASS] subtest: instantiateStreaming() asynchronously racing with abort should succeed or reject with AbortError

      assert_equals: expected "AbortError" but got "CompileError"
      

  • OK [expected TIMEOUT] /webmessaging/with-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
  • ERROR [expected OK] /workers/baseurl/alpha/import-in-moduleworker.html (#21315)
Stable unexpected results that are known to be intermittent (37)
  • 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/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 "() => {
            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 "() => {
            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
      

  • OK /content-security-policy/frame-ancestors/frame-ancestors-path-ignored.window.html (#36468)
    • PASS [expected FAIL] subtest: A 'frame-ancestors' CSP directive with a URL that includes a path should be ignored.
  • 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-001.html (#37467)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(fangsong)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(kai)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(khmer-mul)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(nastaliq)
  • TIMEOUT [expected FAIL] /dom/xslt/large-cdata.html (#38029)
  • OK [expected TIMEOUT] /fetch/fetch-later/activate-after.https.window.html (#39765)
    • PASS [expected TIMEOUT] subtest: fetchLater() sends out based on activateAfter, even if document is in BFCache.
  • OK [expected TIMEOUT] /fetch/fetch-later/send-on-deactivate.https.window.html (#39628)
    • PASS [expected TIMEOUT] subtest: fetchLater() sends on page entering BFCache if BackgroundSync is off.
    • PASS [expected TIMEOUT] subtest: Call fetchLater() when BFCached with activateAfter=0 sends immediately.
    • 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
      

    • FAIL [expected TIMEOUT] subtest: fetchLater() does not send aborted request on navigating away a page w/o BFCache.

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

    • FAIL [expected TIMEOUT] subtest: fetchLater() with activateAfter=1m sends on page entering BFCache if BackgroundSync is off.

      assert_equals: Number of sent beacons does not match expected count: expected 1 but got 0
      

  • 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
  • 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/009.html (#24456)
    • PASS [expected FAIL] subtest: Link with onclick form submit to javascript url with document.write and href navigation
  • OK /html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html (#29066)
    • PASS [expected FAIL] subtest: Check execution order on load handler
    • PASS [expected FAIL] subtest: Check execution order from nested timeout
  • 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
      

  • TIMEOUT /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • TIMEOUT [expected FAIL] subtest: Element with tabindex should support autofocus

      Test timed out
      

  • OK [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html (#24057)
  • TIMEOUT [expected OK] /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 CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html (#24066)
    • NOTRUN [expected FAIL] subtest: Check that popups from a sandboxed iframe do not escape the sandbox
  • OK /html/semantics/forms/form-submission-0/multipart-formdata.window.html (#28725)
    • PASS [expected FAIL] subtest: multipart/form-data: Basic test (normal form)
    • PASS [expected FAIL] subtest: multipart/form-data: 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 [expected CRASH] /html/semantics/forms/the-fieldset-element/disabled-003.html (#31730, #39631)
  • OK /html/webappapis/user-prompts/print-during-unload.html (#35944)
    • PASS [expected FAIL] subtest: print() during unload
  • OK /navigation-timing/test-navigation-type-reload.html (#33334)
    • PASS [expected FAIL] subtest: Reload domContentLoadedEventStart > Original domContentLoadedEventStart
    • PASS [expected FAIL] subtest: Reload domInteractive > Original domInteractive
    • PASS [expected FAIL] subtest: Reload fetchStart > Original fetchStart
  • OK /preload/preload-error.sub.html (#37177)
    • PASS [expected FAIL] subtest: CORS (fetch): main
  • 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 /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)
  • 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 (10)
  • OK [expected TIMEOUT] /performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.html
    • FAIL [expected TIMEOUT] subtest: RemoteContextHelper navigation using BFCache

      assert_equals: document unexpectedly BFCached expected (undefined) undefined but got (boolean) true
      

  • OK [expected TIMEOUT] /performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.tentative.window.html
    • FAIL [expected TIMEOUT] subtest: RemoteContextHelper navigation using BFCache

      assert_equals: document unexpectedly BFCached expected (undefined) undefined but got (boolean) true
      

  • OK [expected TIMEOUT] /performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.html
    • FAIL [expected TIMEOUT] subtest: RemoteContextHelper navigation using BFCache

      assert_true: expected true got false
      

  • OK [expected TIMEOUT] /performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.html
    • FAIL [expected TIMEOUT] subtest: RemoteContextHelper navigation using BFCache

      assert_equals: document unexpectedly BFCached expected (undefined) undefined but got (boolean) true
      

  • OK [expected TIMEOUT] /performance-timeline/not-restored-reasons/performance-navigation-timing-fetch.tentative.window.html
    • FAIL [expected TIMEOUT] subtest: Ensure that ongoing fetch upon entering bfcache blocks bfcache and recorded.

      assert_equals: document unexpectedly BFCached expected (undefined) undefined but got (boolean) true
      

  • OK [expected TIMEOUT] /performance-timeline/not-restored-reasons/performance-navigation-timing-navigation-failure.tentative.window.html
    • FAIL [expected TIMEOUT] subtest: Ensure that navigation failure blocks bfcache and gets recorded.

      assert_equals: document unexpectedly BFCached expected (undefined) undefined but got (boolean) true
      

  • OK [expected TIMEOUT] /performance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.tentative.window.html
    • FAIL [expected TIMEOUT] subtest: RemoteContextHelper navigation using BFCache

      assert_equals: document unexpectedly BFCached expected (undefined) undefined but got (boolean) true
      

  • OK [expected TIMEOUT] /performance-timeline/not-restored-reasons/performance-navigation-timing-reload.tentative.window.html
    • FAIL [expected TIMEOUT] subtest: RemoteContextHelper navigation using BFCache

      assert_equals: document unexpectedly BFCached expected (undefined) undefined but got (boolean) true
      

  • OK [expected TIMEOUT] /performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.html
    • FAIL [expected TIMEOUT] subtest: RemoteContextHelper navigation using BFCache

      assert_equals: document unexpectedly BFCached expected (undefined) undefined but got (boolean) true
      

  • OK /websockets/back-forward-cache-with-open-websocket-connection.window.html
    • FAIL [expected PASS] subtest: Testing BFCache support for page with open WebSocket connection.

      assert_equals: document unexpectedly BFCached expected (undefined) undefined but got (boolean) true
      

@github-actions
Copy link
Copy Markdown

⚠️ Try run (#18581682892) failed.

This way we have full coverage on WPT rather than the
specific folders with tests.

Part of servo#34866

Signed-off-by: Tim van der Lippe <[email protected]>
Signed-off-by: Josh Matthews <[email protected]>
@jdm jdm force-pushed the enable-abort-wpt branch from 8d3164b to e7aeb50 Compare October 17, 2025 04:17
@jdm jdm requested a review from TimvdLippe October 17, 2025 04:18
Copy link
Copy Markdown
Contributor

@TimvdLippe TimvdLippe left a comment

Choose a reason for hiding this comment

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

Good work on the investigations and glad to see this unblocked!

@servo-highfive servo-highfive removed the S-awaiting-review There is new code that needs to be reviewed. label Oct 17, 2025
@TimvdLippe TimvdLippe added this pull request to the merge queue Oct 17, 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 17, 2025
Merged via the queue into servo:main with commit 86e61b0 Oct 17, 2025
29 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 17, 2025
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.

Add AbortController to experimental web platform features Intermittent PASS in /IndexedDB/back-forward-cache-open-transaction.window.html

3 participants