fetch

edit

WPT coverage of the tests of fetch 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
Stable332408182%
Tentative1477118%
Reftests911082%
All355496272%

Failure reasons

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

  • BUG: 1
  • TEST BUG: 24
  • NOT IMPLEMENTED: 91
  • REQUIRES: 3
    • layout: 2
    • workers: 1
  • TEST RUNNER: 79
  • FLAKY: 1

Stable tests

TestResultSubtestsKindDescription
api/abort/cache.https.any.jsPass6 / 6
api/abort/destroyed-context.htmlPass1 / 1
api/abort/general.any.jsPass183 / 183
api/abort/keepalive.htmlPass2 / 2
api/abort/request.any.jsPass54 / 54
api/abort/serviceworker-intercepted.https.htmlTimeout10 / 12TEST BUGthe iframe of the test navigates to the scope of sw-intercept-abort.js, whose fetch event of the navigation request waits for the abort of its signal: the iframe never loads, so with_iframe() never resolves and the test times out (as in the browsers on wpt.fyi, 10 of 12 subtests with a TIMEOUT). The signal of the request of the fetch event is aborted with the serialized abort reason of the fetch
api/basic/accept-header.any.jsPass12 / 12
api/basic/block-mime-as-script.htmlPass22 / 22
api/basic/conditional-get.any.jsPass3 / 3
api/basic/error-after-response.any.jsPass6 / 6
api/basic/fetch-in-popup-from-iframe.htmlPass1 / 1
api/basic/gc.any.jsPass18 / 18
api/basic/header-value-combining.any.jsPass18 / 18
api/basic/header-value-null-byte.any.jsPass3 / 3
api/basic/historical.any.jsPass9 / 9
api/basic/http-response-code.any.jsFail0 / 3TEST RUNNERfetch/connection-pool/resources/network-partition-key.py is not emulated (404 instead of 425)
api/basic/integrity.sub.any.jsPass54 / 54
api/basic/keepalive.any.jsPass14 / 14
api/basic/mediasource.window.jsPass1 / 1
api/basic/mode-no-cors.sub.any.jsPass8 / 8
api/basic/mode-same-origin.any.jsPass16 / 16
api/basic/referrer.any.jsPass12 / 12
api/basic/request-forbidden-headers.any.jsPass288 / 288
api/basic/request-head.any.jsPass3 / 3
api/basic/request-headers-case.any.jsPass6 / 6
api/basic/request-headers-nonascii.any.jsPass3 / 3
api/basic/request-headers.any.jsPass75 / 75
api/basic/request-referrer-redirected-worker.htmlPass2 / 2
api/basic/request-referrer.any.jsPass6 / 6
api/basic/request-upload-421.any.jsFail0 / 3TEST RUNNERfetch/connection-pool/resources/network-partition-key.py is not emulated (404 instead of 421)
api/basic/request-upload.any.jsPass54 / 54
api/basic/request-upload.h2.any.jsTimeout9 / 36NOT IMPLEMENTED, TEST RUNNERstreaming request bodies (ReadableStream body with duplex: 'half'); echo-content.h2.py and network-partition-key.py are not emulated
api/basic/response-null-body.any.jsPass33 / 33
api/basic/response-url.sub.any.jsPass8 / 8
api/basic/scheme-about.any.jsPass21 / 21
api/basic/scheme-blob.sub.any.jsPass36 / 36
api/basic/scheme-data.any.jsPass24 / 24
api/basic/scheme-others.sub.any.jsPass48 / 48
api/basic/split-byte-order-mark.any.jsFail0 / 10TEST RUNNERxhr/resources/content-in-chunks.py is not emulated (404)
api/basic/status.h2.any.jsPass14 / 14
api/basic/stream-response.any.jsPass6 / 6
api/basic/stream-safe-creation.any.jsPass189 / 189
api/basic/text-utf8.any.jsPass90 / 90
api/basic/url-parsing.sub.htmlPass9 / 9
api/body/formdata.any.jsPass6 / 6
api/body/mime-type.any.jsPass40 / 40
api/body/textstream.any.jsPass42 / 42
api/cors/cors-basic.any.jsPass30 / 30
api/cors/cors-cookies-redirect.any.jsPass8 / 8
api/cors/cors-cookies.any.jsPass12 / 12
api/cors/cors-expose-star.sub.any.jsPass6 / 6
api/cors/cors-filtering.sub.any.jsPass38 / 38
api/cors/cors-keepalive.any.jsPass95 / 95
api/cors/cors-multiple-origins.sub.any.jsPass18 / 18
api/cors/cors-no-preflight.any.jsPass30 / 30
api/cors/cors-origin.any.jsPass34 / 34
api/cors/cors-preflight-cache-tainted.any.jsPass4 / 4
api/cors/cors-preflight-cache.any.jsFail4 / 6TEST RUNNERthe emulation of fetch/api/resources/preflight.py does not support the options-count and fail-next parameters (the OPTIONS request count is not stashed and the next request does not fail)
api/cors/cors-preflight-not-cors-safelisted.any.jsPass24 / 24
api/cors/cors-preflight-redirect.any.jsPass30 / 30
api/cors/cors-preflight-referrer.any.jsPass24 / 24
api/cors/cors-preflight-response-validation.any.jsPass4 / 4
api/cors/cors-preflight-star.any.jsPass68 / 68
api/cors/cors-preflight-status.any.jsPass54 / 54
api/cors/cors-preflight-unterminated-body.any.jsPass2 / 2
api/cors/cors-preflight.any.jsPass44 / 44
api/cors/cors-redirect-credentials.any.jsPass130 / 130
api/cors/cors-redirect-preflight.any.jsPass60 / 60
api/cors/cors-redirect.any.jsPass40 / 40
api/cors/data-url-iframe.htmlPass3 / 3
api/cors/data-url-shared-worker.htmlPass3 / 3
api/cors/data-url-worker.htmlPass3 / 3
api/cors/sandboxed-iframe.htmlPass1 / 1
api/crashtests/huge-fetch.any.jsDisabled–TEST RUNNERthe crash tests (crashtests directories and -crash. files) are not run by the test discovery
api/credentials/authentication-basic.any.jsPass12 / 12
api/credentials/authentication-redirection.any.jsPass9 / 9
api/credentials/cookies.any.jsPass21 / 21
api/headers/header-setcookie.any.jsPass72 / 72
api/headers/header-values-last-event-id.any.jsFail0 / 3TEST RUNNERthe handler of the WPT server that echoes the request headers is not emulated (404)
api/headers/header-values-normalize.any.jsPass124 / 124
api/headers/header-values.any.jsPass16 / 16
api/headers/headers-basic.any.jsPass69 / 69
api/headers/headers-casing.any.jsPass12 / 12
api/headers/headers-combine.any.jsPass18 / 18
api/headers/headers-errors.any.jsPass54 / 54
api/headers/headers-forbidden-override.any.jsPass270 / 270
api/headers/headers-no-cors.any.jsPass81 / 81
api/headers/headers-normalize.any.jsPass9 / 9
api/headers/headers-record.any.jsPass39 / 39
api/headers/headers-structure.any.jsPass24 / 24
api/idlharness.https.any.jsPass477 / 477
api/policies/csp-blocked-worker.htmlPass1 / 1
api/policies/csp-blocked.htmlPass1 / 1
api/policies/referrer-no-referrer-service-worker.https.htmlPass2 / 2
api/policies/referrer-no-referrer-worker.htmlPass1 / 1
api/policies/referrer-no-referrer.htmlPass1 / 1
api/policies/referrer-origin-service-worker.https.htmlPass3 / 3
api/policies/referrer-origin-when-cross-origin-service-worker.https.htmlFail1 / 2TEST BUGthe service worker (an https: context) fetches HTTP_REMOTE_ORIGIN, an http: URL: the request is blocked as mixed content (https://w3c.github.io/webappsec-mixed-content/#should-block-fetch), so fetch() rejects
api/policies/referrer-origin-when-cross-origin-worker.htmlPass1 / 1
api/policies/referrer-origin-when-cross-origin.htmlPass1 / 1
api/policies/referrer-origin-worker.htmlPass2 / 2
api/policies/referrer-origin.htmlPass2 / 2
api/policies/referrer-unsafe-url-service-worker.https.htmlPass2 / 2
api/policies/referrer-unsafe-url-worker.htmlPass1 / 1
api/policies/referrer-unsafe-url.htmlPass1 / 1
api/redirect/redirect-back-to-original-origin.any.jsPass6 / 6
api/redirect/redirect-count.any.jsPass30 / 30
api/redirect/redirect-empty-location.any.jsPass6 / 6
api/redirect/redirect-keepalive.any.jsPass12 / 12
api/redirect/redirect-keepalive.https.any.jsPass2 / 2
api/redirect/redirect-location.any.jsPass165 / 165
api/redirect/redirect-method.any.jsPass45 / 45
api/redirect/redirect-mode.any.jsPass122 / 122
api/redirect/redirect-origin.any.jsFail76 / 80TEST BUGthe test expects no Origin header for a same-origin POST redirected (307/308) to the same origin: the method stays POST, and "append a request Origin header" (https://fetch.spec.whatwg.org/#append-a-request-origin-header, step 4) appends the serialized origin to a request whose method is neither GET nor HEAD unless the referrer policy prevents it (the default strict-origin-when-cross-origin does not for a same-origin request); fetch/origin/assorted.window.js expects this header for a same-origin POST
api/redirect/redirect-referrer-override.any.jsPass256 / 256
api/redirect/redirect-referrer.any.jsPass64 / 64
api/redirect/redirect-schemes.any.jsPass18 / 18
api/redirect/redirect-to-dataurl.any.jsPass15 / 15
api/redirect/redirect-upload.h2.any.jsPass15 / 15
api/request/destination/fetch-destination-frame.https.htmlPass2 / 2
api/request/destination/fetch-destination-iframe.https.htmlPass2 / 2
api/request/destination/fetch-destination-no-load-event.https.htmlPass9 / 9
api/request/destination/fetch-destination-prefetch.https.htmlPass2 / 2
api/request/destination/fetch-destination-worker.https.htmlPass3 / 3
api/request/destination/fetch-destination.https.htmlTimeout17 / 30TEST BUG, NOT IMPLEMENTEDaudioWorklet.addModule('dummy?dest=audioworklet') fetches the empty resources/dummy file, served as application/octet-stream (it has no extension): it is not a JavaScript MIME type, so the module script fails and addModule() rejects with an AbortError; <link rel=preload as=json>: json is a potential destination (link.as reflects it) but not a preload destination of the specification (https://html.spec.whatwg.org/multipage/links.html#preload-destination), so nothing is fetched and no event is fired: fetch-destination.https.html times out there, before its next subtests (the browsers preload it); the external resource of the SVG use element is not fetched (fetch-destination-no-load-event.https.html times out there)
api/request/forbidden-method.any.jsPass18 / 18
api/request/multi-globals/construct-in-detached-frame.window.jsPass1 / 1
api/request/multi-globals/url-parsing.htmlPass1 / 1
api/request/request-bad-port.any.jsFail249 / 252TEST RUNNERthe proxy of the WPT server is not emulated (the request fails)
api/request/request-cache-default-conditional.any.jsPass120 / 120
api/request/request-cache-default.any.jsPass24 / 24
api/request/request-cache-force-cache.any.jsPass48 / 48
api/request/request-cache-no-cache.any.jsPass12 / 12
api/request/request-cache-no-store.any.jsPass24 / 24
api/request/request-cache-only-if-cached.any.jsPass42 / 42
api/request/request-cache-reload.any.jsPass36 / 36
api/request/request-clone-readable-stream-body.any.jsPass3 / 3
api/request/request-clone.sub.htmlPass2 / 2
api/request/request-constructor-init-body-override.any.jsPass4 / 4
api/request/request-consume-empty.any.jsFail39 / 42TEST BUGthe FormData subtest ("Consume empty FormData request body as text") expects an empty FormData to be serialized as an empty body, which the test itself marks as unclear (FIXME, web-platform-tests/wpt#3950). The multipart/form-data encoding (RFC 7578) writes the close delimiter --boundary-- even without entries, which fetch/api/response/response-form-data.html ("Empty form data") and the round trips of fetch/api/body/formdata.any.js require: the two expectations cannot both be met
api/request/request-consume.any.jsPass135 / 135
api/request/request-disturbed.any.jsPass27 / 27
api/request/request-error.any.jsPass66 / 66
api/request/request-headers.any.jsPass183 / 183
api/request/request-init-001.sub.htmlPass53 / 53
api/request/request-init-002.any.jsPass24 / 24
api/request/request-init-003.sub.htmlPass4 / 4
api/request/request-init-contenttype.any.jsPass36 / 36
api/request/request-init-priority.any.jsPass16 / 16
api/request/request-init-stream.any.jsPass69 / 69
api/request/request-keepalive-quota.htmlPass6 / 6
api/request/request-keepalive.any.jsPass6 / 6
api/request/request-reset-attributes.https.htmlPass3 / 3
api/request/request-structure.any.jsPass72 / 72
api/request/url-encoding.htmlPass2 / 2
api/response/json.any.jsPass4 / 4
api/response/multi-globals/url-parsing.htmlPass1 / 1
api/response/response-arraybuffer-realm.window.jsPass1 / 1
api/response/response-blob-realm.any.jsPass1 / 1
api/response/response-body-read-task-handling.htmlPass2 / 2
api/response/response-body-stashed-chunk.htmlPass1 / 1
api/response/response-cancel-stream.any.jsPass21 / 21
api/response/response-clone-iframe.window.jsPass1 / 1
api/response/response-clone.any.jsPass63 / 63
api/response/response-consume-empty.any.jsFail39 / 42TEST BUGthe FormData subtest ("Consume empty FormData response body as text") expects an empty FormData to be serialized as an empty body, which the test itself marks as unclear (FIXME, web-platform-tests/wpt#3950). The multipart/form-data encoding (RFC 7578) writes the close delimiter --boundary-- even without entries, which fetch/api/response/response-form-data.html ("Empty form data") and the round trips of fetch/api/body/formdata.any.js require: the two expectations cannot both be met
api/response/response-consume-stream.any.jsPass45 / 45
api/response/response-consume.htmlFail38 / 40TEST BUGfrom FormData to blob and from URLSearchParams to blob expect the type of the blob to be the Content-Type of the body as is (lowercased by the test): the type of the blob of blob() is the serialized MIME type of the Content-Type of the body (https://fetch.spec.whatwg.org/#concept-body-package-data), which is multipart/form-data;boundary=… (without the space) and application/x-www-form-urlencoded;charset=UTF-8 (https://fetch.spec.whatwg.org/#concept-bodyinit-extract); the browsers pass them because they keep the header and lowercase the type, and fail the subtests of fetch/content-type/response.window.js and mimesniff/mime-types/parsing.any.js that expect the case of the parameters to be kept
api/response/response-error-from-stream.any.jsPass42 / 42
api/response/response-error.any.jsPass30 / 30
api/response/response-form-data.htmlPass14 / 14
api/response/response-from-stream.any.jsPass9 / 9
api/response/response-headers-guard.any.jsPass3 / 3
api/response/response-init-001.any.jsPass27 / 27
api/response/response-init-002.any.jsPass24 / 24
api/response/response-init-contenttype.any.jsPass36 / 36
api/response/response-static-error.any.jsPass6 / 6
api/response/response-static-json.any.jsPass48 / 48
api/response/response-static-redirect.any.jsPass33 / 33
api/response/response-stream-bad-chunk.any.jsPass18 / 18
api/response/response-stream-disturbed-1.any.jsPass36 / 36
api/response/response-stream-disturbed-2.any.jsPass36 / 36
api/response/response-stream-disturbed-3.any.jsPass36 / 36
api/response/response-stream-disturbed-4.any.jsPass36 / 36
api/response/response-stream-disturbed-5.any.jsPass36 / 36
api/response/response-stream-disturbed-6.any.jsPass15 / 15
api/response/response-stream-disturbed-by-pipe.any.jsPass6 / 6
api/response/response-stream-with-broken-then.any.jsPass18 / 18
connection-pool/network-partition-key.htmlTimeout0 / 9TEST RUNNERfetch/connection-pool/resources/network-partition-key.py is not emulated (connection pool partitioning cannot be observed)
content-encoding/br/bad-br-body.https.any.jsFail0 / 6TEST RUNNERbad-br-body.py is not emulated (404): the WPT loader gives the decoded body of a response, it cannot fail while the body is read
content-encoding/br/big-br-body.https.any.jsPass6 / 6
content-encoding/br/br-body.https.any.jsPass6 / 6
content-encoding/br/br-navigation.https.window.jsPass1 / 1
content-encoding/gzip/bad-gzip-body.any.jsFail0 / 21TEST RUNNERbad-gzip-body.py is not emulated (404): the WPT loader gives the decoded body of a response, it cannot fail while the body is read
content-encoding/gzip/big-gzip-body.https.any.jsPass6 / 6
content-encoding/gzip/gzip-body.any.jsPass6 / 6
content-encoding/gzip/gzip-navigation.https.window.jsPass1 / 1
content-encoding/zstd/bad-zstd-body.https.any.jsFail0 / 21TEST RUNNERbad-zstd-body.py is not emulated (404), and the WPT loader does not decode zstd
content-encoding/zstd/big-zstd-body.https.any.jsFail0 / 6TEST RUNNERthe WPT loader decodes the gzip, deflate and br content codings of the served files, not zstd (.NET has no Zstandard decoder; the library relies on the decompression of its loader)
content-encoding/zstd/zstd-body.https.any.jsFail0 / 6TEST RUNNERthe WPT loader decodes the gzip, deflate and br content codings of the served files, not zstd (.NET has no Zstandard decoder; the library relies on the decompression of its loader)
content-encoding/zstd/zstd-navigation.https.window.jsFail0 / 1TEST RUNNERthe WPT loader decodes the gzip, deflate and br content codings of the served files, not zstd (.NET has no Zstandard decoder; the library relies on the decompression of its loader)
content-length/api-and-duplicate-headers.any.jsPass4 / 4
content-length/content-length.htmlFail0 / 1TEST RUNNERthe Content-Length of the .headers file does not truncate the served body (an HTTP connection would)
content-length/parsing.window.jsFail1 / 36TEST RUNNERfetch/content-length/resources/content-length.py is not emulated (404)
content-length/too-long.window.jsFail0 / 1TEST RUNNERfetch/content-length/resources/content-length.py is not emulated (404)
content-type/multipart-malformed.any.jsPass2 / 2
content-type/multipart.window.jsPass1 / 1
content-type/response.window.jsFail120 / 121TEST BUGthe combined-header variant of text/html;x=" + text/plain expects text/html;x=", text/plain", but content-type.py joins the values of single_header with , (no space): the response has the single header text/html;x=",text/plain", whose MIME type keeps the comma without the space; the other subtests pass
content-type/script.window.jsPass31 / 31
corb/script-html-js-polyglot.sub.htmlPass2 / 2
corb/script-html-via-cross-origin-blob-url.sub.htmlPass1 / 1
corb/script-js-mislabeled-as-html-nosniff.sub.htmlPass1 / 1
corb/script-js-mislabeled-as-html.sub.htmlPass1 / 1
corb/style-css-mislabeled-as-html-nosniff.sub.htmlPass1 / 1
corb/style-css-mislabeled-as-html.sub.htmlPass1 / 1
corb/style-css-with-json-parser-breaker.sub.htmlPass1 / 1
corb/style-html-correctly-labeled.sub.htmlPass1 / 1
cross-origin-resource-policy/fetch-in-iframe.htmlPass5 / 5
cross-origin-resource-policy/fetch.any.jsFail33 / 36TEST BUGthe test expects Cross-Origin-Resource-Policy: same-site to block a no-cors request from an http: page to a same-site https: URL, but the cross-origin resource policy internal check of the Fetch Standard allows it: the origins are schemelessly same site, and only an https: request origin requires an https: response
cross-origin-resource-policy/fetch.https.any.jsPass27 / 27
cross-origin-resource-policy/iframe-loads.htmlPass1 / 1
cross-origin-resource-policy/image-loads.htmlPass6 / 6
cross-origin-resource-policy/scheme-restriction.any.jsFail0 / 2TEST BUGthe test expects Cross-Origin-Resource-Policy: same-site to block a no-cors request from an http: page to a same-site https: URL, but the cross-origin resource policy internal check of the Fetch Standard allows it: the origins are schemelessly same site, and only an https: request origin requires an https: response
cross-origin-resource-policy/scheme-restriction.https.window.jsFail0 / 1TEST BUGthe mixed-content <img> of HTTP_REMOTE_ORIGIN is upgraded to https: on the same port (the port of the HTTP server, https://w3c.github.io/webappsec-mixed-content/#upgrade-algorithm only changes port 80), where no HTTPS server listens: the image fires error (it fails in the browsers on wpt.fyi too)
cross-origin-resource-policy/script-loads.htmlPass6 / 6
cross-origin-resource-policy/syntax.any.jsPass14 / 14
data-urls/base64.any.jsPass243 / 243
data-urls/navigate.window.jsPass7 / 7
data-urls/processing.any.jsPass219 / 219
fetch-later/activate-after.https.window.jsPass2 / 2
fetch-later/basic.https.window.jsPass23 / 23
fetch-later/basic.https.worker.jsPass1 / 1
fetch-later/headers/header-referrer-no-referrer-when-downgrade.https.htmlPass1 / 1
fetch-later/headers/header-referrer-no-referrer.https.htmlPass1 / 1
fetch-later/headers/header-referrer-origin-when-cross-origin.https.htmlPass2 / 2
fetch-later/headers/header-referrer-origin.https.htmlPass1 / 1
fetch-later/headers/header-referrer-same-origin.https.htmlPass2 / 2
fetch-later/headers/header-referrer-strict-origin-when-cross-origin.https.htmlPass1 / 1
fetch-later/headers/header-referrer-strict-origin.https.htmlPass1 / 1
fetch-later/headers/header-referrer-unsafe-url.https.htmlPass1 / 1
fetch-later/iframe.https.window.jsPass1 / 1
fetch-later/new-window.https.window.jsPass12 / 12
fetch-later/non-secure.window.jsPass1 / 1
fetch-later/permissions-policy/deferred-fetch-allowed-by-permissions-policy-attribute-redirect.https.window.jsPass2 / 2
fetch-later/permissions-policy/deferred-fetch-allowed-by-permissions-policy-attribute.https.window.jsPass2 / 2
fetch-later/permissions-policy/deferred-fetch-allowed-by-permissions-policy.https.window.jsPass4 / 4
fetch-later/permissions-policy/deferred-fetch-default-permissions-policy.https.window.jsPass3 / 3
fetch-later/permissions-policy/deferred-fetch-supported-by-permissions-policy.window.jsPass1 / 1
fetch-later/policies/csp-allowed.https.window.jsPass1 / 1
fetch-later/policies/csp-blocked.https.window.jsPass1 / 1
fetch-later/policies/csp-redirect-to-blocked.https.window.jsPass1 / 1
fetch-later/quota/accumulated-oversized-payload.https.window.jsPass1 / 1
fetch-later/quota/cross-origin-iframe/accumulated-oversized-payload.https.window.jsPass1 / 1
fetch-later/quota/cross-origin-iframe/empty-payload.https.window.jsPass6 / 6
fetch-later/quota/cross-origin-iframe/max-payload.https.window.jsPass4 / 4
fetch-later/quota/cross-origin-iframe/multiple-iframes.https.window.jsPass1 / 1
fetch-later/quota/cross-origin-iframe/oversized-payload.https.window.jsPass6 / 6
fetch-later/quota/cross-origin-iframe/sandboxed-iframe.https.window.jsPass1 / 1
fetch-later/quota/cross-origin-iframe/small-payload.https.window.jsPass6 / 6
fetch-later/quota/empty-payload.https.window.jsPass9 / 9
fetch-later/quota/max-payload.https.window.jsPass2 / 2
fetch-later/quota/multiple-origins.https.window.jsPass6 / 6
fetch-later/quota/oversized-payload.https.window.jsPass6 / 6
fetch-later/quota/same-origin-iframe/accumulated-oversized-payload.https.window.jsPass1 / 1
fetch-later/quota/same-origin-iframe/empty-payload.https.window.jsPass6 / 6
fetch-later/quota/same-origin-iframe/max-payload.https.window.jsPass2 / 2
fetch-later/quota/same-origin-iframe/multiple-iframes.https.window.jsFail0 / 1TEST BUGthe test expects the quota and requested members of the QuotaExceededError to be null (as in Chromium, which does not set them), although the specification throws "a QuotaExceededError whose quota is quota and requested is requested", which the other quota tests of the directory expect (and which fail in Chromium); the error is thrown as expected, with quota 0 and requested 65536
fetch-later/quota/same-origin-iframe/oversized-payload.https.window.jsPass6 / 6
fetch-later/quota/same-origin-iframe/sandboxed-iframe.https.window.jsPass1 / 1
fetch-later/quota/same-origin-iframe/small-payload.https.window.jsPass6 / 6
fetch-later/quota/small-payload.https.window.jsPass6 / 6
fetch-later/send-on-deactivate-with-background-sync.https.window.jsPass3 / 3
fetch-later/send-on-deactivate.https.window.jsPass5 / 5
fetch-later/send-on-discard/not-send-after-abort.https.window.jsPass1 / 1
fetch-later/send-on-discard/send-multiple-with-activate-after.https.window.jsPass1 / 1
fetch-later/send-on-discard/send-multiple.https.window.jsPass1 / 1
h1-parsing/lone-cr.window.jsFail0 / 10TEST RUNNERfetch/h1-parsing/resources/message.py is not emulated (the raw HTTP messages with a lone CR cannot be produced)
h1-parsing/resources-with-0x00-in-header.window.jsPass4 / 4
h1-parsing/status-code.window.jsFail0 / 16TEST RUNNERfetch/h1-parsing/resources/status-code.py is not emulated (404)
http-cache/304-update.any.jsPass15 / 15
http-cache/cache-mode.any.jsPass15 / 15
http-cache/cc-request.any.jsPass36 / 36
http-cache/freshness.any.jsPass51 / 51
http-cache/heuristic.any.jsPass51 / 51
http-cache/invalidate.any.jsPass45 / 45
http-cache/partial.any.jsFail0 / 27NOT IMPLEMENTEDthe partial responses (206) are not stored by the HTTP cache, which does not serve a range from a stored response
http-cache/post-patch.any.jsFail0 / 6TEST BUGthe response of the POST or PATCH request is stored and reused by the GET request, but the test expects its body to be the default body (the uuid) instead of the abc body of the stored response
http-cache/pragma-no-cache-with-cache-control.htmlPass2 / 2
http-cache/split-cache.htmlPass4 / 4
http-cache/status.any.jsPass78 / 78
http-cache/vary.any.jsPass42 / 42
images/canvas-remote-read-remote-image-redirect.htmlPass1 / 1
metadata/audio-worklet.https.htmlPass5 / 5
metadata/fetch-preflight.https.sub.any.jsPass30 / 30
metadata/fetch.https.sub.any.jsPass90 / 90
metadata/generated/audioworklet.https.sub.htmlPass19 / 19
metadata/generated/element-a.https.sub.htmlFail22 / 23TEST BUGthe sec-fetch-user - no attributes with user activation subtest: test_driver.bless() gives the transient activation to the window of the test, but the link is clicked in the popup the test opened, whose window has no transient activation: the source snapshot params of the navigation (https://html.spec.whatwg.org/multipage/browsing-the-web.html#snapshotting-source-snapshot-params) do not have transient activation, so the request does not have the Sec-Fetch-User header
metadata/generated/element-a.sub.htmlPass18 / 18
metadata/generated/element-area.https.sub.htmlFail22 / 23TEST BUGthe sec-fetch-user - no attributes with user activation subtest: test_driver.bless() gives the transient activation to the window of the test, but the link is clicked in the popup the test opened, whose window has no transient activation: the source snapshot params of the navigation (https://html.spec.whatwg.org/multipage/browsing-the-web.html#snapshotting-source-snapshot-params) do not have transient activation, so the request does not have the Sec-Fetch-User header
metadata/generated/element-area.sub.htmlPass18 / 18
metadata/generated/element-audio.https.sub.htmlFail21 / 23TEST BUG, NOT IMPLEMENTEDthe HTTPS downgrade-upgrade subtests redirect the request through an http: URL, which is mixed content in an https: document: they fail in every browser; the Sec-Fetch-Storage-Access request header (Storage Access API)
metadata/generated/element-audio.sub.htmlPass18 / 18
metadata/generated/element-embed.https.sub.htmlFail17 / 19TEST BUG, NOT IMPLEMENTEDexpects Sec-Fetch-Mode: no-cors for an embed element, as Chromium does; the HTML Standard fetches its resource with the "navigate" mode (as fetch/metadata/embed.https.sub.tentative.html expects); the Sec-Fetch-Storage-Access header (Storage Access API)
metadata/generated/element-embed.sub.htmlPass18 / 18
metadata/generated/element-frame.https.sub.htmlFail19 / 20NOT IMPLEMENTEDthe Sec-Fetch-Storage-Access request header (Storage Access API)
metadata/generated/element-frame.sub.htmlPass18 / 18
metadata/generated/element-iframe.https.sub.htmlFail19 / 20NOT IMPLEMENTEDthe Sec-Fetch-Storage-Access request header (Storage Access API)
metadata/generated/element-iframe.sub.htmlPass18 / 18
metadata/generated/element-img-environment-change.https.sub.htmlFail21 / 22REQUIRES(layout)the sizes of the srcset image are not re-evaluated when the iframe is resized, so the second load never fires
metadata/generated/element-img-environment-change.sub.htmlPass18 / 18
metadata/generated/element-img.https.sub.htmlFail42 / 45TEST BUG, NOT IMPLEMENTEDthe HTTPS downgrade-upgrade subtests redirect the request through an http: URL, which is mixed content in an https: document: they fail in every browser; the Sec-Fetch-Storage-Access request header (Storage Access API)
metadata/generated/element-img.sub.htmlPass36 / 36
metadata/generated/element-input-image.https.sub.htmlFail18 / 20TEST BUG, NOT IMPLEMENTEDthe HTTPS downgrade-upgrade subtests redirect the request through an http: URL, which is mixed content in an https: document: they fail in every browser; the Sec-Fetch-Storage-Access request header (Storage Access API)
metadata/generated/element-input-image.sub.htmlPass18 / 18
metadata/generated/element-link-icon.https.sub.htmlTimeout0 / 22NOT IMPLEMENTEDfetching the icons of <link rel=icon>
metadata/generated/element-link-icon.sub.htmlTimeout0 / 18NOT IMPLEMENTEDfetching the icons of <link rel=icon>
metadata/generated/element-link-prefetch.https.optional.sub.htmlFail21 / 34TEST BUG, NOT IMPLEMENTEDthe optional test expects the Sec-Fetch-Dest of a prefetch to be the destination of its as attribute (Chromium): the specification makes the destination of a prefetch the empty string; the Sec-Fetch-Storage-Access header
metadata/generated/element-link-prefetch.optional.sub.htmlPass18 / 18
metadata/generated/element-meta-refresh.https.optional.sub.htmlPass20 / 20
metadata/generated/element-meta-refresh.optional.sub.htmlPass18 / 18
metadata/generated/element-picture.https.sub.htmlFail63 / 66NOT IMPLEMENTEDthe Sec-Fetch-Storage-Access request header (Storage Access API)
metadata/generated/element-picture.sub.htmlPass54 / 54
metadata/generated/element-script.https.sub.htmlFail36 / 37NOT IMPLEMENTEDthe Sec-Fetch-Storage-Access request header (Storage Access API)
metadata/generated/element-script.sub.htmlPass36 / 36
metadata/generated/element-video-poster.https.sub.htmlTimeout14 / 20REQUIRES(layout)the test polls until the video's clientWidth is the poster width (123)
metadata/generated/element-video-poster.sub.htmlPass18 / 18
metadata/generated/element-video.https.sub.htmlFail21 / 23TEST BUG, NOT IMPLEMENTEDthe HTTPS downgrade-upgrade subtests redirect the request through an http: URL, which is mixed content in an https: document: they fail in every browser; the Sec-Fetch-Storage-Access request header (Storage Access API)
metadata/generated/element-video.sub.htmlPass18 / 18
metadata/generated/fetch-via-serviceworker.https.sub.htmlFail42 / 44NOT IMPLEMENTEDthe Sec-Fetch-Storage-Access header
metadata/generated/fetch.https.sub.htmlFail21 / 22NOT IMPLEMENTEDthe Sec-Fetch-Storage-Access request header (Storage Access API)
metadata/generated/fetch.sub.htmlPass18 / 18
metadata/generated/form-submission.https.sub.htmlPass42 / 42
metadata/generated/form-submission.sub.htmlPass36 / 36
metadata/generated/header-link.https.sub.htmlFail0 / 37NOT IMPLEMENTEDthe Link response header (rel=preload, prefetch, icon, stylesheet... are not fetched)
metadata/generated/header-link.sub.htmlFail0 / 36NOT IMPLEMENTEDthe Link response header (rel=preload, prefetch, icon, stylesheet... are not fetched)
metadata/generated/header-refresh.https.optional.sub.htmlPass20 / 20
metadata/generated/header-refresh.optional.sub.htmlPass18 / 18
metadata/generated/script-json-module-import-static.https.sub.htmlPass17 / 17
metadata/generated/script-json-module-import-static.sub.htmlPass18 / 18
metadata/generated/script-module-import-dynamic.https.sub.htmlPass19 / 19
metadata/generated/script-module-import-dynamic.sub.htmlPass18 / 18
metadata/generated/script-module-import-static.https.sub.htmlPass19 / 19
metadata/generated/script-module-import-static.sub.htmlPass18 / 18
metadata/generated/script-text-module-import-static.https.sub.htmlPass17 / 17
metadata/generated/script-text-module-import-static.sub.htmlPass18 / 18
metadata/generated/serviceworker.https.sub.htmlPass10 / 10
metadata/generated/svg-image.https.sub.htmlFail20 / 23TEST BUG, NOT IMPLEMENTEDthe HTTPS downgrade-upgrade subtests redirect the request through an http: URL, which is mixed content in an https: document: they fail in every browser; the test expects Sec-Fetch-Dest: empty for the SVG <image> request only because SVG 2 does not set the destination of its fetch (https://svgwg.org/svg2-draft/linking.html#processingURL-fetch, w3c/svgwg#782); the generator config of the test (fetch/metadata/tools/fetch-metadata.conf.yml) notes that Chromium and Firefox use image, which the content security policies (img-src) and the Accept header of an image request need; the Sec-Fetch-Storage-Access request header (Storage Access API)
metadata/generated/svg-image.sub.htmlPass18 / 18
metadata/generated/window-history.https.sub.htmlPass16 / 16
metadata/generated/window-history.sub.htmlPass30 / 30
metadata/generated/window-location.https.sub.htmlPass84 / 84
metadata/generated/window-location.sub.htmlPass72 / 72
metadata/generated/worker-dedicated-constructor.https.sub.htmlPass6 / 6
metadata/generated/worker-dedicated-constructor.sub.htmlPass5 / 5
metadata/generated/worker-dedicated-importscripts.https.sub.htmlFail18 / 19NOT IMPLEMENTEDthe Sec-Fetch-Storage-Access request header (Storage Access API)
metadata/generated/worker-dedicated-importscripts.sub.htmlPass18 / 18
metadata/navigation.https.sub.htmlPass5 / 5
metadata/object.https.sub.htmlPass15 / 15
metadata/paint-worklet.https.htmlPass5 / 5
metadata/preload.https.sub.htmlPass91 / 91
metadata/redirect/multiple-redirect-https-downgrade-upgrade.sub.htmlPass26 / 26
metadata/redirect/redirect-http-upgrade.sub.htmlPass26 / 26
metadata/redirect/redirect-https-downgrade.sub.htmlPass26 / 26
metadata/report.https.sub.htmlPass15 / 15
metadata/serviceworker-accessors.https.sub.htmlPass5 / 5
metadata/sharedworker.https.sub.htmlPass5 / 5
metadata/style.https.sub.htmlPass20 / 20
metadata/text.https.htmlPass5 / 5
metadata/track.https.sub.htmlPass20 / 20
metadata/trailing-dot.https.sub.any.jsFail0 / 9TEST RUNNERthe hosts spelled with a trailing dot (web-platform.test.) are not served
metadata/unload.https.sub.htmlPass5 / 5
metadata/window-open.https.sub.htmlPass45 / 45
metadata/worker.https.sub.htmlPass5 / 5
metadata/zz-debug.https.sub.htmlPass1 / 1
nosniff/image.htmlPass11 / 11
nosniff/importscripts.htmlPass1 / 1
nosniff/parsing-nosniff.window.jsFail6 / 16TEST RUNNERfetch/nosniff/resources/nosniff.py is not emulated (404), so the scripts fail to load
nosniff/script.htmlPass10 / 10
nosniff/stylesheet.htmlPass18 / 18
nosniff/worker.htmlPass9 / 9
origin/assorted.window.jsError0 / 43TEST RUNNERfetch/origin/resources/redirect-and-stash.py is not emulated (the stash returns the 404 page instead of JSON)
range/blob.any.jsPass70 / 70
range/cache-revalidate-construct-range-response.htmlFail0 / 1NOT IMPLEMENTED, TEST RUNNERthe partial responses (206) are not stored by the HTTP cache; video-with-aged-proxy-cache.py is not emulated
range/data.any.jsPass4 / 4
range/general.any.jsFail15 / 21TEST RUNNERfetch/range/resources/stash-take.py and long-wav.py are not emulated
range/general.window.jsTimeout0 / 2TEST RUNNERfetch/range/resources/partial-script.py and stash-take.py are not emulated
range/non-matching-range-response.htmlPass3 / 3
range/sw-416.https.window.jsFail0 / 2NOT IMPLEMENTEDthe range-requested flag of the fetch algorithm: a 416 response given by a service worker to a no-cors request that had no Range header when the service worker received it is not turned into a network error
range/sw-intercept-range.https.window.jsPass2 / 2
range/sw-opaque.https.window.jsPass1 / 1
range/sw.https.window.jsFail6 / 10NOT IMPLEMENTED, TEST RUNNERthe range-requested flag of the fetch algorithm: a ranged (206) response given by a service worker to a no-cors request without Range header is not turned into a network error; fetch/range/resources/partial-script.py and stash-take.py are not emulated
redirect-navigate/302-found-post.htmlFail0 / 1TEST RUNNERfetch/redirect-navigate/302-found-post-handler.py is not emulated (the frame shows a 404 page of another origin)
redirect-navigate/preserve-fragment.htmlPass120 / 120
redirects/data.window.jsPass3 / 3
redirects/subresource-fragments.htmlPass4 / 4
security/1xx-response.any.jsFail2 / 8TEST RUNNERthe pipe=status(100)/103/199 responses are delivered as final responses (an HTTP client treats 1xx as interim and then fails)
security/canvas-tainted-serviceworker-passthrough-redirect.https.htmlPass1 / 1
security/dangling-markup/dangling-markup-mitigation-allowed-apis.https.htmlTimeout0 / 0REQUIRES(workers)the requests are recorded by a service worker (navigator.serviceWorker)
security/dangling-markup/media.htmlFail2 / 4NOT IMPLEMENTEDthe dangling markup mitigation (URLs containing both \n and < are not blocked: the audio and the video load), which only Chromium implements for the media resources
security/dangling-markup/option.htmlFail0 / 6NOT IMPLEMENTEDthe dangling markup mitigation (a form action/navigation URL containing \n and < is not blocked)
security/dangling-markup/textarea.htmlFail0 / 3NOT IMPLEMENTEDthe dangling markup mitigation (a form action/navigation URL containing \n and < is not blocked)
security/redirect-to-url-with-credentials.https.htmlPass7 / 7
security/stylesheet-cssrules-serviceworker-passthrough-redirect.https.htmlPass1 / 1
stale-while-revalidate/fetch-sw.https.htmlTimeout0 / 1NOT IMPLEMENTEDthe stale-while-revalidate directive of the HTTP cache (a stale response is validated before it is used)
stale-while-revalidate/fetch.any.jsTimeout0 / 3NOT IMPLEMENTED, TEST RUNNERthe stale-while-revalidate directive of the HTTP cache (a stale response is validated before it is used); the stale-*.py handlers are not emulated
stale-while-revalidate/revalidate-not-blocked-by-csp.htmlTimeout0 / 1NOT IMPLEMENTED, TEST RUNNERthe stale-while-revalidate directive of the HTTP cache (a stale response is validated before it is used); the fetch/stale-while-revalidate/resources/stale-image.py handler is not emulated
stale-while-revalidate/stale-css.htmlTimeout0 / 1NOT IMPLEMENTED, TEST RUNNERthe stale-while-revalidate directive of the HTTP cache (a stale response is validated before it is used); the stale-*.py handlers are not emulated
stale-while-revalidate/stale-image.htmlTimeout0 / 1NOT IMPLEMENTED, TEST RUNNERthe stale-while-revalidate directive of the HTTP cache (a stale response is validated before it is used); the stale-*.py handlers are not emulated
stale-while-revalidate/stale-script.htmlTimeout0 / 1NOT IMPLEMENTED, TEST RUNNERthe stale-while-revalidate directive of the HTTP cache (a stale response is validated before it is used); the stale-*.py handlers are not emulated

Tentative tests

TestResultSubtestsKindDescription
api/redirect/redirect-location-escape.tentative.any.jsPass15 / 15
compression-dictionary/compressed-large-resources-001.tentative.https.htmlFail0 / 6NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/compressed-large-resources-002.tentative.https.htmlFail0 / 6NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/compressed-large-resources-dictionary-hashes.tentative.https.htmlFail0 / 4NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-clear-site-data-cache.tentative.https.htmlFail0 / 1NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-clear-site-data-cookies.tentative.https.htmlFail0 / 1NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-clear-site-data-storage.tentative.https.htmlFail0 / 1NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-compressed-fetch-with-link-match-dest.tentative.https.htmlFail0 / 3NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-compressed.tentative.https.htmlFail0 / 5NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-decompression.tentative.https.h2.htmlFail0 / 4NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-decompression.tentative.https.htmlFail0 / 5NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-fetch-no-cors.tentative.https.htmlFail0 / 3NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-fetch-timing-001.tentative.https.htmlTimeout0 / 1NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-fetch-timing-002.tentative.https.htmlFail0 / 1NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-fetch-with-imagesrcset.tentative.https.htmlFail0 / 1NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-fetch-with-link-connect-src-nonce.tentative.https.htmlFail0 / 1NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-fetch-with-link-connect-src.tentative.https.htmlFail0 / 1NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-fetch-with-link-element-baseURL.tentative.https.htmlTimeout0 / 1NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-fetch-with-link-element-crossorigin.tentative.https.htmlTimeout1 / 4NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-fetch-with-link-element-events.tentative.https.htmlTimeout0 / 2NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-fetch-with-link-element-in-body.tentative.https.htmlFail1 / 2NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-fetch-with-link-element-invalid-url.tentative.https.htmlPass1 / 1
compression-dictionary/dictionary-fetch-with-link-element.tentative.https.htmlFail0 / 3NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-fetch-with-link-header-in-subresources.tentative.https.htmlFail0 / 4NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-fetch-with-link-header.tentative.https.htmlFail0 / 1NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-fetch-with-link-integrity.tentative.https.htmlTimeout1 / 2NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-fetch-with-link-referrer-and-referrerpolicy.tentative.https.htmlTimeout1 / 12NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-fetch-with-type-attribute.tentative.https.htmlFail0 / 1NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-insecure-context.tentative.http.htmlFail0 / 1NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-match.tentative.https.htmlFail0 / 8NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/dictionary-registration.tentative.https.htmlFail0 / 22NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
compression-dictionary/fetch-destination.tentative.https.htmlTimeout1 / 2NOT IMPLEMENTED, TEST RUNNERCompression Dictionary Transport (Use-As-Dictionary, Available-Dictionary, <link rel=compression-dictionary>, dcb/dcz); its Python handlers are not emulated
content-disposition/multiple-content-disposition.tentative.any.jsPass8 / 8
content-disposition/multiple-content-disposition.tentative.h2.window.jsFail0 / 4TEST RUNNERmultiple-content-disposition.h2.py is not emulated (404)
content-encoding/zstd/big-window-zstd-body.tentative.https.any.jsFail0 / 3TEST RUNNERthe WPT loader decodes the gzip, deflate and br content codings of the served files, not zstd (.NET has no Zstandard decoder; the library relies on the decompression of its loader) (the too-large zstd window is never rejected)
corb/img-mime-types-coverage.tentative.sub.htmlFail21 / 36NOT IMPLEMENTEDOpaque Response Blocking (ORB) of no-cors responses: the <img> of a cross-origin response labeled as HTML, JSON or XML (with X-Content-Type-Options: nosniff) loads instead of firing error
corb/preload-image-png-mislabeled-as-html-nosniff.tentative.sub.htmlFail0 / 1NOT IMPLEMENTEDOpaque Response Blocking (ORB) of no-cors responses (<link rel=preload as=image> of an text/html nosniff response loads)
corb/response_block.tentative.https.htmlFail1 / 2NOT IMPLEMENTEDOpaque Response Blocking (ORB) of no-cors responses (a blocked no-cors fetch() should be a network error)
corb/script-html-correctly-labeled.tentative.sub.htmlFail0 / 1NOT IMPLEMENTEDOpaque Response Blocking (ORB) of no-cors responses (the cross-origin HTML response is executed as a script and throws a syntax error)
corb/script-resource-with-json-parser-breaker.tentative.sub.htmlPass27 / 27
corb/script-resource-with-nonsniffable-types.tentative.sub.htmlTimeout0 / 1TEST RUNNERfetch/corb/resources/sniffable-resource.py is not emulated; the test also calls async_test() with setup({single_test: true}), which testharness.js rejects
h1-parsing/h1-parsing.tentative.htmlFail138 / 204TEST RUNNERthe .asis raw responses are parsed leniently (invalid status lines and headers containing CR/LF/NUL are not network errors, as an HTTP/1.1 client would make them)
http-cache/credentials.tentative.any.jsPass6 / 6
http-cache/no-vary-search.tentative.any.jsFail21 / 39NOT IMPLEMENTEDthe No-Vary-Search header of the responses: the HTTP cache matches the stored responses by their complete URL
local-network-access/dedicated-worker.tentative.https.htmlError0 / 0NOT IMPLEMENTED, TEST RUNNERLocal Network Access; the {{ports[http-local]}}/{{ports[http-public]}} substitutions of support.sub.js are not supported (syntax error)
local-network-access/fetch.tentative.https.htmlError0 / 0NOT IMPLEMENTED, TEST RUNNERLocal Network Access; the {{ports[http-local]}}/{{ports[http-public]}} substitutions of support.sub.js are not supported (syntax error)
local-network-access/iframe-opener.tentative.https.htmlError0 / 0NOT IMPLEMENTED, TEST RUNNERLocal Network Access; the {{ports[http-local]}}/{{ports[http-public]}} substitutions of support.sub.js are not supported (syntax error)
local-network-access/iframe.tentative.https.window.jsError0 / 0NOT IMPLEMENTED, TEST RUNNERLocal Network Access; the {{ports[http-local]}}/{{ports[http-public]}} substitutions of support.sub.js are not supported (syntax error)
local-network-access/navigate.tentative.https.window.jsError0 / 0NOT IMPLEMENTED, TEST RUNNERLocal Network Access; the {{ports[http-local]}}/{{ports[http-public]}} substitutions of support.sub.js are not supported (syntax error)
local-network-access/navigate.tentative.window.jsError0 / 0NOT IMPLEMENTED, TEST RUNNERLocal Network Access; the {{ports[http-local]}}/{{ports[http-public]}} substitutions of support.sub.js are not supported (syntax error)
local-network-access/service-worker-background-fetch.tentative.https.htmlError0 / 0NOT IMPLEMENTED, TEST RUNNERLocal Network Access; the {{ports[http-local]}}/{{ports[http-public]}} substitutions of support.sub.js are not supported (syntax error)
local-network-access/service-worker.tentative.https.htmlError0 / 0NOT IMPLEMENTED, TEST RUNNERLocal Network Access; the {{ports[http-local]}}/{{ports[http-public]}} substitutions of support.sub.js are not supported (syntax error)
local-network-access/shared-worker.tentative.https.htmlError0 / 0NOT IMPLEMENTED, TEST RUNNERLocal Network Access; the {{ports[http-local]}}/{{ports[http-public]}} substitutions of support.sub.js are not supported (syntax error)
local-network-access/websocket.tentative.https.htmlError0 / 0NOT IMPLEMENTED, TEST RUNNERLocal Network Access; the {{ports[http-local]}}/{{ports[http-public]}} substitutions of support.sub.js are not supported (syntax error)
local-network-access/webtransport.tentative.https.htmlError0 / 0NOT IMPLEMENTED, TEST RUNNERLocal Network Access; the {{ports[http-local]}}/{{ports[http-public]}} substitutions of support.sub.js are not supported (syntax error)
metadata/embed.https.sub.tentative.htmlPass30 / 30
metadata/generated/css-font-face.https.sub.tentative.htmlPass19 / 19
metadata/generated/css-font-face.sub.tentative.htmlPass18 / 18
metadata/generated/css-images.https.sub.tentative.htmlTimeout74 / 100TEST BUG, NOT IMPLEMENTEDthe HTTPS downgrade-upgrade subtests redirect the request through an http: URL, which is mixed content in an https: document: they fail in every browser; the background-image subtests compare the array of the header values with a string, and their rejection handler (error) => t.unreached_func() never ends the test: they time out in every browser; the Sec-Fetch-Storage-Access request header (Storage Access API)
metadata/generated/css-images.sub.tentative.htmlTimeout88 / 90TEST BUGthe background-image subtests compare the array of the header values with a string, and their rejection handler (error) => t.unreached_func() never ends the test: they time out in every browser
metadata/generated/header-link.https.sub.tentative.htmlFail0 / 1NOT IMPLEMENTEDthe Link response header (rel=stylesheet is not fetched)
orb/tentative/compressed-image-sniffing.sub.htmlPass1 / 1
orb/tentative/content-range.sub.any.jsFail2 / 4NOT IMPLEMENTEDOpaque Response Blocking (ORB) of no-cors responses (a no-cors range response not starting at 0 is not blocked)
orb/tentative/hls.htmlPrecondition failed0 / 0NOT IMPLEMENTEDHTTP Live Streaming: the media backend of the tests does not play application/vnd.apple.mpegurl (the precondition of the test fails)
orb/tentative/img-mime-types-coverage.tentative.sub.htmlFail18 / 64NOT IMPLEMENTEDOpaque Response Blocking (ORB) of no-cors responses: the <img> of a cross-origin response whose MIME type is not an image, a script, a style sheet or a media type (with X-Content-Type-Options: nosniff) loads instead of firing error
orb/tentative/known-mime-type.sub.any.jsError36 / 51NOT IMPLEMENTEDOpaque Response Blocking (ORB) of no-cors responses
orb/tentative/nosniff.sub.any.jsFail15 / 21NOT IMPLEMENTEDOpaque Response Blocking (ORB) of no-cors responses
orb/tentative/script-js-unlabeled-gzipped.sub.htmlPass1 / 1
orb/tentative/script-unlabeled.sub.htmlPass1 / 1
orb/tentative/script-utf16-without-bom-hint-charset.sub.htmlPass1 / 1
orb/tentative/status.sub.any.jsError7 / 12NOT IMPLEMENTEDOpaque Response Blocking (ORB) of no-cors responses
orb/tentative/status.sub.htmlPass1 / 1
orb/tentative/unknown-mime-type.sub.any.jsPass12 / 12
security/dangling-markup/dangling-markup-mitigation-data-url.tentative.sub.htmlFail8 / 14NOT IMPLEMENTEDthe dangling markup mitigation (URLs containing both \n and < are not blocked)
security/dangling-markup/dangling-markup-mitigation.tentative.htmlFail22 / 31NOT IMPLEMENTEDthe dangling markup mitigation (URLs containing both \n and < are not blocked)
security/dangling-markup/dangling-markup-mitigation.tentative.https.htmlDisabled–FLAKYthe dangling markup mitigation is not implemented: the requests of the URLs that contain a newline and < are not blocked, so the service worker of the test records them too, and the test reads the recorded requests as soon as there are as many as its resources (11): depending on the timing, the requests of the meta refresh and of the iframe are not recorded yet (ERROR) or they are (PASS)
security/embedded-credentials.tentative.sub.htmlFail2 / 6NOT IMPLEMENTEDtreating subresource and frame URLs with embedded credentials (user:pass@) as network errors

Reftests

TestResultVariantsKindDescription
corb/img-html-correctly-labeled.sub.htmlPass1 / 1
corb/img-png-mislabeled-as-html-nosniff.tentative.sub.htmlFail0 / 1NOT IMPLEMENTEDopaque response blocking (ORB) of no-cors responses: the cross-origin PNG served as text/html with X-Content-Type-Options: nosniff is rendered by the img; Safari fails too
corb/img-png-mislabeled-as-html.sub.htmlPass1 / 1
corb/img-svg-doctype-html-mimetype-empty.sub.htmlPass1 / 1
corb/img-svg-doctype-html-mimetype-svg.sub.htmlPass1 / 1
corb/img-svg-labeled-as-dash.sub.htmlPass1 / 1
corb/img-svg-labeled-as-svg-xml.sub.htmlPass1 / 1
corb/img-svg-xml-decl.sub.htmlPass1 / 1
http-cache/basic-auth-cache-test.htmlTimeout0 / 1BUGthe page never removes the reftest-wait class of its root element: the load event of one of the images (requested with the credentials of the URL, then without credentials, which must reuse the authentication entry) is not fired; not analyzed further (securedimage.py is emulated by the test server)
orb/tentative/img-png-mislabeled-as-html.sub.htmlPass1 / 1
orb/tentative/img-png-unlabeled.sub.htmlPass1 / 1