Skip to content

Indexeddb: transaction lifecycle - #41508

Merged
Taym95 merged 23 commits into
servo:mainfrom
Taym95:IndexedDB-transaction-lifecycle
Feb 19, 2026
Merged

Taym95 merged 23 commits into
servo:mainfrom
Taym95:IndexedDB-transaction-lifecycle

Conversation

@Taym95

@Taym95 Taym95 commented Dec 24, 2025

Copy link
Copy Markdown
Member

Indexeddb: transaction lifecycle

Testing: more Indexeddb test should pass
part of #40983

@Taym95
Taym95 requested a review from gterzian as a code owner December 24, 2025 02:41
@servo-highfive servo-highfive added the S-awaiting-review There is new code that needs to be reviewed. label Dec 24, 2025
@Taym95 Taym95 added the T-linux-wpt Do a try run of the WPT label Dec 24, 2025
@github-actions github-actions Bot removed the T-linux-wpt Do a try run of the WPT label Dec 24, 2025
@github-actions

Copy link
Copy Markdown

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

@Taym95
Taym95 force-pushed the IndexedDB-transaction-lifecycle branch from 4d2ac3a to 82b8293 Compare December 24, 2025 02:43
@github-actions

Copy link
Copy Markdown

⚠️ Try run (#20476718624) failed.

@Taym95
Taym95 force-pushed the IndexedDB-transaction-lifecycle branch from 82b8293 to 191b390 Compare December 24, 2025 03:01
@Taym95 Taym95 added the T-linux-wpt Do a try run of the WPT label Dec 24, 2025
@github-actions github-actions Bot removed the T-linux-wpt Do a try run of the WPT label Dec 24, 2025
@github-actions

Copy link
Copy Markdown

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

@github-actions

Copy link
Copy Markdown

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

Flaky unexpected result (32)
  • OK /IndexedDB/error-attributes.any.html
    • PASS [expected FAIL] subtest: IDBRequest and IDBTransaction error properties should be DOMExceptions
  • OK /IndexedDB/error-attributes.any.worker.html
    • PASS [expected FAIL] subtest: IDBRequest and IDBTransaction error properties should be DOMExceptions
  • OK /_mozilla/css/offset_properties_inline.html (#40543)
    • 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
      

  • OK /_mozilla/mozilla/getBoundingClientRect.html (#39668)
    • FAIL [expected PASS] subtest: getBoundingClientRect 1

      assert_equals: expected 62 but got 60.35
      

  • OK /_mozilla/webxr/create_session.https.html
    • FAIL [expected PASS] subtest: create_session

      can't access property "simulateDeviceConnection", navigator.xr.test is undefined
      

  • OK /_mozilla/webxr/obtain_frame.https.html
    • FAIL [expected PASS] subtest: obtain_frame

      promise_test: Unhandled rejection with value: object "TypeError: can't access property "simulateDeviceConnection", navigator.xr.test is undefined"
      

  • ERROR [expected TIMEOUT] /_mozilla/webxr/sessionavailable.https.html
  • CRASH [expected PASS] /css/WOFF2/metadatadisplay-schema-licensee-009.xht
  • FAIL [expected PASS] /css/css-backgrounds/background-size-042.html
  • OK /css/css-cascade/layer-font-face-override.html (#35935)
    • PASS [expected FAIL] subtest: @font-face override update with appended sheet 1
    • PASS [expected FAIL] subtest: @font-face override update with appended sheet 2
  • OK /css/css-fonts/generic-family-keywords-003.html (#38994)
    • 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-rounded (drawing text in a canvas)
  • OK /custom-elements/form-associated/ElementInternals-setFormValue.html (#29174)
    • PASS [expected FAIL] subtest: Null value should submit nothing
    • PASS [expected FAIL] subtest: setFormValue with an empty FormData should submit nothing
    • PASS [expected FAIL] subtest: Newline normalization - \r\n in value (formdata)
  • OK [expected ERROR] /fetch/fetch-later/quota/same-origin-iframe/multiple-iframes.https.window.html (#35176)
  • CRASH [expected OK] /html/browsers/browsing-the-web/navigating-across-documents/005.html (#27062)
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html (#20768)
    • PASS [expected FAIL] subtest: Tests that a fragment navigation in the unload handler will not block the initial navigation
  • 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/replace-before-load/a-click.html (#28697)
    • FAIL [expected PASS] subtest: aElement.click() before the load event must NOT replace

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

  • OK [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/multipart-formdata.window.html (#28725)
    • FAIL [expected PASS] subtest: multipart/form-data: Basic test (formdata event)

      assert_equals: expected "\r\nContent-Disposition: form-data; name=\"basic\"\r\n\r\ntest\r\n--\r\n" but got ""
      

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

      assert_equals: expected "basic=test\r\n" but got ""
      

    • FAIL [expected PASS] subtest: text/plain: Basic File test (normal form)

      assert_equals: expected "basic=file-test.txt\r\n" but got ""
      

  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • FAIL [expected PASS] subtest: application/x-www-form-urlencoded: Basic File test (normal form)

      assert_equals: expected "basic=file-test.txt" but got ""
      

    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in value (normal form)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in filename (normal form)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: \r\n in name (normal form)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: \r\n in value (formdata event)
  • 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=9feb2a07-9526-425c-8d4f-865d056ed6ef expected 1 but got 0
      

  • OK /resource-timing/buffer-full-add-then-clear.html (#40819)
    • PASS [expected FAIL] subtest: Test that if the buffer is cleared after entries were added to the secondary buffer, those entries make it into the primary one
  • OK /touch-events/single-tap-when-touchend-listener-use-sync-xhr.html (#41175)
    • PASS [expected FAIL] subtest: Click event should be fired when touchend opens synchronous XHR
  • CRASH [expected OK] /trusted-types/set-event-handlers-content-attributes.tentative.html
  • 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.
  • CRASH [expected ERROR] /wasm/webapi/empty-body.any.serviceworker.html
  • CRASH [expected TIMEOUT] /wasm/webapi/invalid-code.any.worker.html
  • OK /webdriver/tests/classic/dismiss_alert/dismiss.py (#39098)
    • FAIL [expected PASS] subtest: test_dismiss_in_popup_window

      AssertionError: no such alert (404): No user prompt is currently active.
      

  • OK [expected ERROR] /webxr/render_state_update.https.html (#27535)
Stable unexpected results that are known to be intermittent (25)
  • OK /IndexedDB/idbcursor-continuePrimaryKey-exceptions.any.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/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/idbrequest-onupgradeneeded.any.html (#38895)
    • PASS [expected FAIL] subtest: transaction oncomplete ordering relative to open request onsuccess
  • OK /IndexedDB/idbrequest-onupgradeneeded.any.worker.html (#38971)
    • PASS [expected FAIL] subtest: transaction oncomplete ordering relative to open request onsuccess
  • 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"
      

    • FAIL [expected PASS] subtest: IDBCursor update() method with throwing/invalid keys

      assert_throws_exactly: throwing getter should rethrow during clone function "() => {
            cursor.update(value);
          }" threw object "TypeError: cursor.update 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] subtest: IDBCursor update() method with throwing/invalid keys

      assert_throws_exactly: throwing getter should rethrow during clone function "() => {
            cursor.update(value);
          }" threw object "TypeError: cursor.update is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • OK /IndexedDB/transaction-deactivation-timing.any.html (#38772)
    • PASS [expected FAIL] subtest: New transactions are deactivated before next task
    • PASS [expected FAIL] subtest: New transactions from microtask are deactivated before next task
  • OK /IndexedDB/transaction-deactivation-timing.any.worker.html (#38808)
    • PASS [expected FAIL] subtest: New transactions are deactivated before next task
    • PASS [expected FAIL] subtest: New transactions from microtask are deactivated before next task
  • 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 /_webgl/conformance/textures/misc/texture-upload-size.html (#21770)
    • FAIL [expected PASS] subtest: WebGL test #77

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

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

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

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

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

      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
      

  • OK /content-security-policy/frame-ancestors/frame-ancestors-path-ignored.window.html (#36468)
    • FAIL [expected PASS] subtest: A 'frame-ancestors' CSP directive with a URL that includes a path should be ignored.

      assert_unreached: The IFrame should have been blocked (or cross-origin). It wasn't. Reached unreachable code
      

  • OK /css/css-cascade/layer-cssom-order-reverse.html (#36094)
    • PASS [expected FAIL] subtest: Delete layer invalidates @font-face
  • 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(khmer-mul)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(nastaliq)
  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • PASS [expected FAIL] subtest: sec-fetch-user
    • FAIL [expected PASS] subtest: sec-fetch-storage-access - Cross-site

      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 cross-site destination
  • ERROR [expected OK] /focus/focus-event-after-switching-iframes.sub.html (#40368)
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html (#28691)
    • PASS [expected FAIL] subtest: load event does not fire on window.open('about:blank')
  • TIMEOUT /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • TIMEOUT [expected FAIL] subtest: Element with tabindex should support autofocus

      Test timed out
      

    • NOTRUN [expected TIMEOUT] subtest: Non-HTMLElement should not support autofocus
  • OK /html/semantics/scripting-1/the-script-element/module/dynamic-import/blob-url.any.html (#33948)
    • PASS [expected FAIL] subtest: Revoking a blob URL immediately after calling import will not fail
  • OK /navigation-timing/test-navigation-type-reload.html (#33334)
    • PASS [expected FAIL] subtest: Reload domComplete > Original domComplete
    • PASS [expected FAIL] subtest: Reload loadEventEnd > Original loadEventEnd
    • PASS [expected FAIL] subtest: Reload loadEventStart > Original loadEventStart
  • TIMEOUT /resource-timing/test_resource_timing.html (#25720)
    • FAIL [expected PASS] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (img)

      assert_equals: expected 6.640000000000001 but got 6.63
      

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

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

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

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

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

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

Stable unexpected results (18)
  • OK [expected TIMEOUT] /IndexedDB/blob-valid-after-abort.any.html
    • PASS [expected TIMEOUT] subtest: A blob can be read back after the transaction that added it was aborted.
  • OK [expected TIMEOUT] /IndexedDB/blob-valid-after-abort.any.worker.html
    • PASS [expected TIMEOUT] subtest: A blob can be read back after the transaction that added it was aborted.
  • OK /IndexedDB/idbfactory-open-error-properties.any.html
    • PASS [expected FAIL] subtest: Properties of error event from failed open()
  • OK /IndexedDB/idbfactory-open-error-properties.any.worker.html
    • PASS [expected FAIL] subtest: Properties of error event from failed open()
  • OK /IndexedDB/idbfactory_open.any.html
    • PASS [expected FAIL] subtest: IDBFactory.open() - error in version change transaction aborts open
    • PASS [expected FAIL] subtest: Calling open() with version argument 1.5 should not throw.
  • OK /IndexedDB/idbfactory_open.any.worker.html
    • PASS [expected FAIL] subtest: IDBFactory.open() - error in version change transaction aborts open
    • PASS [expected FAIL] subtest: Calling open() with version argument 1.5 should not throw.
  • OK /IndexedDB/idbobjectstore-add-put-exception-order.any.html
    • PASS [expected FAIL] subtest: IDBObjectStore.put exception order: TransactionInactiveError vs. ReadOnlyError
    • PASS [expected FAIL] subtest: IDBObjectStore.add exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-add-put-exception-order.any.worker.html
    • PASS [expected FAIL] subtest: IDBObjectStore.put exception order: TransactionInactiveError vs. ReadOnlyError
    • PASS [expected FAIL] subtest: IDBObjectStore.add exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-clear-exception-order.any.html
    • PASS [expected FAIL] subtest: IDBObjectStore.clear exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-clear-exception-order.any.worker.html
    • PASS [expected FAIL] subtest: IDBObjectStore.clear exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-delete-exception-order.any.html
    • PASS [expected FAIL] subtest: IDBObjectStore.delete exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-delete-exception-order.any.worker.html
    • PASS [expected FAIL] subtest: IDBObjectStore.delete exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-query-exception-order.any.html
    • PASS [expected FAIL] subtest: IDBObjectStore.get exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.getAll exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.getAllKeys exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.count exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.openCursor exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.openKeyCursor exception order: TransactionInactiveError vs. DataError
  • OK /IndexedDB/idbobjectstore-query-exception-order.any.worker.html
    • PASS [expected FAIL] subtest: IDBObjectStore.get exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.getAll exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.getAllKeys exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.count exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.openCursor exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.openKeyCursor exception order: TransactionInactiveError vs. DataError
  • OK /IndexedDB/idbtransaction-objectStore-finished.any.html
    • PASS [expected FAIL] subtest: IDBTransaction objectStore() behavior when transaction is finished
  • OK /IndexedDB/idbtransaction-objectStore-finished.any.worker.html
    • PASS [expected FAIL] subtest: IDBTransaction objectStore() behavior when transaction is finished
  • OK /IndexedDB/idbtransaction_objectStoreNames.any.html
    • PASS [expected FAIL] subtest: IDBTransaction.objectStoreNames - value after abort
  • OK /IndexedDB/idbtransaction_objectStoreNames.any.worker.html
    • PASS [expected FAIL] subtest: IDBTransaction.objectStoreNames - value after abort

@github-actions

Copy link
Copy Markdown

⚠️ Try run (#20476995178) failed.

@gterzian gterzian left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

So I think it's a good start but I think some structural pieces are missing.

At a high-level(mostly for my own understanding):

When a transaction is created, it is set to active. Then at the next microtask it is set to inactive. However, for each even that fires after that for a request, it is set back to active. After the event has been fired and control is back to Rust, it should be set back to inactive.

The concept of "starting" a transaction I think is mostly a backend thing, even though the spec queues a task for it. Basically, while a transaction is active, requests can be made against it, but those requests should only start when the transaction can be started.

I added some comments here and there about structural improvements. Mostly about doing something via a round-trip with the backend as oppposed to directly in script.

Comment thread components/storage/indexeddb/mod.rs Outdated
Comment thread components/storage/indexeddb/mod.rs Outdated
if mode != IDBTransactionMode::Versionchange {
if let Some(event_loop_id) = ScriptEventLoopId::installed() {
// https://w3c.github.io/IndexedDB/#transaction-concept
// A transaction optionally has a cleanup event loop which is an event loop.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think this is just Step 8: Set transaction’s cleanup event loop to the current event loop. of https://w3c.github.io/IndexedDB/#dom-idbdatabase-transaction

And IDBTransactionMode::Versionchange cannot be created manually since it is an internal "special" transaction.

Comment thread components/script/dom/indexeddb/idbtransaction.rs Outdated
Comment thread components/script/dom/indexeddb/idbtransaction.rs Outdated
Comment thread components/script/dom/indexeddb/idbtransaction.rs Outdated
Comment thread components/script/dom/indexeddb/idbtransaction.rs Outdated
Comment thread components/storage/indexeddb/mod.rs Outdated
Comment thread components/script/dom/indexeddb/idbrequest.rs
Comment thread components/script/dom/indexeddb/idbrequest.rs Outdated
@Taym95
Taym95 force-pushed the IndexedDB-transaction-lifecycle branch from 191b390 to 69a546f Compare February 5, 2026 00:43
@Taym95 Taym95 added the T-linux-wpt Do a try run of the WPT label Feb 5, 2026
@github-actions github-actions Bot removed the T-linux-wpt Do a try run of the WPT label Feb 5, 2026
@github-actions

github-actions Bot commented Feb 5, 2026

Copy link
Copy Markdown

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

@github-actions

github-actions Bot commented Feb 5, 2026

Copy link
Copy Markdown

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

Flaky unexpected result (40)
  • TIMEOUT [expected OK] /IndexedDB/file_support.sub.html
    • TIMEOUT [expected FAIL] subtest: Saves and loads back File objects from IndexedDB

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/fire-error-event-exception.any.html
    • TIMEOUT [expected FAIL] subtest: Exception in error event handler on request, with preventDefault

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/fire-error-event-exception.any.worker.html
    • TIMEOUT [expected FAIL] subtest: Exception in error event handler on request, with preventDefault

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/fire-success-event-exception.any.html
    • TIMEOUT [expected FAIL] subtest: Exception in success event handler on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in success event listener on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in success event listener ("handleEvent" lookup) on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in success event listener (non-callable "handleEvent") on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in second success event listener on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in first success event listener, tx active in second

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/fire-success-event-exception.any.worker.html
    • TIMEOUT [expected FAIL] subtest: Exception in success event handler on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in success event listener on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in success event listener ("handleEvent" lookup) on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in success event listener (non-callable "handleEvent") on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in second success event listener on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in first success event listener, tx active in second

      Test timed out
      

  • OK /IndexedDB/idbfactory-open-error-properties.any.html
    • PASS [expected FAIL] subtest: Properties of error event from failed open()
  • OK /IndexedDB/idbfactory-open-error-properties.any.worker.html
    • PASS [expected FAIL] subtest: Properties of error event from failed open()
  • TIMEOUT [expected OK] /IndexedDB/idbobjectstore_getAll.any.html (#39276)
    • TIMEOUT [expected FAIL] subtest: Get all values with transaction.commit()

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idbobjectstore_getAll.any.worker.html (#39400)
    • TIMEOUT [expected FAIL] subtest: Get all values with transaction.commit()

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/interleaved-cursors-large.any.html
    • TIMEOUT [expected FAIL] subtest: 250 cursors

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/interleaved-cursors-large.any.worker.html
    • TIMEOUT [expected FAIL] subtest: 250 cursors

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/transaction-scheduling-ordering.any.html
    • TIMEOUT [expected FAIL] subtest: Verify Indexed DB transactions are ordered per spec

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/transaction-scheduling-ordering.any.worker.html
    • TIMEOUT [expected FAIL] subtest: Verify Indexed DB transactions are ordered per spec

      Test timed out
      

  • CRASH [expected PASS] /_mozilla/shadow-dom/move-element-with-ua-shadow-tree-crash.html (#39473)
  • TIMEOUT [expected OK] /content-security-policy/inheritance/document-write-iframe.html (#41195)
    • TIMEOUT [expected PASS] subtest: document.open() keeps inherited CSPs on transient about:blank.

      Test timed out
      

  • FAIL [expected PASS] /css/css-backgrounds/background-size-042.html
  • OK /css/css-fonts/generic-family-keywords-002.html (#40929)
    • FAIL [expected PASS] subtest: font-family: -webkit-serif treated as <font-family>, not <generic-name>

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-sans-serif treated as <font-family>, not <generic-name>

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-cursive treated as <font-family>, not <generic-name>

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-fantasy treated as <font-family>, not <generic-name>

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-monospace treated as <font-family>, not <generic-name>

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-system-ui treated as <font-family>, not <generic-name>

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-math treated as <font-family>, not <generic-name>

      assert_equals: expected 30 but got 50
      

    • PASS [expected FAIL] subtest: font-family: -webkit-generic(fangsong) treated as <font-family>, not <generic-name>
    • PASS [expected FAIL] subtest: font-family: -webkit-generic(kai) treated as <font-family>, not <generic-name>
    • PASS [expected FAIL] subtest: font-family: -webkit-generic(khmer-mul) treated as <font-family>, not <generic-name>
    • And 12 more unexpected results...
  • CRASH [expected PASS] /css/css-overflow/scroll-marker-in-display-none-column-crash.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 [expected ERROR] /fetch/fetch-later/quota/same-origin-iframe/accumulated-oversized-payload.https.window.html (#41705)
  • OK [expected ERROR] /fetch/fetch-later/quota/same-origin-iframe/sandboxed-iframe.https.window.html (#41704)
  • TIMEOUT /fetch/metadata/generated/css-images.https.sub.tentative.html (#42229)
    • FAIL [expected PASS] subtest: content sec-fetch-site - Cross-Site -> Same-Site

      assert_unreached: Reached unreachable code
      

    • PASS [expected FAIL] subtest: content sec-fetch-site - Same-Origin -> Same Origin
  • CRASH [expected OK] /html/anonymous-iframe/embedding.tentative.https.window.html?6-6
  • 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/navigation-unload-same-origin-fragment.html (#20768)
    • PASS [expected FAIL] subtest: Tests that a fragment navigation in the unload handler will not block the initial navigation
  • 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/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/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
      

  • 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.
  • CRASH [expected OK] /intersection-observer/intersection-ratio-with-fractional-bounds.html
  • PASS [expected FAIL] /png/apng/acTL-plays-one.html (#41218)
  • PASS [expected FAIL] /png/apng/acTL-plays-two.html (#41191)
  • PASS [expected FAIL] /png/apng/fcTL-dispose-none.html (#41817)
  • OK [expected TIMEOUT] /trusted-types/trusted-types-navigation.html?06-10 (#37920)
    • PASS [expected TIMEOUT] subtest: Navigate a frame via anchor with javascript:-urls w/ default policy in report-only mode.
    • FAIL [expected NOTRUN] subtest: Navigate a window via anchor with javascript:-urls w/ a default policy throwing an exception in enforcing mode.

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

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

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

  • TIMEOUT /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 TIMEOUT] subtest: Navigate a frame via form-submission with javascript:-urls w/ default policy in report-only mode.
  • OK /visual-viewport/resize-event-order.html (#41981)
    • PASS [expected FAIL] subtest: Popup: DOMWindow resize fired before VisualViewport.
  • 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
      

  • OK [expected ERROR] /webxr/render_state_update.https.html (#27535)
Stable unexpected results that are known to be intermittent (36)
  • OK /IndexedDB/idbcursor-continuePrimaryKey-exceptions.any.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/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
      

  • TIMEOUT [expected OK] /IndexedDB/idbobjectstore_delete.any.worker.html (#39069)
    • TIMEOUT [expected PASS] subtest: delete() removes record (inline keys)

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Object store's key path is an object attribute

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: delete() removes record (out-of-line keys)

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idbobjectstore_getKey.any.html (#42147)
    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - basic - key

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - basic - range

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - basic - key - no match

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - key path - key

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - key path - range

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - key path - key - no match

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - key generator - key

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - key generator - range

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - key generator and key path - key

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - key generator and key path - range

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idbrequest-onupgradeneeded.any.html (#38895)
    • TIMEOUT [expected FAIL] subtest: transaction oncomplete ordering relative to open request onsuccess

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idbrequest-onupgradeneeded.any.worker.html (#38971)
    • TIMEOUT [expected FAIL] subtest: transaction oncomplete ordering relative to open request onsuccess

      Test timed out
      

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

    • FAIL [expected PASS] subtest: IDBCursor update() method with throwing/invalid keys

      assert_throws_exactly: throwing getter should rethrow during clone function "() => {
            cursor.update(value);
          }" threw object "TypeError: cursor.update 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] subtest: IDBCursor update() method with throwing/invalid keys

      assert_throws_exactly: throwing getter should rethrow during clone function "() => {
            cursor.update(value);
          }" threw object "TypeError: cursor.update is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • OK /IndexedDB/transaction-deactivation-timing.any.html (#38772)
    • PASS [expected FAIL] subtest: New transactions are deactivated before next task
    • PASS [expected FAIL] subtest: New transactions from microtask are deactivated before next task
    • PASS [expected FAIL] subtest: Deactivation of new transactions happens at end of invocation
  • OK /IndexedDB/transaction-deactivation-timing.any.worker.html (#38808)
    • PASS [expected FAIL] subtest: New transactions are deactivated before next task
    • PASS [expected FAIL] subtest: New transactions from microtask are deactivated before next task
    • PASS [expected FAIL] subtest: Deactivation of new transactions happens at end of invocation
  • 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 /_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 14 more unexpected results...
  • OK /css/css-cascade/layer-font-face-override.html (#35935)
    • PASS [expected FAIL] subtest: @font-face override update with appended sheet 1
  • OK /css/css-fonts/generic-family-keywords-001.html (#37467)
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted generic(nastaliq)

      assert_equals: quoted generic(nastaliq) matches  @font-face rule expected 50 but got 30
      

  • OK /css/css-fonts/generic-family-keywords-003.html (#38994)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted ui-monospace (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted ui-rounded (drawing text in a canvas)
  • OK /css/cssom-view/offsetTopLeft-border-box.html (#40826)
    • PASS [expected FAIL] subtest: container: 0
    • PASS [expected FAIL] subtest: container: 1
  • OK /custom-elements/form-associated/ElementInternals-setFormValue.html (#29174)
    • PASS [expected FAIL] subtest: Single value - empty name exists
    • PASS [expected FAIL] subtest: Single value - Non-empty name exists
    • PASS [expected FAIL] subtest: Null value should submit nothing
    • PASS [expected FAIL] subtest: Multiple values - name content attribute is ignored
    • PASS [expected FAIL] subtest: setFormValue with an empty FormData should submit nothing
    • PASS [expected FAIL] subtest: Newline normalization - \r\n in name (urlencoded)
    • PASS [expected FAIL] subtest: Newline normalization - \n in value (formdata)
    • PASS [expected FAIL] subtest: Newline normalization - \r\n in value (urlencoded)
    • PASS [expected FAIL] subtest: Newline normalization - \r\n in value (formdata)
    • PASS [expected FAIL] subtest: Newline normalization - \r\n in filename (urlencoded)
    • And 5 more unexpected results...
  • ERROR [expected OK] /fetch/fetch-later/quota/same-origin-iframe/multiple-iframes.https.window.html (#35176)
  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • FAIL [expected PASS] subtest: sec-fetch-user

      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)
    • FAIL [expected PASS] subtest: sec-fetch-storage-access - Not sent to non-trustworthy same-site destination

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

    • FAIL [expected PASS] subtest: sec-fetch-storage-access - Not sent to non-trustworthy cross-site destination

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

  • 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/initial-empty-document/load-pageshow-events-window-open.html (#28691)
    • PASS [expected FAIL] subtest: load event does not fire on window.open('about:blank')
  • OK /html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html (#28697)
    • FAIL [expected PASS] subtest: aElement.click() before the load event must NOT replace

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

  • CRASH [expected TIMEOUT] /html/browsers/history/the-location-interface/location_replace_session_history.html (#41896)
  • TIMEOUT /html/semantics/embedded-content/media-elements/autoplay-allowed-by-feature-policy.https.sub.html (#41404)
    • TIMEOUT [expected PASS] subtest: Feature-Policy header: autoplay * allows same-origin iframes.

      Test timed out
      

  • OK /html/semantics/forms/form-submission-0/multipart-formdata.window.html (#28725)
    • PASS [expected FAIL] subtest: multipart/form-data: Basic File test (formdata event)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in name (normal form)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in name (formdata event)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in value (normal form)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in value (formdata event)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in filename (normal form)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in filename (formdata event)
    • PASS [expected FAIL] subtest: multipart/form-data: \n in value (normal form)
    • PASS [expected FAIL] subtest: multipart/form-data: \n in value (formdata event)
    • PASS [expected FAIL] subtest: multipart/form-data: \r\n in value (normal form)
    • And 19 more unexpected results...
  • OK /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • PASS [expected FAIL] subtest: text/plain: Basic File test (formdata event)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in name (normal form)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in name (formdata event)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in value (normal form)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in value (formdata event)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in filename (normal form)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in filename (formdata event)
    • PASS [expected FAIL] subtest: text/plain: \r\n in name (normal form)
    • PASS [expected FAIL] subtest: text/plain: \r\n in name (formdata event)
    • PASS [expected FAIL] subtest: text/plain: \r\n in value (normal form)
    • And 25 more unexpected results...
  • 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 name (normal form)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in name (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in value (normal form)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in value (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in filename (normal form)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in filename (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: \r\n in name (normal form)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: \r\n in name (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: \r\n in value (normal form)
    • And 31 more unexpected results...
  • OK /mixed-content/tentative/autoupgrades/mixed-content-cors.https.sub.html (#41123)
    • FAIL [expected PASS] subtest: Cross-Origin video should get upgraded even if CORS is set

      assert_equals: Length. Other host expected 1 but got Infinity
      

  • OK [expected CRASH] /resource-timing/render-blocking-status-link.html (#41664)
  • OK /resource-timing/test_resource_timing.html (#25720)
    • PASS [expected FAIL] subtest: window.performance.getEntriesByName() and window.performance.getEntriesByNameType() return same data (iframe)
    • FAIL [expected NOTRUN] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (link)

      assert_equals: expected 5.729999999999997 but got 5.72
      

  • OK /resource-timing/test_resource_timing.https.html (#25216)
    • PASS [expected FAIL] subtest: window.performance.getEntriesByName() and window.performance.getEntriesByNameType() return same data (iframe)
    • FAIL [expected PASS] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (img)

      assert_equals: expected 7.990000000000009 but got 7.98
      

  • 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 [expected OK] /trusted-types/trusted-types-navigation.html?01-05 (#38975)
    • TIMEOUT [expected PASS] subtest: Navigate a window via anchor with javascript:-urls in report-only mode.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Navigate a window via anchor with javascript:-urls w/ default policy in report-only mode.
    • NOTRUN [expected PASS] subtest: Navigate a frame via anchor with javascript:-urls in enforcing mode.
  • 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.
Stable unexpected results (42)
  • TIMEOUT [expected OK] /IndexedDB/blob-composite-blob-reads.any.html
    • TIMEOUT [expected PASS] subtest: Composite Blob Handling: Many blobs: fetch-blob-url

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Composite Blob Handling: Many blobs: direct
  • TIMEOUT [expected OK] /IndexedDB/blob-composite-blob-reads.any.worker.html
    • TIMEOUT [expected PASS] subtest: Composite Blob Handling: Many blobs: fetch-blob-url

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Composite Blob Handling: Many blobs: direct
  • TIMEOUT [expected OK] /IndexedDB/blob-contenttype.any.html
    • TIMEOUT [expected PASS] subtest: Ensure that content type round trips when reading blob data

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/blob-contenttype.any.worker.html
    • TIMEOUT [expected PASS] subtest: Ensure that content type round trips when reading blob data

      Test timed out
      

  • OK [expected TIMEOUT] /IndexedDB/blob-valid-after-abort.any.html
    • PASS [expected TIMEOUT] subtest: A blob can be read back after the transaction that added it was aborted.
  • OK [expected TIMEOUT] /IndexedDB/blob-valid-after-abort.any.worker.html
    • PASS [expected TIMEOUT] subtest: A blob can be read back after the transaction that added it was aborted.
  • TIMEOUT [expected OK] /IndexedDB/blob-valid-after-deletion.any.html
    • TIMEOUT [expected PASS] subtest: Blobs stay alive after their records are deleted.

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/blob-valid-after-deletion.any.worker.html
    • TIMEOUT [expected PASS] subtest: Blobs stay alive after their records are deleted.

      Test timed out
      

  • OK /IndexedDB/error-attributes.any.html
    • PASS [expected FAIL] subtest: IDBRequest and IDBTransaction error properties should be DOMExceptions
  • OK /IndexedDB/error-attributes.any.worker.html
    • PASS [expected FAIL] subtest: IDBRequest and IDBTransaction error properties should be DOMExceptions
  • TIMEOUT [expected OK] /IndexedDB/idb-explicit-commit.any.html
    • TIMEOUT [expected PASS] subtest: commit() on a version change transaction does not cause errors.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: A committed transaction becomes inactive immediately.
    • NOTRUN [expected FAIL] subtest: A committed transaction is inactive in future request callbacks.
    • NOTRUN [expected FAIL] subtest: Puts issued after commit are not fulfilled.
    • NOTRUN [expected FAIL] subtest: Calling commit on an aborted transaction throws.
    • NOTRUN [expected FAIL] subtest: Calling commit on a committed transaction throws.
    • NOTRUN [expected FAIL] subtest: Calling abort on a committed transaction throws and does not prevent persisting the data.
    • NOTRUN [expected FAIL] subtest: Calling txn.commit() when txn is inactive should throw.
    • NOTRUN [expected FAIL] subtest: Transactions with same scope should stay in program order, even if one calls commit.
    • NOTRUN [expected FAIL] subtest: Transactions that explicitly commit and have errors should abort.
    • And 1 more unexpected results...
  • TIMEOUT [expected OK] /IndexedDB/idb-explicit-commit.any.worker.html
    • TIMEOUT [expected PASS] subtest: commit() on a version change transaction does not cause errors.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: A committed transaction becomes inactive immediately.
    • NOTRUN [expected FAIL] subtest: A committed transaction is inactive in future request callbacks.
    • NOTRUN [expected FAIL] subtest: Puts issued after commit are not fulfilled.
    • NOTRUN [expected FAIL] subtest: Calling commit on an aborted transaction throws.
    • NOTRUN [expected FAIL] subtest: Calling commit on a committed transaction throws.
    • NOTRUN [expected FAIL] subtest: Calling abort on a committed transaction throws and does not prevent persisting the data.
    • NOTRUN [expected FAIL] subtest: Calling txn.commit() when txn is inactive should throw.
    • NOTRUN [expected FAIL] subtest: Transactions with same scope should stay in program order, even if one calls commit.
    • NOTRUN [expected FAIL] subtest: Transactions that explicitly commit and have errors should abort.
    • And 1 more unexpected results...
  • OK [expected TIMEOUT] /IndexedDB/idbdatabase-createObjectStore-exception-order.any.html
    • FAIL [expected TIMEOUT] subtest: IDBDatabase.createObjectStore exception order: InvalidStateError vs. TransactionInactiveError

      assert_throws_dom: "running an upgrade transaction" check (InvalidStateError) should precede "not active" check (TransactionInactiveError) function "() => db.createObjectStore('s2')" threw object "TransactionInactiveError: A request was placed against a transaction which is currently not active, or which is finished." that is not a DOMException InvalidStateError: property "code" is equal to 0, expected 11
      

  • OK [expected TIMEOUT] /IndexedDB/idbdatabase-createObjectStore-exception-order.any.worker.html
    • FAIL [expected TIMEOUT] subtest: IDBDatabase.createObjectStore exception order: InvalidStateError vs. TransactionInactiveError

      assert_throws_dom: "running an upgrade transaction" check (InvalidStateError) should precede "not active" check (TransactionInactiveError) function "() => db.createObjectStore('s2')" threw object "TransactionInactiveError: A request was placed against a transaction which is currently not active, or which is finished." that is not a DOMException InvalidStateError: property "code" is equal to 0, expected 11
      

  • OK [expected TIMEOUT] /IndexedDB/idbdatabase-deleteObjectStore-exception-order.any.html
    • FAIL [expected TIMEOUT] subtest: IDBDatabase.deleteObjectStore exception order: InvalidStateError vs. TransactionInactiveError

      assert_throws_dom: "running an upgrade transaction" check (InvalidStateError) should precede "not active" check (TransactionInactiveError) function "() => db.deleteObjectStore('s')" threw object "TransactionInactiveError: A request was placed against a transaction which is currently not active, or which is finished." that is not a DOMException InvalidStateError: property "code" is equal to 0, expected 11
      

  • OK [expected TIMEOUT] /IndexedDB/idbdatabase-deleteObjectStore-exception-order.any.worker.html
    • FAIL [expected TIMEOUT] subtest: IDBDatabase.deleteObjectStore exception order: InvalidStateError vs. TransactionInactiveError

      assert_throws_dom: "running an upgrade transaction" check (InvalidStateError) should precede "not active" check (TransactionInactiveError) function "() => db.deleteObjectStore('s')" threw object "TransactionInactiveError: A request was placed against a transaction which is currently not active, or which is finished." that is not a DOMException InvalidStateError: property "code" is equal to 0, expected 11
      

  • OK /IndexedDB/idbfactory-open-request-success.any.html
    • FAIL [expected PASS] subtest: Properties of IDBOpenDBRequest during successful IDBFactory open()

      assert_true: complete event should fire before success expected true got false
      

  • OK /IndexedDB/idbfactory-open-request-success.any.worker.html
    • FAIL [expected PASS] subtest: Properties of IDBOpenDBRequest during successful IDBFactory open()

      assert_true: complete event should fire before success expected true got false
      

  • OK /IndexedDB/idbobjectstore-add-put-exception-order.any.html
    • PASS [expected FAIL] subtest: IDBObjectStore.put exception order: TransactionInactiveError vs. ReadOnlyError
    • PASS [expected FAIL] subtest: IDBObjectStore.add exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-add-put-exception-order.any.worker.html
    • PASS [expected FAIL] subtest: IDBObjectStore.put exception order: TransactionInactiveError vs. ReadOnlyError
    • PASS [expected FAIL] subtest: IDBObjectStore.add exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-clear-exception-order.any.html
    • PASS [expected FAIL] subtest: IDBObjectStore.clear exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-clear-exception-order.any.worker.html
    • PASS [expected FAIL] subtest: IDBObjectStore.clear exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-delete-exception-order.any.html
    • PASS [expected FAIL] subtest: IDBObjectStore.delete exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-delete-exception-order.any.worker.html
    • PASS [expected FAIL] subtest: IDBObjectStore.delete exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-query-exception-order.any.html
    • PASS [expected FAIL] subtest: IDBObjectStore.get exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.getAll exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.getAllKeys exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.count exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.openCursor exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.openKeyCursor exception order: TransactionInactiveError vs. DataError
  • OK /IndexedDB/idbobjectstore-query-exception-order.any.worker.html
    • PASS [expected FAIL] subtest: IDBObjectStore.get exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.getAll exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.getAllKeys exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.count exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.openCursor exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.openKeyCursor exception order: TransactionInactiveError vs. DataError
  • TIMEOUT [expected OK] /IndexedDB/idbobjectstore_delete.any.html
    • TIMEOUT [expected PASS] subtest: delete() removes record (inline keys)

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Object store's key path is an object attribute

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: delete() removes record (out-of-line keys)

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idbobjectstore_getKey.any.worker.html
    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - basic - key

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - basic - range

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - basic - key - no match

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - key path - key

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - key path - range

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - key path - key - no match

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - key generator - key

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - key generator - range

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - key generator and key path - key

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - key generator and key path - range

      Test timed out
      

  • OK [expected TIMEOUT] /IndexedDB/idbtransaction-objectStore-exception-order.any.html
    • PASS [expected TIMEOUT] subtest: IDBTransaction.objectStore exception order: InvalidStateError vs. NotFoundError
  • OK [expected TIMEOUT] /IndexedDB/idbtransaction-objectStore-exception-order.any.worker.html
    • PASS [expected TIMEOUT] subtest: IDBTransaction.objectStore exception order: InvalidStateError vs. NotFoundError
  • OK /IndexedDB/idbtransaction-oncomplete.any.html
    • FAIL [expected PASS] subtest: IDBTransaction - complete event

      assert_array_equals: lengths differ, expected array ["upgradeneeded", "complete", "success", "opencursor"] length 4, got ["upgradeneeded", "success", "opencursor"] length 3
      

  • OK /IndexedDB/idbtransaction-oncomplete.any.worker.html
    • FAIL [expected PASS] subtest: IDBTransaction - complete event

      assert_array_equals: lengths differ, expected array ["upgradeneeded", "complete", "success", "opencursor"] length 4, got ["upgradeneeded", "success", "opencursor"] length 3
      

  • TIMEOUT [expected OK] /IndexedDB/idbtransaction_abort.any.html
    • FAIL [expected PASS] subtest: Abort during auto-committing should throw InvalidStateError.

      assert_throws_dom: Abort should throw InvalidStateError on an auto-committing transaction. function "() => {
                  txn.abort();
                }" did not throw
      

    • TIMEOUT [expected PASS] subtest: Abort on completed transaction should throw InvalidStateError.

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idbtransaction_abort.any.worker.html
    • FAIL [expected PASS] subtest: Abort during auto-committing should throw InvalidStateError.

      assert_throws_dom: Abort should throw InvalidStateError on an auto-committing transaction. function "() => {
                  txn.abort();
                }" did not throw
      

    • TIMEOUT [expected PASS] subtest: Abort on completed transaction should throw InvalidStateError.

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idbtransaction_objectStoreNames.any.html
    • TIMEOUT [expected PASS] subtest: IDBTransaction.objectStoreNames - value after commit

      Test timed out
      

    • PASS [expected FAIL] subtest: IDBTransaction.objectStoreNames - value after abort
  • TIMEOUT [expected OK] /IndexedDB/idbtransaction_objectStoreNames.any.worker.html
    • TIMEOUT [expected PASS] subtest: IDBTransaction.objectStoreNames - value after commit

      Test timed out
      

    • PASS [expected FAIL] subtest: IDBTransaction.objectStoreNames - value after abort
  • TIMEOUT [expected OK] /IndexedDB/interleaved-cursors-small.any.html
    • TIMEOUT [expected FAIL] subtest: 1 cursors

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: 10 cursors
    • NOTRUN [expected FAIL] subtest: 100 cursors
  • TIMEOUT [expected OK] /IndexedDB/interleaved-cursors-small.any.worker.html
    • TIMEOUT [expected FAIL] subtest: 1 cursors

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: 10 cursors
    • NOTRUN [expected FAIL] subtest: 100 cursors
  • TIMEOUT [expected OK] /IndexedDB/keypath-special-identifiers.any.html
    • TIMEOUT [expected PASS] subtest: Type: String, identifier: length

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Type: Array, identifier: length

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Type: Blob, identifier: size

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Type: Blob, identifier: type

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/keypath-special-identifiers.any.worker.html
    • TIMEOUT [expected PASS] subtest: Type: String, identifier: length

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Type: Array, identifier: length

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Type: Blob, identifier: size

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Type: Blob, identifier: type

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/transaction-scheduling-within-database.any.html
    • TIMEOUT [expected PASS] subtest: Check that read-only transactions within a database can run in parallel.

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/transaction-scheduling-within-database.any.worker.html
    • TIMEOUT [expected PASS] subtest: Check that read-only transactions within a database can run in parallel.

      Test timed out
      

@github-actions

github-actions Bot commented Feb 5, 2026

Copy link
Copy Markdown

⚠️ Try run (#21694176738) failed!

@Taym95
Taym95 force-pushed the IndexedDB-transaction-lifecycle branch 2 times, most recently from c45d385 to 48533f9 Compare February 5, 2026 13:42

@gterzian gterzian left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

First pass at the overall structure.

cc @janvarga can you pls take a look also?

Comment thread components/script/dom/indexeddb/idbobjectstore.rs Outdated
Comment thread components/script/dom/indexeddb/idbtransaction.rs
Comment thread components/storage/indexeddb/mod.rs Outdated
Comment thread components/storage/indexeddb/mod.rs Outdated
Comment thread components/script/dom/indexeddb/idbtransaction.rs Outdated
Comment thread components/script/dom/indexeddb/idbtransaction.rs Outdated
Comment thread components/script/dom/indexeddb/idbtransaction.rs
Comment thread components/storage/indexeddb/mod.rs Outdated
Comment thread components/storage/indexeddb/mod.rs Outdated
Comment thread components/script/dom/globalscope.rs Outdated
Comment thread components/script/dom/indexeddb/idbtransaction.rs
@Taym95 Taym95 added the T-linux-wpt Do a try run of the WPT label Feb 6, 2026
@github-actions github-actions Bot removed the T-linux-wpt Do a try run of the WPT label Feb 6, 2026
@github-actions

github-actions Bot commented Feb 6, 2026

Copy link
Copy Markdown

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

@github-actions

github-actions Bot commented Feb 6, 2026

Copy link
Copy Markdown

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

Flaky unexpected result (47)
  • TIMEOUT [expected OK] /IndexedDB/delete-range.any.html
    • TIMEOUT [expected FAIL] subtest: Delete range

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Delete range 1

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Delete range 2

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Delete range 3

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/delete-range.any.worker.html
    • TIMEOUT [expected FAIL] subtest: Delete range

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Delete range 1

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Delete range 2

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Delete range 3

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/error-attributes.any.html
    • TIMEOUT [expected FAIL] subtest: IDBRequest and IDBTransaction error properties should be DOMExceptions

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/error-attributes.any.worker.html
    • TIMEOUT [expected FAIL] subtest: IDBRequest and IDBTransaction error properties should be DOMExceptions

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/file_support.sub.html
    • TIMEOUT [expected FAIL] subtest: Saves and loads back File objects from IndexedDB

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/fire-error-event-exception.any.html
    • TIMEOUT [expected FAIL] subtest: Exception in error event handler on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in error event handler on request, with preventDefault

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in error event listener on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in error event listener ("handleEvent" lookup) on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in error event listener (non-callable "handleEvent") on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in second error event listener on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in first error event listener on request, transaction active in second

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in error event handler on transaction

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in error event handler on transaction, with preventDefault

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in error event listener on transaction

      Test timed out
      

    • And 7 more unexpected results...
  • TIMEOUT [expected OK] /IndexedDB/fire-error-event-exception.any.worker.html
    • TIMEOUT [expected FAIL] subtest: Exception in error event handler on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in error event handler on request, with preventDefault

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in error event listener on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in error event listener ("handleEvent" lookup) on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in error event listener (non-callable "handleEvent") on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in second error event listener on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in first error event listener on request, transaction active in second

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in error event handler on transaction

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in error event handler on transaction, with preventDefault

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in error event listener on transaction

      Test timed out
      

    • And 7 more unexpected results...
  • TIMEOUT [expected OK] /IndexedDB/fire-success-event-exception.any.html
    • TIMEOUT [expected FAIL] subtest: Exception in success event handler on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in success event listener on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in success event listener ("handleEvent" lookup) on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in success event listener (non-callable "handleEvent") on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in second success event listener on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in first success event listener, tx active in second

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/fire-success-event-exception.any.worker.html
    • TIMEOUT [expected FAIL] subtest: Exception in success event handler on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in success event listener on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in success event listener ("handleEvent" lookup) on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in success event listener (non-callable "handleEvent") on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in second success event listener on request

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Exception in first success event listener, tx active in second

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idb-binary-key-roundtrip.any.html
    • TIMEOUT [expected FAIL] subtest: ArrayBuffer can be used to supply a binary key

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: DataView can be used to supply a binary key

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: DataView with explicit offset can be used to supply a binary key

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: DataView with explicit offset and length can be used to supply a binary key

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Uint8Array with explicit offset can be used to supply a binary key

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Uint8Array with explicit offset and length can be used to supply a binary key

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idb-binary-key-roundtrip.any.worker.html
    • TIMEOUT [expected FAIL] subtest: ArrayBuffer can be used to supply a binary key

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: DataView can be used to supply a binary key

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: DataView with explicit offset can be used to supply a binary key

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: DataView with explicit offset and length can be used to supply a binary key

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Uint8Array with explicit offset can be used to supply a binary key

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Uint8Array with explicit offset and length can be used to supply a binary key

      Test timed out
      

  • OK /IndexedDB/idbfactory-open-error-properties.any.html
    • PASS [expected FAIL] subtest: Properties of error event from failed open()
  • OK /IndexedDB/idbfactory-open-error-properties.any.worker.html
    • PASS [expected FAIL] subtest: Properties of error event from failed open()
  • TIMEOUT [expected OK] /IndexedDB/interleaved-cursors-large.any.html
    • TIMEOUT [expected FAIL] subtest: 250 cursors

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/interleaved-cursors-large.any.worker.html
    • TIMEOUT [expected FAIL] subtest: 250 cursors

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/nested-cloning-large-multiple.any.html
    • TIMEOUT [expected FAIL] subtest: multiple requests of objects with blobs and large typed arrays

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: multiple requests of objects with blobs and large typed arrays with key generator
  • TIMEOUT [expected OK] /IndexedDB/transaction-scheduling-ordering.any.html
    • TIMEOUT [expected FAIL] subtest: Verify Indexed DB transactions are ordered per spec

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/transaction-scheduling-ordering.any.worker.html
    • TIMEOUT [expected FAIL] subtest: Verify Indexed DB transactions are ordered per spec

      Test timed out
      

  • CRASH [expected OK] /_mozilla/mozilla/img_load_more_than_cache.html
  • CRASH [expected OK] /_webgl/conformance2/wasm/readpixels-2gb-in-4gb-wasm-memory.html
  • TIMEOUT /content-security-policy/inheritance/location-reload.html (#38983)
    • FAIL [expected PASS] subtest: location.reload() of empty iframe.

      assert_equals: Image should be blocked by CSP after reload. expected "img blocked" but got "img loaded"
      

  • FAIL [expected PASS] /css/css-backgrounds/background-size-041.html
  • OK /css/css-fonts/generic-family-keywords-002.html (#40929)
    • FAIL [expected PASS] subtest: font-family: -webkit-serif treated as <font-family>, not <generic-name>

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-sans-serif treated as <font-family>, not <generic-name>

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-cursive treated as <font-family>, not <generic-name>

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-fantasy treated as <font-family>, not <generic-name>

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-monospace treated as <font-family>, not <generic-name>

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-system-ui treated as <font-family>, not <generic-name>

      assert_equals: expected 30 but got 50
      

    • FAIL [expected PASS] subtest: font-family: -webkit-math treated as <font-family>, not <generic-name>

      assert_equals: expected 30 but got 50
      

    • PASS [expected FAIL] subtest: font-family: -webkit-generic(fangsong) treated as <font-family>, not <generic-name>
    • PASS [expected FAIL] subtest: font-family: -webkit-generic(kai) treated as <font-family>, not <generic-name>
    • PASS [expected FAIL] subtest: font-family: -webkit-generic(khmer-mul) treated as <font-family>, not <generic-name>
    • And 12 more unexpected results...
  • OK [expected ERROR] /fetch/fetch-later/quota/same-origin-iframe/sandboxed-iframe.https.window.html (#41704)
  • OK /fetch/metadata/window-open.https.sub.html (#40339)
    • FAIL [expected PASS] subtest: Same-site window, forced, reloaded

      The operation is insecure.
      

  • OK [expected ERROR] /focus/focus-event-after-switching-iframes.sub.html (#40368)
  • CRASH [expected OK] /html/browsers/browsing-the-web/back-forward-cache/service-worker-clients-matchall.https.html
  • ERROR [expected TIMEOUT] /html/browsers/browsing-the-web/history-traversal/pageswap/pageswap-initial-navigation.html (#40387)
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html (#28691)
    • PASS [expected FAIL] subtest: load event does not fire on window.open('about:blank')
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html (#20768)
    • PASS [expected FAIL] subtest: Tests that a fragment navigation in the unload handler will not block the initial navigation
  • OK /html/browsers/history/the-history-interface/traverse_the_history_4.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • CRASH [expected OK] /html/browsers/sandboxing/sandbox-initial-empty-document-toward-same-origin.html (#35948)
  • 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/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/media-elements/audio_loop_seek_to_eos.html (#41226)
    • FAIL [expected PASS] subtest: seeking to the end of looping audio

      promise_test: Unhandled rejection with value: object "TypeError: this argument is not a finite floating-point value"
      

  • TIMEOUT /html/semantics/embedded-content/media-elements/autoplay-allowed-by-feature-policy.https.sub.html (#41404)
    • TIMEOUT [expected PASS] subtest: Feature-Policy header: autoplay * allows same-origin iframes.

      Test timed out
      

  • TIMEOUT /html/semantics/embedded-content/media-elements/autoplay-default-feature-policy.https.sub.html (#41193)
    • PASS [expected TIMEOUT] subtest: Default "autoplay" feature policy ["self"] allows same-origin iframes.
  • 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.
  • 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"])
      

  • OK /html/semantics/scripting-1/the-script-element/module/dynamic-import/blob-url.any.html (#33948)
    • FAIL [expected PASS] subtest: Revoking a blob URL immediately after calling import will not fail

      promise_test: Unhandled rejection with value: object "TypeError: Module fetching failed"
      

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

      Test timed out
      

  • TIMEOUT [expected OK] /mixed-content/gen/top.meta/unset/video-tag.https.html
    • TIMEOUT [expected PASS] subtest: Mixed-Content: Expects allowed for video-tag to same-https origin and no-redirect redirection from https context.

      Test timed out
      

  • OK /resource-timing/buffer-full-add-then-clear.html (#40819)
    • PASS [expected FAIL] subtest: Test that if the buffer is cleared after entries were added to the secondary buffer, those entries make it into the primary one
  • OK /touch-events/single-tap-when-touchend-listener-use-sync-xhr.html (#41175)
    • PASS [expected FAIL] subtest: Click event should be fired when touchend opens synchronous XHR
  • 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[9243] |0.000036769924918189645 - 0.9827645421028137| = 0.9827277721778955 > 0.0038986 expected 0.9827645421028137 +/- 0.0038986 but got 0.000036769924918189645
      

  • TIMEOUT [expected OK] /webdriver/tests/classic/element_click/navigate.py
Stable unexpected results that are known to be intermittent (33)
  • OK /IndexedDB/idbobjectstore_count.any.worker.html (#41517)
    • FAIL [expected PASS] subtest: Returns the number of records in the object store

      assert_equals: expected 10 but got 1
      

    • FAIL [expected PASS] subtest: Returns the number of records that have keys within the range

      assert_equals: expected 5 but got 0
      

  • TIMEOUT [expected OK] /IndexedDB/idbobjectstore_delete.any.worker.html (#39069)
    • TIMEOUT [expected PASS] subtest: delete() removes record (inline keys)

      Test timed out
      

    • FAIL [expected PASS] subtest: delete() key doesn't match any records

      assert_unreached: unexpected open.success event Reached unreachable code
      

    • TIMEOUT [expected PASS] subtest: Object store's key path is an object attribute

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: delete() removes record (out-of-line keys)

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: delete() removes all of the records in the range

      Test timed out
      

  • OK /IndexedDB/idbobjectstore_getAll.any.html (#39276)
    • FAIL [expected PASS] subtest: Single item get

      assert_equals: The values array must contain the expected number of values expected 1 but got 0
      

    • FAIL [expected PASS] subtest: Get all values

      assert_equals: The values array must contain the expected number of values expected 26 but got 1
      

    • FAIL [expected PASS] subtest: Test maxCount

      assert_equals: The values array must contain the expected number of values expected 10 but got 1
      

    • FAIL [expected PASS] subtest: Get bound range

      assert_equals: The values array must contain the expected number of values expected 7 but got 0
      

    • FAIL [expected PASS] subtest: Get bound range with maxCount

      assert_equals: The values array must contain the expected number of values expected 3 but got 0
      

    • FAIL [expected PASS] subtest: Get upper excluded

      assert_equals: The values array must contain the expected number of values expected 4 but got 0
      

    • FAIL [expected PASS] subtest: Get lower excluded

      assert_equals: The values array must contain the expected number of values expected 4 but got 0
      

    • FAIL [expected PASS] subtest: zero maxCount

      assert_equals: The values array must contain the expected number of values expected 26 but got 1
      

    • FAIL [expected PASS] subtest: Max value count

      assert_equals: The values array must contain the expected number of values expected 26 but got 1
      

  • OK /IndexedDB/idbobjectstore_getAll.any.worker.html (#39400)
    • FAIL [expected PASS] subtest: Single item get

      assert_equals: The values array must contain the expected number of values expected 1 but got 0
      

    • FAIL [expected PASS] subtest: Get all values

      assert_equals: The values array must contain the expected number of values expected 26 but got 1
      

    • FAIL [expected PASS] subtest: Test maxCount

      assert_equals: The values array must contain the expected number of values expected 10 but got 1
      

    • FAIL [expected PASS] subtest: Get bound range

      assert_equals: The values array must contain the expected number of values expected 7 but got 0
      

    • FAIL [expected PASS] subtest: Get bound range with maxCount

      assert_equals: The values array must contain the expected number of values expected 3 but got 0
      

    • FAIL [expected PASS] subtest: Get upper excluded

      assert_equals: The values array must contain the expected number of values expected 4 but got 0
      

    • FAIL [expected PASS] subtest: Get lower excluded

      assert_equals: The values array must contain the expected number of values expected 4 but got 0
      

    • FAIL [expected PASS] subtest: zero maxCount

      assert_equals: The values array must contain the expected number of values expected 26 but got 1
      

    • FAIL [expected PASS] subtest: Max value count

      assert_equals: The values array must contain the expected number of values expected 26 but got 1
      

  • TIMEOUT [expected OK] /IndexedDB/idbobjectstore_getKey.any.html (#42147)
    • FAIL [expected PASS] subtest: IDBObjectStore.getKey() - basic - key

      assert_equals: expected (number) 5 but got (undefined) undefined
      

    • FAIL [expected PASS] subtest: IDBObjectStore.getKey() - basic - range

      assert_equals: expected 5 but got 1
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - basic - key - no match

      Test timed out
      

    • FAIL [expected PASS] subtest: IDBObjectStore.getKey() - key path - key

      assert_equals: expected (number) 5 but got (undefined) undefined
      

    • FAIL [expected PASS] subtest: IDBObjectStore.getKey() - key path - range

      assert_equals: expected (number) 5 but got (undefined) undefined
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - key path - key - no match

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: IDBObjectStore.getKey() - key path - range - no match

      Test timed out
      

    • FAIL [expected PASS] subtest: IDBObjectStore.getKey() - key generator - key

      assert_equals: expected (number) 5 but got (undefined) undefined
      

    • FAIL [expected PASS] subtest: IDBObjectStore.getKey() - key generator - range

      assert_equals: expected (number) 5 but got (undefined) undefined
      

    • TIMEOUT [expected FAIL] subtest: IDBObjectStore.getKey() - key generator - key - no match

      Test timed out
      

    • And 5 more unexpected results...
  • TIMEOUT [expected OK] /IndexedDB/idbrequest-onupgradeneeded.any.html (#38895)
    • TIMEOUT [expected FAIL] subtest: transaction oncomplete ordering relative to open request onsuccess

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idbrequest-onupgradeneeded.any.worker.html (#38971)
    • TIMEOUT [expected FAIL] subtest: transaction oncomplete ordering relative to open request onsuccess

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/transaction-deactivation-timing.any.html (#38772)
    • PASS [expected FAIL] subtest: New transactions are deactivated before next task
    • PASS [expected FAIL] subtest: New transactions from microtask are deactivated before next task
    • TIMEOUT [expected FAIL] subtest: Deactivation of new transactions happens at end of invocation

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/transaction-deactivation-timing.any.worker.html (#38808)
    • PASS [expected FAIL] subtest: New transactions are deactivated before next task
    • PASS [expected FAIL] subtest: New transactions from microtask are deactivated before next task
    • TIMEOUT [expected FAIL] subtest: Deactivation of new transactions happens at end of invocation

      Test timed out
      

  • 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
      

  • CRASH [expected PASS] /_mozilla/shadow-dom/move-element-with-ua-shadow-tree-crash.html (#39473)
  • 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 /css/css-cascade/layer-font-face-override.html (#35935)
    • 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)
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted generic(nastaliq)

      assert_equals: quoted generic(nastaliq) matches  @font-face rule expected 50 but got 30
      

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

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

    • 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 fantasy (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted system-ui (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted math (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted generic(kai) (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)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted ui-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)
    • And 2 more unexpected results...
  • OK /css/cssom-view/offsetTopLeft-border-box.html (#40826)
    • PASS [expected FAIL] subtest: container: 0
    • PASS [expected FAIL] subtest: container: 1
  • OK /custom-elements/form-associated/ElementInternals-setFormValue.html (#29174)
    • PASS [expected FAIL] subtest: Single value - empty name exists
    • PASS [expected FAIL] subtest: Single value - Non-empty name exists
    • PASS [expected FAIL] subtest: Null value should submit nothing
    • PASS [expected FAIL] subtest: Multiple values - name content attribute is ignored
    • PASS [expected FAIL] subtest: setFormValue with an empty FormData should submit nothing
    • PASS [expected FAIL] subtest: Newline normalization - \r\n in name (urlencoded)
    • PASS [expected FAIL] subtest: Newline normalization - \n in value (formdata)
    • PASS [expected FAIL] subtest: Newline normalization - \r\n in value (urlencoded)
    • PASS [expected FAIL] subtest: Newline normalization - \r\n in value (formdata)
    • PASS [expected FAIL] subtest: Newline normalization - \r\n in filename (urlencoded)
    • And 5 more unexpected results...
  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • FAIL [expected PASS] subtest: sec-fetch-mode

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

    • FAIL [expected PASS] subtest: sec-fetch-user

      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 /fetch/metadata/generated/css-font-face.sub.tentative.html (#34624)
    • FAIL [expected PASS] subtest: sec-fetch-storage-access - Not sent to non-trustworthy cross-site destination

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

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

  • TIMEOUT /html/semantics/embedded-content/media-elements/autoplay-disabled-by-feature-policy.https.sub.html (#41221)
    • TIMEOUT [expected FAIL] subtest: Feature-Policy header: autoplay "none" disallows same-origin iframes.

      Test timed out
      

  • TIMEOUT /html/semantics/embedded-content/media-elements/preserves-pitch.html (#40352)
    • PASS [expected TIMEOUT] subtest: Speed-ups should not change the pitch when preservesPitch=true
    • PASS [expected NOTRUN] subtest: Slow-downs should not change the pitch when preservesPitch=true
    • TIMEOUT [expected NOTRUN] subtest: Speed-ups should change the pitch when preservesPitch=false

      Test timed out
      

  • OK /html/semantics/forms/form-submission-0/multipart-formdata.window.html (#28725)
    • PASS [expected FAIL] subtest: multipart/form-data: Basic File test (formdata event)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in name (normal form)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in name (formdata event)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in value (normal form)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in value (formdata event)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in filename (normal form)
    • PASS [expected FAIL] subtest: multipart/form-data: 0x00 in filename (formdata event)
    • PASS [expected FAIL] subtest: multipart/form-data: \n in value (normal form)
    • PASS [expected FAIL] subtest: multipart/form-data: \n in value (formdata event)
    • PASS [expected FAIL] subtest: multipart/form-data: \r\n in value (normal form)
    • And 19 more unexpected results...
  • OK /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • PASS [expected FAIL] subtest: text/plain: Basic File test (formdata event)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in name (normal form)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in name (formdata event)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in value (normal form)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in value (formdata event)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in filename (normal form)
    • PASS [expected FAIL] subtest: text/plain: 0x00 in filename (formdata event)
    • PASS [expected FAIL] subtest: text/plain: \r\n in name (normal form)
    • PASS [expected FAIL] subtest: text/plain: \r\n in name (formdata event)
    • PASS [expected FAIL] subtest: text/plain: \r\n in value (normal form)
    • And 25 more unexpected results...
  • 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 name (normal form)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in name (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in value (normal form)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in value (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in filename (normal form)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: 0x00 in filename (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: \r\n in name (normal form)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: \r\n in name (formdata event)
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: \r\n in value (normal form)
    • And 31 more unexpected results...
  • OK [expected CRASH] /resource-timing/render-blocking-status-link.html (#41664)
  • OK /resource-timing/test_resource_timing.html (#25720)
    • PASS [expected FAIL] subtest: window.performance.getEntriesByName() and window.performance.getEntriesByNameType() return same data (iframe)
    • FAIL [expected NOTRUN] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (link)

      assert_equals: expected 8.880000000000003 but got 8.87
      

    • PASS [expected FAIL] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (xmlhttprequest)
  • OK /resource-timing/test_resource_timing.https.html (#25216)
    • PASS [expected FAIL] subtest: window.performance.getEntriesByName() and window.performance.getEntriesByNameType() return same data (iframe)
    • FAIL [expected PASS] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (img)

      assert_equals: expected 18.930000000000007 but got 18.93
      

  • 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 [expected OK] /trusted-types/trusted-types-navigation.html?01-05 (#38975)
    • TIMEOUT [expected PASS] subtest: Navigate a window via anchor with javascript:-urls in report-only mode.

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Navigate a window via anchor with javascript:-urls w/ default policy in report-only mode.
    • NOTRUN [expected PASS] subtest: Navigate a frame via anchor with javascript:-urls in enforcing mode.
  • 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 (61)
  • TIMEOUT [expected OK] /IndexedDB/bindings-inject-values-bypass.any.html
    • TIMEOUT [expected FAIL] subtest: Returning values to script should bypass prototype chain

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Returning values to script should bypass prototype setters
  • TIMEOUT [expected OK] /IndexedDB/bindings-inject-values-bypass.any.worker.html
    • TIMEOUT [expected FAIL] subtest: Returning values to script should bypass prototype chain

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Returning values to script should bypass prototype setters
  • TIMEOUT [expected OK] /IndexedDB/blob-composite-blob-reads.any.html
    • TIMEOUT [expected PASS] subtest: Composite Blob Handling: Many blobs: fetch-blob-url

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Composite Blob Handling: Many blobs: direct
  • TIMEOUT [expected OK] /IndexedDB/blob-composite-blob-reads.any.worker.html
    • TIMEOUT [expected PASS] subtest: Composite Blob Handling: Many blobs: fetch-blob-url

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Composite Blob Handling: Many blobs: direct
  • TIMEOUT [expected OK] /IndexedDB/blob-contenttype.any.html
    • TIMEOUT [expected PASS] subtest: Ensure that content type round trips when reading blob data

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/blob-contenttype.any.worker.html
    • TIMEOUT [expected PASS] subtest: Ensure that content type round trips when reading blob data

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/blob-valid-after-deletion.any.html
    • TIMEOUT [expected PASS] subtest: Blobs stay alive after their records are deleted.

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/blob-valid-after-deletion.any.worker.html
    • TIMEOUT [expected PASS] subtest: Blobs stay alive after their records are deleted.

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/blob-valid-before-commit.any.html
    • TIMEOUT [expected PASS] subtest: Blobs can be read back before their records are committed.

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/blob-valid-before-commit.any.worker.html
    • TIMEOUT [expected PASS] subtest: Blobs can be read back before their records are committed.

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/event-dispatch-active-flag.any.html
    • TIMEOUT [expected PASS] subtest: Active during success handlers

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Active during success listeners

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Active during error handlers

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Active during error listeners

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/event-dispatch-active-flag.any.worker.html
    • TIMEOUT [expected PASS] subtest: Active during success handlers

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Active during success listeners

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Active during error handlers

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Active during error listeners

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idb-explicit-commit.any.html
    • TIMEOUT [expected PASS] subtest: commit() on a version change transaction does not cause errors.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: A committed transaction becomes inactive immediately.
    • NOTRUN [expected FAIL] subtest: A committed transaction is inactive in future request callbacks.
    • NOTRUN [expected FAIL] subtest: Puts issued after commit are not fulfilled.
    • NOTRUN [expected FAIL] subtest: Calling commit on an aborted transaction throws.
    • NOTRUN [expected FAIL] subtest: Calling commit on a committed transaction throws.
    • NOTRUN [expected FAIL] subtest: Calling abort on a committed transaction throws and does not prevent persisting the data.
    • NOTRUN [expected FAIL] subtest: Calling txn.commit() when txn is inactive should throw.
    • NOTRUN [expected FAIL] subtest: Transactions with same scope should stay in program order, even if one calls commit.
    • NOTRUN [expected FAIL] subtest: Transactions that explicitly commit and have errors should abort.
    • And 1 more unexpected results...
  • TIMEOUT [expected OK] /IndexedDB/idb-explicit-commit.any.worker.html
    • TIMEOUT [expected PASS] subtest: commit() on a version change transaction does not cause errors.

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: A committed transaction becomes inactive immediately.
    • NOTRUN [expected FAIL] subtest: A committed transaction is inactive in future request callbacks.
    • NOTRUN [expected FAIL] subtest: Puts issued after commit are not fulfilled.
    • NOTRUN [expected FAIL] subtest: Calling commit on an aborted transaction throws.
    • NOTRUN [expected FAIL] subtest: Calling commit on a committed transaction throws.
    • NOTRUN [expected FAIL] subtest: Calling abort on a committed transaction throws and does not prevent persisting the data.
    • NOTRUN [expected FAIL] subtest: Calling txn.commit() when txn is inactive should throw.
    • NOTRUN [expected FAIL] subtest: Transactions with same scope should stay in program order, even if one calls commit.
    • NOTRUN [expected FAIL] subtest: Transactions that explicitly commit and have errors should abort.
    • And 1 more unexpected results...
  • TIMEOUT [expected OK] /IndexedDB/idbcursor-advance-exception-order.any.html
    • TIMEOUT [expected FAIL] subtest: IDBCursor.advance exception order: TransactionInactiveError vs. InvalidStateError #1

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idbcursor-advance-exception-order.any.worker.html
    • TIMEOUT [expected FAIL] subtest: IDBCursor.advance exception order: TransactionInactiveError vs. InvalidStateError #1

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idbcursor-continuePrimaryKey-exception-order.any.html
    • TIMEOUT [expected FAIL] subtest: InvalidAccessError(incorrect source) v.s. InvalidStateError(iteration complete)

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idbcursor-continuePrimaryKey-exception-order.any.worker.html
    • TIMEOUT [expected FAIL] subtest: InvalidAccessError(incorrect source) v.s. InvalidStateError(iteration complete)

      Test timed out
      

  • OK [expected TIMEOUT] /IndexedDB/idbdatabase-createObjectStore-exception-order.any.html
    • FAIL [expected TIMEOUT] subtest: IDBDatabase.createObjectStore exception order: InvalidStateError vs. TransactionInactiveError

      assert_throws_dom: "running an upgrade transaction" check (InvalidStateError) should precede "not active" check (TransactionInactiveError) function "() => db.createObjectStore('s2')" threw object "TransactionInactiveError: A request was placed against a transaction which is currently not active, or which is finished." that is not a DOMException InvalidStateError: property "code" is equal to 0, expected 11
      

  • OK [expected TIMEOUT] /IndexedDB/idbdatabase-createObjectStore-exception-order.any.worker.html
    • FAIL [expected TIMEOUT] subtest: IDBDatabase.createObjectStore exception order: InvalidStateError vs. TransactionInactiveError

      assert_throws_dom: "running an upgrade transaction" check (InvalidStateError) should precede "not active" check (TransactionInactiveError) function "() => db.createObjectStore('s2')" threw object "TransactionInactiveError: A request was placed against a transaction which is currently not active, or which is finished." that is not a DOMException InvalidStateError: property "code" is equal to 0, expected 11
      

  • OK [expected TIMEOUT] /IndexedDB/idbdatabase-deleteObjectStore-exception-order.any.html
    • FAIL [expected TIMEOUT] subtest: IDBDatabase.deleteObjectStore exception order: InvalidStateError vs. TransactionInactiveError

      assert_throws_dom: "running an upgrade transaction" check (InvalidStateError) should precede "not active" check (TransactionInactiveError) function "() => db.deleteObjectStore('s')" threw object "TransactionInactiveError: A request was placed against a transaction which is currently not active, or which is finished." that is not a DOMException InvalidStateError: property "code" is equal to 0, expected 11
      

  • OK [expected TIMEOUT] /IndexedDB/idbdatabase-deleteObjectStore-exception-order.any.worker.html
    • FAIL [expected TIMEOUT] subtest: IDBDatabase.deleteObjectStore exception order: InvalidStateError vs. TransactionInactiveError

      assert_throws_dom: "running an upgrade transaction" check (InvalidStateError) should precede "not active" check (TransactionInactiveError) function "() => db.deleteObjectStore('s')" threw object "TransactionInactiveError: A request was placed against a transaction which is currently not active, or which is finished." that is not a DOMException InvalidStateError: property "code" is equal to 0, expected 11
      

  • OK /IndexedDB/idbfactory-open-request-success.any.html
    • FAIL [expected PASS] subtest: Properties of IDBOpenDBRequest during successful IDBFactory open()

      assert_true: complete event should fire before success expected true got false
      

  • OK /IndexedDB/idbfactory-open-request-success.any.worker.html
    • FAIL [expected PASS] subtest: Properties of IDBOpenDBRequest during successful IDBFactory open()

      assert_true: complete event should fire before success expected true got false
      

  • OK /IndexedDB/idbobjectstore-add-put-exception-order.any.html
    • PASS [expected FAIL] subtest: IDBObjectStore.put exception order: TransactionInactiveError vs. ReadOnlyError
    • PASS [expected FAIL] subtest: IDBObjectStore.add exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-add-put-exception-order.any.worker.html
    • PASS [expected FAIL] subtest: IDBObjectStore.put exception order: TransactionInactiveError vs. ReadOnlyError
    • PASS [expected FAIL] subtest: IDBObjectStore.add exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-clear-exception-order.any.html
    • PASS [expected FAIL] subtest: IDBObjectStore.clear exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-clear-exception-order.any.worker.html
    • PASS [expected FAIL] subtest: IDBObjectStore.clear exception order: TransactionInactiveError vs. ReadOnlyError
  • TIMEOUT /IndexedDB/idbobjectstore-cross-realm-methods.html
    • FAIL [expected PASS] subtest: Cross-realm IDBObjectStore::delete() method from detached <iframe> works as expected

      assert_array_equals: lengths differ, expected array [1001] length 1, got [] length 0
      

    • FAIL [expected PASS] subtest: Cross-realm IDBObjectStore::get() method from detached <iframe> works as expected

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

    • FAIL [expected PASS] subtest: Cross-realm IDBObjectStore::getAll() method from detached <iframe> works as expected

      assert_array_equals: lengths differ, expected array ["VALUE_EXISTING_LOWER", "VALUE_EXISTING_UPPER"] length 2, got ["VALUE_EXISTING_LOWER"] length 1
      

    • FAIL [expected PASS] subtest: Cross-realm IDBObjectStore::getAllKeys() method from detached <iframe> works as expected

      assert_array_equals: lengths differ, expected array [1000, 1001] length 2, got [1000] length 1
      

    • FAIL [expected PASS] subtest: Cross-realm IDBObjectStore::count() method from detached <iframe> works as expected

      assert_equals: expected 2 but got 1
      

  • OK /IndexedDB/idbobjectstore-delete-exception-order.any.html
    • PASS [expected FAIL] subtest: IDBObjectStore.delete exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-delete-exception-order.any.worker.html
    • PASS [expected FAIL] subtest: IDBObjectStore.delete exception order: TransactionInactiveError vs. ReadOnlyError
  • OK /IndexedDB/idbobjectstore-query-exception-order.any.html
    • PASS [expected FAIL] subtest: IDBObjectStore.get exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.getAll exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.getAllKeys exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.count exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.openCursor exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.openKeyCursor exception order: TransactionInactiveError vs. DataError
  • OK /IndexedDB/idbobjectstore-query-exception-order.any.worker.html
    • PASS [expected FAIL] subtest: IDBObjectStore.get exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.getAll exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.getAllKeys exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.count exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.openCursor exception order: TransactionInactiveError vs. DataError
    • PASS [expected FAIL] subtest: IDBObjectStore.openKeyCursor exception order: TransactionInactiveError vs. DataError
  • OK /IndexedDB/idbobjectstore_count.any.html
    • FAIL [expected PASS] subtest: Returns the number of records in the object store

      assert_equals: expected 10 but got 1
      

    • FAIL [expected PASS] subtest: Returns the number of records that have keys within the range

      assert_equals: expected 5 but got 0
      

  • TIMEOUT [expected OK] /IndexedDB/idbobjectstore_delete.any.html
    • TIMEOUT [expected PASS] subtest: delete() removes record (inline keys)

      Test timed out
      

    • FAIL [expected PASS] subtest: delete() key doesn't match any records

      assert_unreached: unexpected open.success event Reached unreachable code
      

    • TIMEOUT [expected PASS] subtest: Object store's key path is an object attribute

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: delete() removes record (out-of-line keys)

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: delete() removes all of the records in the range

      Test timed out
      

  • OK /IndexedDB/idbobjectstore_get.any.html
    • FAIL [expected PASS] subtest: Attempts to retrieve a record that doesn't exist

      assert_unreached: unexpected open.success event Reached unreachable code
      

    • FAIL [expected PASS] subtest: Returns the record with the first key in the range

      assert_equals: get(3-6) expected (string) "data3" but got (undefined) undefined
      

  • OK /IndexedDB/idbobjectstore_get.any.worker.html
    • FAIL [expected PASS] subtest: Attempts to retrieve a record that doesn't exist

      assert_unreached: unexpected open.success event Reached unreachable code
      

    • FAIL [expected PASS] subtest: Returns the record with the first key in the range

      assert_equals: get(3-6) expected (string) "data3" but got (undefined) undefined
      

  • OK /IndexedDB/idbobjectstore_getAllKeys-options.any.html
    • FAIL [expected PASS] subtest: Get all keys

      assert_array_equals: lengths differ, expected array […, "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"] length 26, got ["a"] length 1
      

  • OK /IndexedDB/idbobjectstore_getAllKeys-options.any.worker.html
    • FAIL [expected PASS] subtest: Get all keys

      assert_array_equals: lengths differ, expected array […, "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"] length 26, got ["a"] length 1
      

  • OK /IndexedDB/idbobjectstore_getAllKeys.any.html
    • FAIL [expected PASS] subtest: Single item get

      assert_array_equals: lengths differ, expected array ["c"] length 1, got [] length 0
      

    • FAIL [expected PASS] subtest: Single item get (generated key)

      assert_array_equals: lengths differ, expected array [3] length 1, got [] length 0
      

    • FAIL [expected PASS] subtest: Get all keys

      assert_array_equals: lengths differ, expected array […, "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"] length 26, got ["a"] length 1
      

    • FAIL [expected PASS] subtest: Test maxCount

      assert_array_equals: lengths differ, expected array ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] length 10, got ["a"] length 1
      

    • FAIL [expected PASS] subtest: Get bound range

      assert_array_equals: lengths differ, expected array ["g", "h", "i", "j", "k", "l", "m"] length 7, got [] length 0
      

    • FAIL [expected PASS] subtest: Get bound range with maxCount

      assert_array_equals: lengths differ, expected array ["g", "h", "i"] length 3, got [] length 0
      

    • FAIL [expected PASS] subtest: Get upper excluded

      assert_array_equals: lengths differ, expected array ["g", "h", "i", "j"] length 4, got [] length 0
      

    • FAIL [expected PASS] subtest: Get lower excluded

      assert_array_equals: lengths differ, expected array ["h", "i", "j", "k"] length 4, got [] length 0
      

    • FAIL [expected PASS] subtest: Get bound range (generated) with maxCount

      assert_array_equals: lengths differ, expected array [4, 5, 6] length 3, got [] length 0
      

    • FAIL [expected PASS] subtest: zero maxCount

      assert_array_equals: lengths differ, expected array […, "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"] length 26, got ["a"] length 1
      

    • And 1 more unexpected results...
  • OK /IndexedDB/idbobjectstore_getAllKeys.any.worker.html
    • FAIL [expected PASS] subtest: Single item get

      assert_array_equals: lengths differ, expected array ["c"] length 1, got [] length 0
      

    • FAIL [expected PASS] subtest: Single item get (generated key)

      assert_array_equals: lengths differ, expected array [3] length 1, got [] length 0
      

    • FAIL [expected PASS] subtest: Get all keys

      assert_array_equals: lengths differ, expected array […, "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"] length 26, got ["a"] length 1
      

    • FAIL [expected PASS] subtest: Test maxCount

      assert_array_equals: lengths differ, expected array ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] length 10, got ["a"] length 1
      

    • FAIL [expected PASS] subtest: Get bound range

      assert_array_equals: lengths differ, expected array ["g", "h", "i", "j", "k", "l", "m"] length 7, got [] length 0
      

    • FAIL [expected PASS] subtest: Get bound range with maxCount

      assert_array_equals: lengths differ, expected array ["g", "h", "i"] length 3, got [] length 0
      

    • FAIL [expected PASS] subtest: Get upper excluded

      assert_array_equals: lengths differ, expected array ["g", "h", "i", "j"] length 4, got [] length 0
      

    • FAIL [expected PASS] subtest: Get lower excluded

      assert_array_equals: lengths differ, expected array ["h", "i", "j", "k"] length 4, got [] length 0
      

    • FAIL [expected PASS] subtest: Get bound range (generated) with maxCount

      assert_array_equals: lengths differ, expected array [4, 5, 6] length 3, got [] length 0
      

    • FAIL [expected PASS] subtest: zero maxCount

      assert_array_equals: lengths differ, expected array […, "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"] length 26, got ["a"] length 1
      

    • And 1 more unexpected results...
  • TIMEOUT [expected OK] /IndexedDB/idbobjectstore_getKey.any.worker.html
    • FAIL [expected PASS] subtest: IDBObjectStore.getKey() - basic - key

      assert_equals: expected (number) 5 but got (undefined) undefined
      

    • FAIL [expected PASS] subtest: IDBObjectStore.getKey() - basic - range

      assert_equals: expected 5 but got 1
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - basic - key - no match

      Test timed out
      

    • FAIL [expected PASS] subtest: IDBObjectStore.getKey() - key path - key

      assert_equals: expected (number) 5 but got (undefined) undefined
      

    • FAIL [expected PASS] subtest: IDBObjectStore.getKey() - key path - range

      assert_equals: expected (number) 5 but got (undefined) undefined
      

    • TIMEOUT [expected PASS] subtest: IDBObjectStore.getKey() - key path - key - no match

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: IDBObjectStore.getKey() - key path - range - no match

      Test timed out
      

    • FAIL [expected PASS] subtest: IDBObjectStore.getKey() - key generator - key

      assert_equals: expected (number) 5 but got (undefined) undefined
      

    • FAIL [expected PASS] subtest: IDBObjectStore.getKey() - key generator - range

      assert_equals: expected (number) 5 but got (undefined) undefined
      

    • TIMEOUT [expected FAIL] subtest: IDBObjectStore.getKey() - key generator - key - no match

      Test timed out
      

    • And 5 more unexpected results...
  • OK [expected TIMEOUT] /IndexedDB/idbtransaction-objectStore-exception-order.any.html
    • PASS [expected TIMEOUT] subtest: IDBTransaction.objectStore exception order: InvalidStateError vs. NotFoundError
  • OK [expected TIMEOUT] /IndexedDB/idbtransaction-objectStore-exception-order.any.worker.html
    • PASS [expected TIMEOUT] subtest: IDBTransaction.objectStore exception order: InvalidStateError vs. NotFoundError
  • OK /IndexedDB/idbtransaction-oncomplete.any.html
    • FAIL [expected PASS] subtest: IDBTransaction - complete event

      assert_array_equals: lengths differ, expected array ["upgradeneeded", "complete", "success", "opencursor"] length 4, got ["upgradeneeded", "success", "opencursor"] length 3
      

  • OK /IndexedDB/idbtransaction-oncomplete.any.worker.html
    • FAIL [expected PASS] subtest: IDBTransaction - complete event

      assert_array_equals: lengths differ, expected array ["upgradeneeded", "complete", "success", "opencursor"] length 4, got ["upgradeneeded", "success", "opencursor"] length 3
      

  • TIMEOUT [expected OK] /IndexedDB/idbtransaction_abort.any.html
    • FAIL [expected PASS] subtest: Abort during auto-committing should throw InvalidStateError.

      assert_throws_dom: Abort should throw InvalidStateError on an auto-committing transaction. function "() => {
                  txn.abort();
                }" did not throw
      

    • TIMEOUT [expected PASS] subtest: Abort on completed transaction should throw InvalidStateError.

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idbtransaction_abort.any.worker.html
    • FAIL [expected PASS] subtest: Abort during auto-committing should throw InvalidStateError.

      assert_throws_dom: Abort should throw InvalidStateError on an auto-committing transaction. function "() => {
                  txn.abort();
                }" did not throw
      

    • TIMEOUT [expected PASS] subtest: Abort on completed transaction should throw InvalidStateError.

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idbtransaction_objectStoreNames.any.html
    • TIMEOUT [expected PASS] subtest: IDBTransaction.objectStoreNames - value after commit

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: IDBTransaction.objectStoreNames - value after abort

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/idbtransaction_objectStoreNames.any.worker.html
    • TIMEOUT [expected PASS] subtest: IDBTransaction.objectStoreNames - value after commit

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: IDBTransaction.objectStoreNames - value after abort

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/interleaved-cursors-small.any.html
    • TIMEOUT [expected FAIL] subtest: 1 cursors

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: 10 cursors
    • NOTRUN [expected FAIL] subtest: 100 cursors
  • TIMEOUT [expected OK] /IndexedDB/interleaved-cursors-small.any.worker.html
    • TIMEOUT [expected FAIL] subtest: 1 cursors

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: 10 cursors
    • NOTRUN [expected FAIL] subtest: 100 cursors
  • TIMEOUT [expected OK] /IndexedDB/keypath-special-identifiers.any.html
    • TIMEOUT [expected PASS] subtest: Type: String, identifier: length

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Type: Array, identifier: length

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Type: Blob, identifier: size

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Type: Blob, identifier: type

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Type: File, identifier: name

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Type: File, identifier: lastModified

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/keypath-special-identifiers.any.worker.html
    • TIMEOUT [expected PASS] subtest: Type: String, identifier: length

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Type: Array, identifier: length

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Type: Blob, identifier: size

      Test timed out
      

    • TIMEOUT [expected PASS] subtest: Type: Blob, identifier: type

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Type: File, identifier: name

      Test timed out
      

    • TIMEOUT [expected FAIL] subtest: Type: File, identifier: lastModified

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/nested-cloning-basic.any.worker.html
    • TIMEOUT [expected PASS] subtest: small typed array

      Test timed out
      

    • NOTRUN [expected PASS] subtest: blob
  • TIMEOUT [expected OK] /IndexedDB/parallel-cursors-upgrade.any.html
    • TIMEOUT [expected FAIL] subtest: 2 cursors

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: 20 cursors
    • NOTRUN [expected FAIL] subtest: 200 cursors
    • NOTRUN [expected FAIL] subtest: 2000 cursors
  • TIMEOUT [expected OK] /IndexedDB/parallel-cursors-upgrade.any.worker.html
    • TIMEOUT [expected FAIL] subtest: 2 cursors

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: 20 cursors
    • NOTRUN [expected FAIL] subtest: 200 cursors
    • NOTRUN [expected FAIL] subtest: 2000 cursors
  • TIMEOUT [expected OK] /IndexedDB/transaction-scheduling-within-database.any.html
    • TIMEOUT [expected PASS] subtest: Check that read-only transactions within a database can run in parallel.

      Test timed out
      

  • TIMEOUT [expected OK] /IndexedDB/transaction-scheduling-within-database.any.worker.html
    • TIMEOUT [expected PASS] subtest: Check that read-only transactions within a database can run in parallel.

      Test timed out
      

  • OK /_mozilla/mozilla/interfaces.https.html
    • FAIL [expected PASS] subtest: Interfaces exposed on the window

      assert_true: If this is failing: DANGER, are you sure you want to expose the new interface IDBFactory to all webpages as a property on the global? expected true got false
      

  • OK /_mozilla/mozilla/interfaces.worker.html
    • FAIL [expected PASS] subtest: interfaces

      assert_true: If this is failing: DANGER, are you sure you want to expose the new interface IDBFactory to all webpages as a property on the global? expected true got false
      

@github-actions

github-actions Bot commented Feb 6, 2026

Copy link
Copy Markdown

⚠️ Try run (#21734429433) failed!

Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
@servo-wpt-sync

Copy link
Copy Markdown
Collaborator

🛠 These changes could not be applied onto the latest upstream WPT. Servo's copy of the Web Platform Tests may be out of sync.

Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
@servo-wpt-sync

Copy link
Copy Markdown
Collaborator

🛠 These changes could not be applied onto the latest upstream WPT. Servo's copy of the Web Platform Tests may be out of sync.

@Taym95

Taym95 commented Feb 17, 2026

Copy link
Copy Markdown
Member Author

@janvarga do you think you can have look at this PR?

Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
@janvarga

Copy link
Copy Markdown
Member

@janvarga do you think you can have look at this PR?

Yes, I’ve started looking at it. It’s a fairly large PR, and I was planning to finish my review tomorrow. I don’t want to block landing unless you’re okay waiting until then.

@Taym95

Taym95 commented Feb 17, 2026

Copy link
Copy Markdown
Member Author

@janvarga do you think you can have look at this PR?

Yes, I’ve started looking at it. It’s a fairly large PR, and I was planning to finish my review tomorrow. I don’t want to block landing unless you’re okay waiting until then.

Yes we could wait.

@servo-wpt-sync

Copy link
Copy Markdown
Collaborator

🛠 These changes could not be applied onto the latest upstream WPT. Servo's copy of the Web Platform Tests may be out of sync.

@servo-wpt-sync

Copy link
Copy Markdown
Collaborator

🛠 These changes could not be applied onto the latest upstream WPT. Servo's copy of the Web Platform Tests may be out of sync.

@janvarga janvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Submitting some comments, I should be done with the review in couple of minutes.

Comment thread components/script/dom/indexeddb/idbdatabase.rs
self.global()
.get_indexeddb()
.register_indexeddb_transaction(&transaction);
transaction.set_registered_in_global();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

It looks like register_indexeddb_transaction/unregister_indexeddb_transaction could also set the flag (registered_in_global) and be a bit less error prone?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

indeed this is better.

@janvarga janvarga left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Nice work!

This is a fairly large set of changes, so I didn’t manage to verify every single detail, but from a high-level perspective this looks good to me (modulo a few inline comments and questions).

}

pub(crate) fn clear_upgrade_transaction(&self, transaction: &IDBTransaction) {
let Some(current) = self.upgrade_transaction.get() else {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This looks a bit too defensive, can it happen that the passed transaction doesn't match self.upgrade_transaction or that self.upgrade_transaction is not set?
If so, maybe rename the function to indicate that?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Either I renamed to clear_upgrade_transaction_if_matches or I change implementation to debug_assert! so function be called in contexts where it must match.

},
})
};
if mode != IDBTransactionMode::Versionchange {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Step 6 actually says "If mode is not "readonly" or "readwrite", throw a TypeError."
So you can change this check to implement Step 6 or at least add a TODO comment.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Indeed it was an over-sign on my side. Thank you.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This made another test pass.

connections:
DomRefCell<HashMapTracedValues<DBName, HashMapTracedValues<Uuid, Dom<IDBOpenDBRequest>>>>,

/// <https://www.w3.org/TR/IndexedDB-2/#transaction>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

NIT, it would be better to refer to the latest spec or at least the version 3

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

indeed

// transactions on the global and deactivating them at the microtask checkpoint.
let snapshot: Vec<DomRoot<IDBTransaction>> = {
let mut transactions = self.indexeddb_transactions.borrow_mut();
transactions.retain(|txn| !txn.is_finished());

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Hm, is this retain needed ? Does it mean that transactions are not always unregistered when finished?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I added the retain(!is_finished) as a defensive cleanup for delayed unregister, I can keep it and add a comment explaining the race/window.

self.indexeddb_transactions
.borrow_mut()
.retain(|txn| !txn.is_finished());
true

@janvarga janvarga Feb 18, 2026 •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Maybe there's a good reason for the snapshot, I guess it's not possible to avoid multiple iterations, maybe once extract_if is available?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

So the snapshot gives me a clean separation:

  • Borrow list briefly ->> clone roots into Vec<DomRoot<_>>

  • Drop borrow

  • Work on the snapshot safely (calls may re enter)

let task_source = global
.task_manager()
.database_access_task_source()
.dom_manipulation_task_source()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Maybe someone already asked about this (sorry if I overlooked it), but why the task source is changed here and elsewhere?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

this should be database_access_task_source, I will undo it

// finished.
pending_request_count: Cell<usize>,
next_request_id: Cell<u64>,
handled_next_unhandled_id: Cell<u64>,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

NIT: this sounds a bit odd

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Renamed handled_next_unhandled_id to next_unhandled_request_id and added a short comment describing the invariant.

Err(_err) => {
// TODO: Map backend commit error to appropriate DOMException.
this.initiate_abort(
Error::QuotaExceeded {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm a bit surprised by using QuotaExceeded here I guess it's only temporary.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I will use Error::Operation for now.

}

pub(crate) fn maybe_commit(&self) {
// https://w3c.github.io/IndexedDB/#transaction-lifetime

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I have a gut feeling that this logic might need to be in the backend in the end, especially once the explicit commit() is implemented.

transactions: FxHashMap<u64, KvsTransaction>,
next_created_seq: u64,
txn_info: FxHashMap<u64, TxnInfo>,
queued_readwrite: VecDeque<u64>,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Given these vectors, etc. I'm a bit worried that the scheduling can be slow with large numbers of transactions, but that can be optimized later.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

you are right, I will introduce queued_readwrite_set and queued_readonly_set for fast membership checks + de-dup for queued_*

…heduling

- Keep a defensive prune of finished transactions before snapshotting in cleanup, since unregister can happen in queued tasks.
- Rework script-side transaction tracking to be keyed by db_name to avoid linear scans when looking up a txn to maybe-commit.
- Use dom_manipulation_task_source where required to preserve ordering/expectations; document why database_access_task_source caused test failures.
- Rename handled_next_unhandled_id to handled_next_unhandled_request_id for clarity (aligns with backend terminology).
- Treat backend commit failure mapping as temporary; avoid implying QuotaExceeded unless the backend reports it.
- Improve backend scheduling performance by avoiding O(n) membership checks on queues (keep VecDeque for FIFO order and add a set for O(1) contains).

Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
@github-actions

Copy link
Copy Markdown

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

@servo-wpt-sync

Copy link
Copy Markdown
Collaborator

🛠 These changes could not be applied onto the latest upstream WPT. Servo's copy of the Web Platform Tests may be out of sync.

Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
@servo-wpt-sync

Copy link
Copy Markdown
Collaborator

🛠 These changes could not be applied onto the latest upstream WPT. Servo's copy of the Web Platform Tests may be out of sync.

@github-actions

Copy link
Copy Markdown

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

Flaky unexpected result (24)
  • OK [expected TIMEOUT] /IndexedDB/idbfactory_open.any.worker.html
    • PASS [expected FAIL] subtest: Calling open() with version argument 1.5 should not throw.
    • PASS [expected TIMEOUT] subtest: Calling open() with version argument 9007199254740991 should not throw.
    • PASS [expected TIMEOUT] subtest: Calling open() with version argument undefined should not throw.
  • CRASH [expected PASS] /_mozilla/shadow-dom/move-element-with-ua-shadow-tree-crash.html (#39473)
  • CRASH [expected OK] /_webgl/conformance2/wasm/readpixels-2gb-in-4gb-wasm-memory.html
  • FAIL [expected PASS] /css/css-backgrounds/background-size-042.html
  • OK /css/css-fonts/generic-family-keywords-003.html (#38994)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted cursive (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted monospace (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted system-ui (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted math (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(kai) (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 /css/css-grid/grid-definition/grid-support-grid-template-columns-rows-001.html (#41194)
    • FAIL [expected PASS] subtest: 'grid' with: grid-template-columns: none; and grid-template-rows: none;

      assert_in_array: gridTemplateColumns value "59px" not in array ["90px"]
      

    • FAIL [expected PASS] subtest: 'grid' with: grid-template-columns: auto; and grid-template-rows: auto;

      assert_in_array: gridTemplateColumns value "59px" not in array ["90px"]
      

    • FAIL [expected PASS] subtest: 'grid' with: grid-template-columns: max-content; and grid-template-rows: max-content;

      assert_in_array: gridTemplateColumns value "59px" not in array ["90px"]
      

    • FAIL [expected PASS] subtest: 'grid' with: grid-template-columns: min-content; and grid-template-rows: min-content;

      assert_in_array: gridTemplateColumns value "28px" not in array ["40px"]
      

    • FAIL [expected PASS] subtest: 'grid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;

      assert_in_array: gridTemplateColumns value "59px 741px" not in array ["90px 710px"]
      

    • FAIL [expected PASS] subtest: 'grid' with: grid-template-columns: min-content 1fr calc(20px + 10%) minmax(30em, 50em); and grid-template-rows: min-content 1fr calc(10% + 40px) minmax(3em, 5em);

      assert_in_array: gridTemplateColumns value "28px 172px 100px 500px" not in array ["40px 160px 100px 500px"]
      

    • FAIL [expected PASS] subtest: 'grid' with: grid-template-columns: foo; and grid-template-rows: bar;

      assert_in_array: gridTemplateColumns value "59px" not in array ["90px"]
      

    • FAIL [expected PASS] subtest: 'grid' with: grid-template-columns: auto none; and grid-template-rows: none auto;

      assert_in_array: gridTemplateColumns value "59px" not in array ["90px"]
      

    • FAIL [expected PASS] subtest: 'grid' with: grid-template-columns: 100px, 200px; and grid-template-rows: 300px, 400px;

      assert_in_array: gridTemplateColumns value "59px" not in array ["90px"]
      

    • FAIL [expected PASS] subtest: 'grid' with: grid-template-columns: minmax(100px, 200px, 300px); and grid-template-rows: minmax(100px, 200px, 300px);

      assert_in_array: gridTemplateColumns value "59px" not in array ["90px"]
      

  • 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 [expected ERROR] /fetch/fetch-later/quota/same-origin-iframe/multiple-iframes.https.window.html (#35176)
  • OK /html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html (#28697)
    • FAIL [expected PASS] subtest: aElement.click() before the load event must NOT replace

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

  • CRASH [expected OK] /html/browsers/windows/browsing-context-names/choose-_parent-004.html
  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html (#29087)
    • FAIL [expected TIMEOUT] subtest: &lt;dialog&gt;-contained autofocus element gets focused when the dialog is shown

      assert_equals: expected "DIV" but got "BODY"
      

  • 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/media-elements/media_fragment_seek.html (#24114)
    • PASS [expected FAIL] subtest: Video should seek to time specified in media fragment syntax
  • OK [expected TIMEOUT] /html/semantics/embedded-content/media-elements/src_object_blob.html (#40340)
    • PASS [expected TIMEOUT] subtest: HTMLMediaElement.srcObject blob
  • OK /html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-nav-location-assign.html (#32863)
    • FAIL [expected PASS] subtest: Navigating iframe loading='lazy' before it is loaded: location.assign

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

  • 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/user-activation/navigation-state-reset-sameorigin.html
    • TIMEOUT [expected PASS] subtest: Post-navigation state reset.

      Test timed out
      

  • OK /touch-events/single-tap-when-touchend-listener-use-sync-xhr.html (#41175)
    • PASS [expected FAIL] subtest: Click event should be fired when touchend opens synchronous XHR
  • OK /visual-viewport/resize-event-order.html (#41981)
    • PASS [expected FAIL] subtest: Popup: DOMWindow resize fired before VisualViewport.
  • 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[35643] |1.4114453792572021 - -0.69260573387146| = 2.104051113128662 &gt; 0.0038986 expected -0.69260573387146 +/- 0.0038986 but got 1.4114453792572021
      

  • OK /webdriver/tests/classic/element_clear/disabled.py
    • FAIL [expected PASS] subtest: test_button[button]

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

  • OK /webdriver/tests/classic/element_click/bubbling.py
    • FAIL [expected PASS] subtest: test_click_event_bubbles_to_parents

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

  • ERROR [expected OK] /workers/baseurl/alpha/sharedworker-in-worker.html (#21315)
Stable unexpected results that are known to be intermittent (20)
  • ERROR [expected OK] /IndexedDB/cursor-overloads.any.html (#42437)
  • OK /_mozilla/css/offset_properties_inline.html (#40543)
    • 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
      

  • 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 /beacon/beacon-basic.https.window.html (#41723)
    • PASS [expected FAIL] subtest: Payload size restriction should be accumulated: type = string
  • 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 2

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

  • OK /css/css-fonts/generic-family-keywords-001.html (#37467)
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted generic(khmer-mul)

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

  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • PASS [expected FAIL] subtest: sec-fetch-storage-access - Cross-site
  • 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-origin destination
    • PASS [expected FAIL] subtest: sec-fetch-storage-access - Not sent to non-trustworthy same-site destination
  • CRASH [expected OK] /html/browsers/browsing-the-web/navigating-across-documents/005.html (#27062)
  • OK /html/browsers/history/the-history-interface/traverse_the_history_3.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted

      assert_array_equals: Pages opened during history navigation lengths differ, expected array [6, 3] length 2, got [6, 1, 1] length 3
      

  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted

      assert_array_equals: Pages opened during history navigation expected property 1 to be 5 but got 3 (expected array [6, 5] got [6, 3])
      

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

      Test timed out
      

    • NOTRUN [expected PASS] subtest: Non-HTMLElement should not support autofocus
  • OK /html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html (#39703)
    • FAIL [expected PASS] subtest: Meta refresh of the original iframe is not blocked if moved into a sandboxed iframe

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

  • OK /html/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 /navigation-timing/test-navigation-type-reload.html (#33334)
    • FAIL [expected PASS] subtest: Reload domComplete &gt; Original domComplete

      assert_true: Reload domComplete &gt; Original domComplete expected true got false
      

    • FAIL [expected PASS] subtest: Reload domContentLoadedEventEnd &gt; Original domContentLoadedEventEnd

      assert_true: Reload domContentLoadedEventEnd &gt; Original domContentLoadedEventEnd expected true got false
      

    • FAIL [expected PASS] subtest: Reload loadEventEnd &gt; Original loadEventEnd

      assert_true: Reload loadEventEnd &gt; Original loadEventEnd expected true got false
      

    • FAIL [expected PASS] subtest: Reload loadEventStart &gt; Original loadEventStart

      assert_true: Reload loadEventStart &gt; Original loadEventStart expected true got false
      

  • OK /resource-timing/test_resource_timing.html (#25720)
    • FAIL [expected PASS] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (xmlhttprequest)

      assert_equals: expected 12.370000000000001 but got 12.37
      

  • 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.
    • TIMEOUT [expected NOTRUN] subtest: Navigate a frame via form-submission with javascript:-urls w/ default policy in enforcing mode.

      Test timed out
      

  • 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 (5)
  • ERROR [expected OK] /IndexedDB/interleaved-cursors-small.any.html
  • ERROR [expected OK] /IndexedDB/interleaved-cursors-small.any.worker.html
  • OK /IndexedDB/transaction-scheduling-mixed-scopes.any.worker.html
    • FAIL [expected PASS] subtest: Check that scope restrictions on mixed transactions are enforced.

      assert_true: expected true got false
      

  • OK /IndexedDB/transaction-scheduling-rw-scopes.any.html
    • FAIL [expected PASS] subtest: Check that scope restrictions on read-write transactions are enforced.

      assert_true: expected true got false
      

  • CRASH [expected OK] /html/browsers/history/the-location-interface/assign-with-nested-iframe.html

@github-actions

Copy link
Copy Markdown

⚠️ Try run (#22164458579) failed!

 no-op success so script side completion does not spuriously abort

Signed-off-by: Taym Haddadi <haddadi.taym@gmail.com>
@github-actions

Copy link
Copy Markdown

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

@servo-wpt-sync

Copy link
Copy Markdown
Collaborator

🛠 These changes could not be applied onto the latest upstream WPT. Servo's copy of the Web Platform Tests may be out of sync.

@github-actions

Copy link
Copy Markdown

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

Flaky unexpected result (24)
  • TIMEOUT /FileAPI/url/url-in-tags-revoke.window.html (#19978)
    • TIMEOUT [expected PASS] subtest: Fetching a blob URL immediately before revoking it works in &lt;script&gt; tags.

      Test timed out
      

  • OK [expected TIMEOUT] /IndexedDB/idbfactory_open.any.worker.html
    • PASS [expected FAIL] subtest: Calling open() with version argument 1.5 should not throw.
    • PASS [expected TIMEOUT] subtest: Calling open() with version argument 9007199254740991 should not throw.
    • PASS [expected TIMEOUT] subtest: Calling open() with version argument undefined should not throw.
  • CRASH [expected ERROR] /_webgl/conformance2/textures/misc/tex-input-validation.html (#38890)
  • 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.
  • FAIL [expected PASS] /css/css-backgrounds/background-size-042.html
  • OK /css/css-fonts/generic-family-keywords-001.html (#37467)
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted generic(khmer-mul)

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

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

      assert_equals: quoted generic(nastaliq) matches  @font-face rule expected 30 but got 50
      

  • OK /css/css-fonts/generic-family-keywords-003.html (#38994)
    • 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 fantasy (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted monospace (drawing text in a canvas)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted system-ui (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(nastaliq) (drawing text in a canvas)
  • FAIL [expected PASS] /css/css-ui/webkit-appearance-menulist-001.html
  • OK /fetch/content-length/api-and-duplicate-headers.any.worker.html (#35197)
    • FAIL [expected PASS] subtest: fetch() and duplicate Content-Length/Content-Type headers

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

  • OK [expected ERROR] /fetch/fetch-later/quota/same-origin-iframe/accumulated-oversized-payload.https.window.html (#41705)
  • 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-origin destination
    • PASS [expected FAIL] subtest: sec-fetch-storage-access - Not sent to non-trustworthy same-site destination
  • CRASH [expected OK] /html/browsers/browsing-the-web/history-traversal/unset_context_name.html
  • 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 TIMEOUT] /html/browsers/browsing-the-web/unloading-documents/prompt-and-unload-script-closeable.html
  • 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/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html (#39703)
    • FAIL [expected PASS] subtest: Meta refresh of the original iframe is not blocked if moved into a sandboxed iframe

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

  • 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/user-activation/navigation-state-reset-sameorigin.html
    • TIMEOUT [expected PASS] subtest: Post-navigation state reset.

      Test timed out
      

  • FAIL [expected PASS] /png/apng/fcTL-blend-source-transparent.html (#39520)
  • PASS [expected FAIL] /png/apng/fcTL-dispose-none.html (#41817)
  • OK /touch-events/single-tap-when-touchend-listener-use-sync-xhr.html (#41175)
    • PASS [expected FAIL] subtest: Click event should be fired when touchend opens synchronous XHR
  • OK /webdriver/tests/classic/dismiss_alert/dismiss.py (#39098)
    • FAIL [expected PASS] subtest: test_dismiss_in_popup_window

      AssertionError: no such alert (404): No user prompt is currently active.
      

  • OK /webdriver/tests/classic/take_screenshot/iframe.py
    • ERROR [expected PASS] subtest: test_always_captures_top_browsing_context

      setup error: ConnectionRefusedError: [Errno 111] Connection refused
      

    • ERROR [expected PASS] subtest: test_source_origin[same_origin]

      setup error: ConnectionRefusedError: [Errno 111] Connection refused
      

    • ERROR [expected PASS] subtest: test_source_origin[cross_origin]

      setup error: ConnectionRefusedError: [Errno 111] Connection refused
      

Stable unexpected results that are known to be intermittent (15)
  • ERROR [expected OK] /IndexedDB/cursor-overloads.any.html (#42437)
  • 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
      

  • CRASH [expected PASS] /_mozilla/shadow-dom/move-element-with-ua-shadow-tree-crash.html (#39473)
  • OK /beacon/beacon-basic.https.window.html (#41723)
    • PASS [expected FAIL] subtest: Payload size restriction should be accumulated: type = string
  • OK /css/css-cascade/layer-font-face-override.html (#35935)
    • FAIL [expected PASS] subtest: @font-face override update with appended sheet 2

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

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

  • ERROR [expected TIMEOUT] /html/browsers/browsing-the-web/history-traversal/pageswap/pageswap-initial-navigation.html (#40387)
  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted

      assert_array_equals: Pages opened during history navigation expected property 1 to be 5 but got 3 (expected array [6, 5] got [6, 3])
      

  • TIMEOUT /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • 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;
      

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

      Test timed out
      

  • OK /html/semantics/embedded-content/media-elements/media_fragment_seek.html (#24114)
    • PASS [expected FAIL] subtest: Video should seek to time specified in media fragment syntax
  • OK /navigation-timing/test-navigation-type-reload.html (#33334)
    • FAIL [expected PASS] subtest: Reload domComplete &gt; Original domComplete

      assert_true: Reload domComplete &gt; Original domComplete expected true got false
      

    • FAIL [expected PASS] subtest: Reload domContentLoadedEventEnd &gt; Original domContentLoadedEventEnd

      assert_true: Reload domContentLoadedEventEnd &gt; Original domContentLoadedEventEnd expected true got false
      

    • FAIL [expected PASS] subtest: Reload loadEventEnd &gt; Original loadEventEnd

      assert_true: Reload loadEventEnd &gt; Original loadEventEnd expected true got false
      

    • FAIL [expected PASS] subtest: Reload loadEventStart &gt; Original loadEventStart

      assert_true: Reload loadEventStart &gt; Original loadEventStart expected true got false
      

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

      assert_equals: expected 2 but got 1
      

  • OK /resource-timing/test_resource_timing.html (#25720)
    • FAIL [expected PASS] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (xmlhttprequest)

      assert_equals: expected 7.899999999999999 but got 7.89
      

  • ERROR [expected OK] /webxr/render_state_update.https.html (#27535)

@github-actions

Copy link
Copy Markdown

✨ Try run (#22176319213) succeeded.

@Taym95

Taym95 commented Feb 19, 2026

Copy link
Copy Markdown
Member Author

@gterzian @janvarga thank you for the detailed review comments. I’ve addressed them all, and I’ll create follow up issues where needed.

@TimvdLippe

Copy link
Copy Markdown
Contributor

Congrats on landing this work!

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

Development

Successfully merging this pull request may close these issues.

7 participants