xhr

edit

WPT coverage of the tests of xhr at the revision 5602b0f210e3. The tests link to their results in the browsers on wpt.fyi. The tentative tests (experimental features) and the reftests are listed separately from the stable tests.

GroupPassingTestsDisabledPass rate
Stable320330097%
Tentative220100%
Reftests000–
All322332097%

Failure reasons

The tests that do not pass (failing or disabled), by kind of reason. A test with several reasons counts once per kind.

  • TEST BUG: 3
  • NOT IMPLEMENTED: 2
  • TEST RUNNER: 5

Stable tests

TestResultSubtestsKindDescription
XMLHttpRequest-withCredentials.any.jsPass10 / 10
abort-after-receive.any.jsPass2 / 2
abort-after-send.any.jsPass2 / 2
abort-after-stop.window.jsPass1 / 1
abort-after-timeout.any.jsPass2 / 2
abort-during-done.window.jsPass3 / 3
abort-during-headers-received.window.jsPass1 / 1
abort-during-loading.window.jsPass1 / 1
abort-during-navigation.window.jsPass1 / 1
abort-during-open.any.jsPass2 / 2
abort-during-readystatechange.any.jsPass2 / 2
abort-during-unsent.any.jsPass2 / 2
abort-during-upload.any.jsPass2 / 2
abort-event-abort.any.jsPass2 / 2
abort-event-listeners.any.jsPass2 / 2
abort-event-loadend.any.jsPass2 / 2
abort-event-order.htmPass1 / 1
abort-progress-events.any.jsPass4 / 4
abort-upload-event-abort.any.jsPass2 / 2
abort-upload-event-loadend.any.jsPass2 / 2
abort-with-error.any.jsPass2 / 2
access-control-and-redirects-async-same-origin.any.jsPass12 / 12
access-control-and-redirects-async.any.jsPass14 / 14
access-control-and-redirects.any.jsPass12 / 12
access-control-basic-allow-access-control-origin-header-data-url.htmPass1 / 1
access-control-basic-allow-access-control-origin-header.any.jsPass2 / 2
access-control-basic-allow-async.any.jsPass2 / 2
access-control-basic-allow-non-cors-safelisted-method-async.any.jsPass2 / 2
access-control-basic-allow-non-cors-safelisted-method.any.jsPass2 / 2
access-control-basic-allow-preflight-cache-invalidation-by-header.any.jsPass2 / 2
access-control-basic-allow-preflight-cache-invalidation-by-method.any.jsPass2 / 2
access-control-basic-allow-preflight-cache-timeout.any.jsPass2 / 2
access-control-basic-allow-preflight-cache.any.jsPass2 / 2
access-control-basic-allow-star.any.jsPass2 / 2
access-control-basic-allow.any.jsPass2 / 2
access-control-basic-cors-safelisted-request-headers.htmPass1 / 1
access-control-basic-cors-safelisted-response-headers.htmPass1 / 1
access-control-basic-denied.htmPass2 / 2
access-control-basic-get-fail-non-simple.htmPass1 / 1
access-control-basic-non-cors-safelisted-content-type.htmPass1 / 1
access-control-basic-post-success-no-content-type.htmPass1 / 1
access-control-basic-post-with-non-cors-safelisted-content-type.htmPass2 / 2
access-control-basic-preflight-denied.htmPass1 / 1
access-control-expose-headers-on-redirect.htmlPass1 / 1
access-control-preflight-async-header-denied.htmPass1 / 1
access-control-preflight-async-method-denied.htmPass1 / 1
access-control-preflight-async-not-supported.htmPass1 / 1
access-control-preflight-credential-async.htmPass1 / 1
access-control-preflight-credential-sync.htmPass1 / 1
access-control-preflight-headers-async.htmPass1 / 1
access-control-preflight-headers-sync.htmPass1 / 1
access-control-preflight-request-allow-headers-returns-star.any.jsPass2 / 2
access-control-preflight-request-header-lowercase.htmPass1 / 1
access-control-preflight-request-header-returns-origin.any.jsPass2 / 2
access-control-preflight-request-header-sorted.htmPass1 / 1
access-control-preflight-request-headers-origin.htmPass1 / 1
access-control-preflight-request-invalid-status-301.htmPass1 / 1
access-control-preflight-request-invalid-status-400.htmPass1 / 1
access-control-preflight-request-invalid-status-501.htmPass1 / 1
access-control-preflight-request-must-not-contain-cookie.htmFail0 / 1TEST RUNNERxhr/resources/access-control-cookie.py is not emulated
access-control-preflight-sync-header-denied.htmPass1 / 1
access-control-preflight-sync-method-denied.htmPass1 / 1
access-control-preflight-sync-not-supported.htmPass1 / 1
access-control-recursive-failed-request.htmPass1 / 1
access-control-response-with-body-sync.htmPass1 / 1
access-control-response-with-body.htmPass1 / 1
access-control-response-with-exposed-headers.htmPass1 / 1
access-control-sandboxed-iframe-allow-origin-null.htmPass1 / 1
access-control-sandboxed-iframe-allow.htmPass1 / 1
access-control-sandboxed-iframe-denied-without-wildcard.htmPass2 / 2
access-control-sandboxed-iframe-denied.htmPass2 / 2
allow-lists-starting-with-comma.htmPass1 / 1
anonymous-mode-unsupported.htmPass1 / 1
blob-range.any.jsPass54 / 54
close-worker-with-xhr-in-progress.htmlPass1 / 1
content-type-unmodified.any.jsPass2 / 2
cookies.http.htmlFail0 / 1TEST RUNNERxhr/resources/get-set-cookie.py is not emulated (404)
cors-expose-star.sub.any.jsPass6 / 6
cors-upload.any.jsPass4 / 4
data-uri.htmPass10 / 10
event-abort.any.jsPass2 / 2
event-error-order.sub.htmlPass1 / 1
event-error.sub.any.jsPass4 / 4
event-load.any.jsPass2 / 2
event-loadend.any.jsPass2 / 2
event-loadstart-upload.any.jsPass2 / 2
event-loadstart.any.jsPass2 / 2
event-progress.any.jsPass2 / 2
event-readystate-sync-open.any.jsPass4 / 4
event-readystatechange-loaded.any.jsFail0 / 2NOT IMPLEMENTEDstreamed response bodies (the LOADING readystatechange is fired once, with the whole body)
event-timeout-order.any.jsPass2 / 2
event-timeout.any.jsPass2 / 2
event-upload-progress-crossorigin.any.jsPass8 / 8
event-upload-progress.any.jsPass8 / 8
firing-events-http-content-length.htmlPass1 / 1
firing-events-http-no-content-length.htmlPass1 / 1
formdata.htmlPass9 / 9
formdata/append-formelement.htmlPass8 / 8
formdata/append.any.jsPass14 / 14
formdata/constructor-formelement.htmlPass1 / 1
formdata/constructor-submitter-coordinate.htmlPass1 / 1
formdata/constructor-submitter.htmlPass9 / 9
formdata/constructor.any.jsPass2 / 2
formdata/delete-formelement.htmlPass4 / 4
formdata/delete.any.jsPass6 / 6
formdata/foreach.any.jsPass8 / 8
formdata/get-formelement.htmlPass6 / 6
formdata/get.any.jsPass12 / 12
formdata/has-formelement.htmlPass3 / 3
formdata/has.any.jsPass6 / 6
formdata/iteration.any.jsPass6 / 6
formdata/set-blob.any.jsPass12 / 12
formdata/set-formelement.htmlPass8 / 8
formdata/set.any.jsPass14 / 14
formdata/submitter-coordinate-value.htmlPass1 / 1
getallresponseheaders-after-reuse.htmlPass1 / 1
getallresponseheaders-cookies.htmPass1 / 1
getallresponseheaders-status.htmPass1 / 1
getallresponseheaders.htmPass7 / 7
getresponseheader-case-insensitive.htmPass1 / 1
getresponseheader-chunked-trailer.htmPass1 / 1
getresponseheader-cookies-and-more.htmPass1 / 1
getresponseheader-error-state.htmPass1 / 1
getresponseheader-server-date.htmFail0 / 1TEST RUNNERthe emulated server does not add the Server and Date headers that wptserve sends
getresponseheader-special-characters.htmPass1 / 1
getresponseheader-unsent-opened-state.htmPass1 / 1
getresponseheader.any.jsPass12 / 12
header-user-agent-async.htmPass1 / 1
header-user-agent-sync.htmPass1 / 1
headers-normalize-response.htmPass15 / 15
historical.htmlPass3 / 3
idlharness.any.jsPass516 / 516
json.any.jsPass12 / 12
loadstart-and-state.htmlPass2 / 2
open-after-abort.htmPass1 / 1
open-after-setrequestheader.htmPass1 / 1
open-after-stop.window.jsPass1 / 1
open-during-abort-event.htmPass1 / 1
open-during-abort-processing.htmPass1 / 1
open-during-abort.htmPass1 / 1
open-method-bogus.htmPass8 / 8
open-method-case-insensitive.htmPass6 / 6
open-method-case-sensitive.htmPass9 / 9
open-method-insecure.htmPass9 / 9
open-method-responsetype-set-sync.htmPass5 / 5
open-open-send.htmPass1 / 1
open-open-sync-send.htmPass1 / 1
open-parameters-toString.htmPass1 / 1
open-referer.htmPass1 / 1
open-send-during-abort.htmPass1 / 1
open-send-open.htmPass1 / 1
open-sync-open-send.htmPass1 / 1
open-url-about-blank-window.htmPass1 / 1
open-url-base-inserted-after-open.htmPass1 / 1
open-url-base-inserted.htmPass1 / 1
open-url-base.htmPass1 / 1
open-url-encoding.htmPass2 / 2
open-url-fragment.htmPass4 / 4
open-url-javascript-window-2.htmPass1 / 1
open-url-javascript-window.htmPass1 / 1
open-url-multi-window-2.htmPass1 / 1
open-url-multi-window-3.htmPass1 / 1
open-url-multi-window-4.htmTimeout0 / 1TEST BUGthe test (whose comment says the pass condition is unclear and follows a proposal, whatwg/xhr#3, that was not merged) expects error and loadend events for an XHR of an iframe removed during the request: the document is destroyed, its fetch group is terminated, and the tasks of the terminated fetch do not run (the document is not fully active), so no event is fired, as in Firefox
open-url-multi-window-5.htmPass1 / 1
open-url-multi-window-6.htmFail0 / 1TEST BUGWeb IDL creates the exception thrown by an operation in the current realm (the realm of the open() function, the realm of the iframe: https://webidl.spec.whatwg.org/#dfn-throw); the test expects an exception of the realm of the caller. Firefox and Safari fail the same way ("threw an exception from the wrong global"), Chrome does not throw
open-url-multi-window.htmPass1 / 1
open-url-redirected-sharedworker-origin.htmPass3 / 3
open-url-redirected-worker-origin.htmPass3 / 3
open-url-worker-origin.htmPass3 / 3
open-url-worker-simple.htmPass1 / 1
open-user-password-non-same-origin.htmPass1 / 1
over-1-meg.any.jsPass2 / 2
overridemimetype-blob.htmlPass77 / 77
overridemimetype-chunked-response.window.jsFail0 / 4TEST RUNNERxhr/resources/content-in-chunks.py is not emulated (404)
overridemimetype-done-state.any.jsPass2 / 2
overridemimetype-edge-cases.window.jsPass4 / 4
overridemimetype-headers-received-state-force-shiftjis.htmPass1 / 1
overridemimetype-invalid-mime-type.htmPass3 / 3
overridemimetype-loading-state.htmPass1 / 1
overridemimetype-open-state-force-utf-8.htmPass1 / 1
overridemimetype-open-state-force-xml.htmPass1 / 1
overridemimetype-unsent-state-force-shiftjis.any.jsPass2 / 2
preserve-ua-header-on-redirect.htmPass2 / 2
progress-events-response-data-gzip.htmPass1 / 1
progressevent-constructor.any.jsPass30 / 30
progressevent-constructor.htmlPass10 / 10
progressevent-interface.htmlPass7 / 7
request-content-length.any.jsPass4 / 4
response-body-errors.any.jsPass4 / 4
response-data-arraybuffer.htmPass1 / 1
response-data-blob.htmPass1 / 1
response-data-deflate.htmPass1 / 1
response-data-gzip.htmPass1 / 1
response-data-progress.htmFail0 / 2NOT IMPLEMENTEDstreamed response bodies (a single progress event with the whole body)
response-invalid-responsetype.htmPass5 / 5
response-invalid-utf8.htmlPass1 / 1
response-json-bom.htmlPass1 / 1
response-json-during-loading.htmlPass1 / 1
response-json.htmPass4 / 4
response-method.htmPass3 / 3
responseText-status.htmlPass1 / 1
responseType-document-in-worker.htmlPass1 / 1
responseXML-unavailable-in-worker.htmlPass1 / 1
responseXML-xml-scripting-support-disabled.htmlPass5 / 5
responsedocument-decoding.htmPass6 / 6
responsetext-decoding.htmPass37 / 37
responsetype.any.jsPass100 / 100
responseurl-after-abort.any.jsPass10 / 10
responseurl.htmlPass2 / 2
responsexml-basic.htmPass2 / 2
responsexml-document-properties.htmPass24 / 24
responsexml-get-twice.htmPass4 / 4
responsexml-invalid-type.htmlPass1 / 1
responsexml-media-type.htmPass15 / 15
responsexml-non-document-types.htmPass5 / 5
responsexml-non-well-formed.htmPass7 / 7
security-consideration.sub.htmlPass1 / 1
send-accept-language.htmPass2 / 2
send-accept.htmPass1 / 1
send-after-setting-document-domain.htmPass3 / 3
send-authentication-basic-cors-not-enabled.htmPass1 / 1
send-authentication-basic-cors.htmPass1 / 1
send-authentication-basic-repeat-no-args.htmPass1 / 1
send-authentication-basic-setrequestheader-and-arguments.htmPass1 / 1
send-authentication-basic-setrequestheader-existing-session.htmPass1 / 1
send-authentication-basic-setrequestheader.htmPass1 / 1
send-authentication-basic.htmPass1 / 1
send-authentication-competing-names-passwords.htmPass13 / 13
send-authentication-cors-basic-setrequestheader.htmPass1 / 1
send-authentication-cors-setrequestheader-no-cred.htmFail1 / 2TEST BUGthe synchronous request whose CORS preflight rejects the Authorization header expects error and loadend events: the request error steps of a synchronous request throw the NetworkError before the events are fired (https://xhr.spec.whatwg.org/#request-error-steps, step 4)
send-blob-with-no-mime-type.htmlPass8 / 8
send-conditional-cors.htmPass2 / 2
send-conditional.htmPass2 / 2
send-content-type-charset.htmPass19 / 19
send-content-type-string.htmPass3 / 3
send-data-arraybuffer.any.jsPass2 / 2
send-data-arraybufferview.any.jsPass2 / 2
send-data-blob.htmPass1 / 1
send-data-es-object.any.jsPass22 / 22
send-data-formdata.any.jsPass2 / 2
send-data-isolation.htmlPass3 / 3
send-data-sharedarraybuffer.any.jsPass28 / 28
send-data-string-invalid-unicode.any.jsPass18 / 18
send-data-unexpected-tostring.htmPass3 / 3
send-document-lone-surrogate.htmlPass1 / 1
send-entity-body-basic.htmPass6 / 6
send-entity-body-document-bogus.htmPass4 / 4
send-entity-body-document.htmPass7 / 7
send-entity-body-empty.htmPass3 / 3
send-entity-body-get-head-async.htmPass2 / 2
send-entity-body-get-head.htmPass2 / 2
send-entity-body-none.htmPass6 / 6
send-network-error-async-events.sub.htmPass1 / 1
send-network-error-sync-events.sub.htmPass2 / 2
send-no-response-event-loadend.htmPass1 / 1
send-no-response-event-loadstart.htmPass1 / 1
send-no-response-event-order.htmPass1 / 1
send-non-same-origin.htmPass7 / 7
send-receive-utf16.htmPass3 / 3
send-redirect-bogus-sync.sub.htmPass5 / 5
send-redirect-bogus.sub.htmPass4 / 4
send-redirect-infinite-sync.htmPass1 / 1
send-redirect-infinite.htmPass1 / 1
send-redirect-no-location.htmPass4 / 4
send-redirect-post-upload.htmPass5 / 5
send-redirect-to-cors.htmPass23 / 23
send-redirect-to-non-cors.htmPass4 / 4
send-redirect.htmPass34 / 34
send-response-event-order.htmPass1 / 1
send-response-upload-event-loadend.htmPass1 / 1
send-response-upload-event-loadstart.htmPass1 / 1
send-response-upload-event-progress.htmPass1 / 1
send-send.any.jsPass2 / 2
send-sync-blocks-async.htmPass1 / 1
send-sync-no-response-event-load.htmPass1 / 1
send-sync-no-response-event-loadend.htmPass1 / 1
send-sync-no-response-event-order.htmPass1 / 1
send-sync-response-event-order.htmPass1 / 1
send-sync-timeout.htmPass1 / 1
send-timeout-events.htmPass1 / 1
send-usp.any.jsPass270 / 270
setrequestheader-after-send.htmPass1 / 1
setrequestheader-allow-empty-value.htmPass3 / 3
setrequestheader-allow-whitespace-in-value.htmPass4 / 4
setrequestheader-before-open.htmPass1 / 1
setrequestheader-bogus-name.htmPass71 / 71
setrequestheader-bogus-value.htmPass5 / 5
setrequestheader-case-insensitive.htmPass2 / 2
setrequestheader-combining.window.jsPass1 / 1
setrequestheader-content-type.htmPass34 / 34
setrequestheader-header-allowed.htmPass10 / 10
setrequestheader-header-forbidden.htmPass2 / 2
setrequestheader-open-setrequestheader.htmPass1 / 1
split-byte-order-mark.any.jsFail0 / 8TEST RUNNERxhr/resources/content-in-chunks.py is not emulated (404)
status-async.htmPass27 / 27
status-basic.htmPass27 / 27
status-error.htmPass21 / 21
status.h2.window.jsPass7 / 7
sync-no-progress.any.jsPass2 / 2
sync-no-timeout.any.jsPass3 / 3
sync-xhr-and-window-onload.htmlPass1 / 1
template-element.htmlPass3 / 3
thrown-error-in-events.htmlPass2 / 2
timeout-cors-async.htmPass1 / 1
timeout-multiple-fetches.htmlPass2 / 2
timeout-sync.htmPass2 / 2
xhr-authorization-redirect.any.jsPass9 / 9
xhr-timeout-longtask.any.jsPass2 / 2
xmlhttprequest-basic.htmPass1 / 1
xmlhttprequest-eventtarget.htmPass1 / 1
xmlhttprequest-network-error-sync.htmPass1 / 1
xmlhttprequest-network-error.htmPass1 / 1
xmlhttprequest-sync-block-defer-scripts.htmlPass1 / 1
xmlhttprequest-sync-block-scripts.htmlPass1 / 1
xmlhttprequest-sync-not-hang-scriptloader.htmlPass1 / 1
xmlhttprequest-timeout-aborted.htmlPass3 / 3
xmlhttprequest-timeout-abortedonmain.htmlPass2 / 2
xmlhttprequest-timeout-overrides.htmlPass3 / 3
xmlhttprequest-timeout-overridesexpires.htmlPass3 / 3
xmlhttprequest-timeout-reused.htmlPass1 / 1
xmlhttprequest-timeout-simple.htmlPass3 / 3
xmlhttprequest-timeout-synconmain.htmlPass2 / 2
xmlhttprequest-timeout-twice.htmlPass3 / 3
xmlhttprequest-timeout-worker-aborted.htmlPass9 / 9
xmlhttprequest-timeout-worker-overrides.htmlPass3 / 3
xmlhttprequest-timeout-worker-overridesexpires.htmlPass9 / 9
xmlhttprequest-timeout-worker-simple.htmlPass3 / 3
xmlhttprequest-timeout-worker-synconworker.htmlPass3 / 3
xmlhttprequest-timeout-worker-twice.htmlPass3 / 3
xmlhttprequest-unsent.htmPass1 / 1

Tentative tests

TestResultSubtestsKindDescription
sync-xhr-supported-by-permissions-policy.tentative.htmlPass1 / 1
xmlhttprequest-sync-default-permissions-policy.tentative.sub.htmlPass5 / 5