api/abort/cache.https.any.js | Pass | 6 / 6 | | |
api/abort/destroyed-context.html | Pass | 1 / 1 | | |
api/abort/general.any.js | Pass | 183 / 183 | | |
api/abort/keepalive.html | Pass | 2 / 2 | | |
api/abort/request.any.js | Pass | 54 / 54 | | |
api/abort/serviceworker-intercepted.https.html | Timeout | 10 / 12 | TEST BUG | the 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.js | Pass | 12 / 12 | | |
api/basic/block-mime-as-script.html | Pass | 22 / 22 | | |
api/basic/conditional-get.any.js | Pass | 3 / 3 | | |
api/basic/error-after-response.any.js | Pass | 6 / 6 | | |
api/basic/fetch-in-popup-from-iframe.html | Pass | 1 / 1 | | |
api/basic/gc.any.js | Pass | 18 / 18 | | |
api/basic/header-value-combining.any.js | Pass | 18 / 18 | | |
api/basic/header-value-null-byte.any.js | Pass | 3 / 3 | | |
api/basic/historical.any.js | Pass | 9 / 9 | | |
api/basic/http-response-code.any.js | Fail | 0 / 3 | TEST RUNNER | fetch/connection-pool/resources/network-partition-key.py is not emulated (404 instead of 425) |
api/basic/integrity.sub.any.js | Pass | 54 / 54 | | |
api/basic/keepalive.any.js | Pass | 14 / 14 | | |
api/basic/mediasource.window.js | Pass | 1 / 1 | | |
api/basic/mode-no-cors.sub.any.js | Pass | 8 / 8 | | |
api/basic/mode-same-origin.any.js | Pass | 16 / 16 | | |
api/basic/referrer.any.js | Pass | 12 / 12 | | |
api/basic/request-forbidden-headers.any.js | Pass | 288 / 288 | | |
api/basic/request-head.any.js | Pass | 3 / 3 | | |
api/basic/request-headers-case.any.js | Pass | 6 / 6 | | |
api/basic/request-headers-nonascii.any.js | Pass | 3 / 3 | | |
api/basic/request-headers.any.js | Pass | 75 / 75 | | |
api/basic/request-referrer-redirected-worker.html | Pass | 2 / 2 | | |
api/basic/request-referrer.any.js | Pass | 6 / 6 | | |
api/basic/request-upload-421.any.js | Fail | 0 / 3 | TEST RUNNER | fetch/connection-pool/resources/network-partition-key.py is not emulated (404 instead of 421) |
api/basic/request-upload.any.js | Pass | 54 / 54 | | |
api/basic/request-upload.h2.any.js | Timeout | 9 / 36 | NOT IMPLEMENTED, TEST RUNNER | streaming 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.js | Pass | 33 / 33 | | |
api/basic/response-url.sub.any.js | Pass | 8 / 8 | | |
api/basic/scheme-about.any.js | Pass | 21 / 21 | | |
api/basic/scheme-blob.sub.any.js | Pass | 36 / 36 | | |
api/basic/scheme-data.any.js | Pass | 24 / 24 | | |
api/basic/scheme-others.sub.any.js | Pass | 48 / 48 | | |
api/basic/split-byte-order-mark.any.js | Fail | 0 / 10 | TEST RUNNER | xhr/resources/content-in-chunks.py is not emulated (404) |
api/basic/status.h2.any.js | Pass | 14 / 14 | | |
api/basic/stream-response.any.js | Pass | 6 / 6 | | |
api/basic/stream-safe-creation.any.js | Pass | 189 / 189 | | |
api/basic/text-utf8.any.js | Pass | 90 / 90 | | |
api/basic/url-parsing.sub.html | Pass | 9 / 9 | | |
api/body/formdata.any.js | Pass | 6 / 6 | | |
api/body/mime-type.any.js | Pass | 40 / 40 | | |
api/body/textstream.any.js | Pass | 42 / 42 | | |
api/cors/cors-basic.any.js | Pass | 30 / 30 | | |
api/cors/cors-cookies-redirect.any.js | Pass | 8 / 8 | | |
api/cors/cors-cookies.any.js | Pass | 12 / 12 | | |
api/cors/cors-expose-star.sub.any.js | Pass | 6 / 6 | | |
api/cors/cors-filtering.sub.any.js | Pass | 38 / 38 | | |
api/cors/cors-keepalive.any.js | Pass | 95 / 95 | | |
api/cors/cors-multiple-origins.sub.any.js | Pass | 18 / 18 | | |
api/cors/cors-no-preflight.any.js | Pass | 30 / 30 | | |
api/cors/cors-origin.any.js | Pass | 34 / 34 | | |
api/cors/cors-preflight-cache-tainted.any.js | Pass | 4 / 4 | | |
api/cors/cors-preflight-cache.any.js | Fail | 4 / 6 | TEST RUNNER | the 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.js | Pass | 24 / 24 | | |
api/cors/cors-preflight-redirect.any.js | Pass | 30 / 30 | | |
api/cors/cors-preflight-referrer.any.js | Pass | 24 / 24 | | |
api/cors/cors-preflight-response-validation.any.js | Pass | 4 / 4 | | |
api/cors/cors-preflight-star.any.js | Pass | 68 / 68 | | |
api/cors/cors-preflight-status.any.js | Pass | 54 / 54 | | |
api/cors/cors-preflight-unterminated-body.any.js | Pass | 2 / 2 | | |
api/cors/cors-preflight.any.js | Pass | 44 / 44 | | |
api/cors/cors-redirect-credentials.any.js | Pass | 130 / 130 | | |
api/cors/cors-redirect-preflight.any.js | Pass | 60 / 60 | | |
api/cors/cors-redirect.any.js | Pass | 40 / 40 | | |
api/cors/data-url-iframe.html | Pass | 3 / 3 | | |
api/cors/data-url-shared-worker.html | Pass | 3 / 3 | | |
api/cors/data-url-worker.html | Pass | 3 / 3 | | |
api/cors/sandboxed-iframe.html | Pass | 1 / 1 | | |
api/crashtests/huge-fetch.any.js | Disabled | – | TEST RUNNER | the crash tests (crashtests directories and -crash. files) are not run by the test discovery |
api/credentials/authentication-basic.any.js | Pass | 12 / 12 | | |
api/credentials/authentication-redirection.any.js | Pass | 9 / 9 | | |
api/credentials/cookies.any.js | Pass | 21 / 21 | | |
api/headers/header-setcookie.any.js | Pass | 72 / 72 | | |
api/headers/header-values-last-event-id.any.js | Fail | 0 / 3 | TEST RUNNER | the handler of the WPT server that echoes the request headers is not emulated (404) |
api/headers/header-values-normalize.any.js | Pass | 124 / 124 | | |
api/headers/header-values.any.js | Pass | 16 / 16 | | |
api/headers/headers-basic.any.js | Pass | 69 / 69 | | |
api/headers/headers-casing.any.js | Pass | 12 / 12 | | |
api/headers/headers-combine.any.js | Pass | 18 / 18 | | |
api/headers/headers-errors.any.js | Pass | 54 / 54 | | |
api/headers/headers-forbidden-override.any.js | Pass | 270 / 270 | | |
api/headers/headers-no-cors.any.js | Pass | 81 / 81 | | |
api/headers/headers-normalize.any.js | Pass | 9 / 9 | | |
api/headers/headers-record.any.js | Pass | 39 / 39 | | |
api/headers/headers-structure.any.js | Pass | 24 / 24 | | |
api/idlharness.https.any.js | Pass | 477 / 477 | | |
api/policies/csp-blocked-worker.html | Pass | 1 / 1 | | |
api/policies/csp-blocked.html | Pass | 1 / 1 | | |
api/policies/referrer-no-referrer-service-worker.https.html | Pass | 2 / 2 | | |
api/policies/referrer-no-referrer-worker.html | Pass | 1 / 1 | | |
api/policies/referrer-no-referrer.html | Pass | 1 / 1 | | |
api/policies/referrer-origin-service-worker.https.html | Pass | 3 / 3 | | |
api/policies/referrer-origin-when-cross-origin-service-worker.https.html | Fail | 1 / 2 | TEST BUG | the 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.html | Pass | 1 / 1 | | |
api/policies/referrer-origin-when-cross-origin.html | Pass | 1 / 1 | | |
api/policies/referrer-origin-worker.html | Pass | 2 / 2 | | |
api/policies/referrer-origin.html | Pass | 2 / 2 | | |
api/policies/referrer-unsafe-url-service-worker.https.html | Pass | 2 / 2 | | |
api/policies/referrer-unsafe-url-worker.html | Pass | 1 / 1 | | |
api/policies/referrer-unsafe-url.html | Pass | 1 / 1 | | |
api/redirect/redirect-back-to-original-origin.any.js | Pass | 6 / 6 | | |
api/redirect/redirect-count.any.js | Pass | 30 / 30 | | |
api/redirect/redirect-empty-location.any.js | Pass | 6 / 6 | | |
api/redirect/redirect-keepalive.any.js | Pass | 12 / 12 | | |
api/redirect/redirect-keepalive.https.any.js | Pass | 2 / 2 | | |
api/redirect/redirect-location.any.js | Pass | 165 / 165 | | |
api/redirect/redirect-method.any.js | Pass | 45 / 45 | | |
api/redirect/redirect-mode.any.js | Pass | 122 / 122 | | |
api/redirect/redirect-origin.any.js | Fail | 76 / 80 | TEST BUG | the 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.js | Pass | 256 / 256 | | |
api/redirect/redirect-referrer.any.js | Pass | 64 / 64 | | |
api/redirect/redirect-schemes.any.js | Pass | 18 / 18 | | |
api/redirect/redirect-to-dataurl.any.js | Pass | 15 / 15 | | |
api/redirect/redirect-upload.h2.any.js | Pass | 15 / 15 | | |
api/request/destination/fetch-destination-frame.https.html | Pass | 2 / 2 | | |
api/request/destination/fetch-destination-iframe.https.html | Pass | 2 / 2 | | |
api/request/destination/fetch-destination-no-load-event.https.html | Pass | 9 / 9 | | |
api/request/destination/fetch-destination-prefetch.https.html | Pass | 2 / 2 | | |
api/request/destination/fetch-destination-worker.https.html | Pass | 3 / 3 | | |
api/request/destination/fetch-destination.https.html | Timeout | 17 / 30 | TEST BUG, NOT IMPLEMENTED | audioWorklet.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.js | Pass | 18 / 18 | | |
api/request/multi-globals/construct-in-detached-frame.window.js | Pass | 1 / 1 | | |
api/request/multi-globals/url-parsing.html | Pass | 1 / 1 | | |
api/request/request-bad-port.any.js | Fail | 249 / 252 | TEST RUNNER | the proxy of the WPT server is not emulated (the request fails) |
api/request/request-cache-default-conditional.any.js | Pass | 120 / 120 | | |
api/request/request-cache-default.any.js | Pass | 24 / 24 | | |
api/request/request-cache-force-cache.any.js | Pass | 48 / 48 | | |
api/request/request-cache-no-cache.any.js | Pass | 12 / 12 | | |
api/request/request-cache-no-store.any.js | Pass | 24 / 24 | | |
api/request/request-cache-only-if-cached.any.js | Pass | 42 / 42 | | |
api/request/request-cache-reload.any.js | Pass | 36 / 36 | | |
api/request/request-clone-readable-stream-body.any.js | Pass | 3 / 3 | | |
api/request/request-clone.sub.html | Pass | 2 / 2 | | |
api/request/request-constructor-init-body-override.any.js | Pass | 4 / 4 | | |
api/request/request-consume-empty.any.js | Fail | 39 / 42 | TEST BUG | the 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.js | Pass | 135 / 135 | | |
api/request/request-disturbed.any.js | Pass | 27 / 27 | | |
api/request/request-error.any.js | Pass | 66 / 66 | | |
api/request/request-headers.any.js | Pass | 183 / 183 | | |
api/request/request-init-001.sub.html | Pass | 53 / 53 | | |
api/request/request-init-002.any.js | Pass | 24 / 24 | | |
api/request/request-init-003.sub.html | Pass | 4 / 4 | | |
api/request/request-init-contenttype.any.js | Pass | 36 / 36 | | |
api/request/request-init-priority.any.js | Pass | 16 / 16 | | |
api/request/request-init-stream.any.js | Pass | 69 / 69 | | |
api/request/request-keepalive-quota.html | Pass | 6 / 6 | | |
api/request/request-keepalive.any.js | Pass | 6 / 6 | | |
api/request/request-reset-attributes.https.html | Pass | 3 / 3 | | |
api/request/request-structure.any.js | Pass | 72 / 72 | | |
api/request/url-encoding.html | Pass | 2 / 2 | | |
api/response/json.any.js | Pass | 4 / 4 | | |
api/response/multi-globals/url-parsing.html | Pass | 1 / 1 | | |
api/response/response-arraybuffer-realm.window.js | Pass | 1 / 1 | | |
api/response/response-blob-realm.any.js | Pass | 1 / 1 | | |
api/response/response-body-read-task-handling.html | Pass | 2 / 2 | | |
api/response/response-body-stashed-chunk.html | Pass | 1 / 1 | | |
api/response/response-cancel-stream.any.js | Pass | 21 / 21 | | |
api/response/response-clone-iframe.window.js | Pass | 1 / 1 | | |
api/response/response-clone.any.js | Pass | 63 / 63 | | |
api/response/response-consume-empty.any.js | Fail | 39 / 42 | TEST BUG | the 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.js | Pass | 45 / 45 | | |
api/response/response-consume.html | Fail | 38 / 40 | TEST BUG | from 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.js | Pass | 42 / 42 | | |
api/response/response-error.any.js | Pass | 30 / 30 | | |
api/response/response-form-data.html | Pass | 14 / 14 | | |
api/response/response-from-stream.any.js | Pass | 9 / 9 | | |
api/response/response-headers-guard.any.js | Pass | 3 / 3 | | |
api/response/response-init-001.any.js | Pass | 27 / 27 | | |
api/response/response-init-002.any.js | Pass | 24 / 24 | | |
api/response/response-init-contenttype.any.js | Pass | 36 / 36 | | |
api/response/response-static-error.any.js | Pass | 6 / 6 | | |
api/response/response-static-json.any.js | Pass | 48 / 48 | | |
api/response/response-static-redirect.any.js | Pass | 33 / 33 | | |
api/response/response-stream-bad-chunk.any.js | Pass | 18 / 18 | | |
api/response/response-stream-disturbed-1.any.js | Pass | 36 / 36 | | |
api/response/response-stream-disturbed-2.any.js | Pass | 36 / 36 | | |
api/response/response-stream-disturbed-3.any.js | Pass | 36 / 36 | | |
api/response/response-stream-disturbed-4.any.js | Pass | 36 / 36 | | |
api/response/response-stream-disturbed-5.any.js | Pass | 36 / 36 | | |
api/response/response-stream-disturbed-6.any.js | Pass | 15 / 15 | | |
api/response/response-stream-disturbed-by-pipe.any.js | Pass | 6 / 6 | | |
api/response/response-stream-with-broken-then.any.js | Pass | 18 / 18 | | |
connection-pool/network-partition-key.html | Timeout | 0 / 9 | TEST RUNNER | fetch/connection-pool/resources/network-partition-key.py is not emulated (connection pool partitioning cannot be observed) |
content-encoding/br/bad-br-body.https.any.js | Fail | 0 / 6 | TEST RUNNER | bad-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.js | Pass | 6 / 6 | | |
content-encoding/br/br-body.https.any.js | Pass | 6 / 6 | | |
content-encoding/br/br-navigation.https.window.js | Pass | 1 / 1 | | |
content-encoding/gzip/bad-gzip-body.any.js | Fail | 0 / 21 | TEST RUNNER | bad-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.js | Pass | 6 / 6 | | |
content-encoding/gzip/gzip-body.any.js | Pass | 6 / 6 | | |
content-encoding/gzip/gzip-navigation.https.window.js | Pass | 1 / 1 | | |
content-encoding/zstd/bad-zstd-body.https.any.js | Fail | 0 / 21 | TEST RUNNER | bad-zstd-body.py is not emulated (404), and the WPT loader does not decode zstd |
content-encoding/zstd/big-zstd-body.https.any.js | Fail | 0 / 6 | TEST RUNNER | the 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.js | Fail | 0 / 6 | TEST RUNNER | the 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.js | Fail | 0 / 1 | TEST RUNNER | the 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.js | Pass | 4 / 4 | | |
content-length/content-length.html | Fail | 0 / 1 | TEST RUNNER | the Content-Length of the .headers file does not truncate the served body (an HTTP connection would) |
content-length/parsing.window.js | Fail | 1 / 36 | TEST RUNNER | fetch/content-length/resources/content-length.py is not emulated (404) |
content-length/too-long.window.js | Fail | 0 / 1 | TEST RUNNER | fetch/content-length/resources/content-length.py is not emulated (404) |
content-type/multipart-malformed.any.js | Pass | 2 / 2 | | |
content-type/multipart.window.js | Pass | 1 / 1 | | |
content-type/response.window.js | Fail | 120 / 121 | TEST BUG | the 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.js | Pass | 31 / 31 | | |
corb/script-html-js-polyglot.sub.html | Pass | 2 / 2 | | |
corb/script-html-via-cross-origin-blob-url.sub.html | Pass | 1 / 1 | | |
corb/script-js-mislabeled-as-html-nosniff.sub.html | Pass | 1 / 1 | | |
corb/script-js-mislabeled-as-html.sub.html | Pass | 1 / 1 | | |
corb/style-css-mislabeled-as-html-nosniff.sub.html | Pass | 1 / 1 | | |
corb/style-css-mislabeled-as-html.sub.html | Pass | 1 / 1 | | |
corb/style-css-with-json-parser-breaker.sub.html | Pass | 1 / 1 | | |
corb/style-html-correctly-labeled.sub.html | Pass | 1 / 1 | | |
cross-origin-resource-policy/fetch-in-iframe.html | Pass | 5 / 5 | | |
cross-origin-resource-policy/fetch.any.js | Fail | 33 / 36 | TEST BUG | the 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.js | Pass | 27 / 27 | | |
cross-origin-resource-policy/iframe-loads.html | Pass | 1 / 1 | | |
cross-origin-resource-policy/image-loads.html | Pass | 6 / 6 | | |
cross-origin-resource-policy/scheme-restriction.any.js | Fail | 0 / 2 | TEST BUG | the 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.js | Fail | 0 / 1 | TEST BUG | the 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.html | Pass | 6 / 6 | | |
cross-origin-resource-policy/syntax.any.js | Pass | 14 / 14 | | |
data-urls/base64.any.js | Pass | 243 / 243 | | |
data-urls/navigate.window.js | Pass | 7 / 7 | | |
data-urls/processing.any.js | Pass | 219 / 219 | | |
fetch-later/activate-after.https.window.js | Pass | 2 / 2 | | |
fetch-later/basic.https.window.js | Pass | 23 / 23 | | |
fetch-later/basic.https.worker.js | Pass | 1 / 1 | | |
fetch-later/headers/header-referrer-no-referrer-when-downgrade.https.html | Pass | 1 / 1 | | |
fetch-later/headers/header-referrer-no-referrer.https.html | Pass | 1 / 1 | | |
fetch-later/headers/header-referrer-origin-when-cross-origin.https.html | Pass | 2 / 2 | | |
fetch-later/headers/header-referrer-origin.https.html | Pass | 1 / 1 | | |
fetch-later/headers/header-referrer-same-origin.https.html | Pass | 2 / 2 | | |
fetch-later/headers/header-referrer-strict-origin-when-cross-origin.https.html | Pass | 1 / 1 | | |
fetch-later/headers/header-referrer-strict-origin.https.html | Pass | 1 / 1 | | |
fetch-later/headers/header-referrer-unsafe-url.https.html | Pass | 1 / 1 | | |
fetch-later/iframe.https.window.js | Pass | 1 / 1 | | |
fetch-later/new-window.https.window.js | Pass | 12 / 12 | | |
fetch-later/non-secure.window.js | Pass | 1 / 1 | | |
fetch-later/permissions-policy/deferred-fetch-allowed-by-permissions-policy-attribute-redirect.https.window.js | Pass | 2 / 2 | | |
fetch-later/permissions-policy/deferred-fetch-allowed-by-permissions-policy-attribute.https.window.js | Pass | 2 / 2 | | |
fetch-later/permissions-policy/deferred-fetch-allowed-by-permissions-policy.https.window.js | Pass | 4 / 4 | | |
fetch-later/permissions-policy/deferred-fetch-default-permissions-policy.https.window.js | Pass | 3 / 3 | | |
fetch-later/permissions-policy/deferred-fetch-supported-by-permissions-policy.window.js | Pass | 1 / 1 | | |
fetch-later/policies/csp-allowed.https.window.js | Pass | 1 / 1 | | |
fetch-later/policies/csp-blocked.https.window.js | Pass | 1 / 1 | | |
fetch-later/policies/csp-redirect-to-blocked.https.window.js | Pass | 1 / 1 | | |
fetch-later/quota/accumulated-oversized-payload.https.window.js | Pass | 1 / 1 | | |
fetch-later/quota/cross-origin-iframe/accumulated-oversized-payload.https.window.js | Pass | 1 / 1 | | |
fetch-later/quota/cross-origin-iframe/empty-payload.https.window.js | Pass | 6 / 6 | | |
fetch-later/quota/cross-origin-iframe/max-payload.https.window.js | Pass | 4 / 4 | | |
fetch-later/quota/cross-origin-iframe/multiple-iframes.https.window.js | Pass | 1 / 1 | | |
fetch-later/quota/cross-origin-iframe/oversized-payload.https.window.js | Pass | 6 / 6 | | |
fetch-later/quota/cross-origin-iframe/sandboxed-iframe.https.window.js | Pass | 1 / 1 | | |
fetch-later/quota/cross-origin-iframe/small-payload.https.window.js | Pass | 6 / 6 | | |
fetch-later/quota/empty-payload.https.window.js | Pass | 9 / 9 | | |
fetch-later/quota/max-payload.https.window.js | Pass | 2 / 2 | | |
fetch-later/quota/multiple-origins.https.window.js | Pass | 6 / 6 | | |
fetch-later/quota/oversized-payload.https.window.js | Pass | 6 / 6 | | |
fetch-later/quota/same-origin-iframe/accumulated-oversized-payload.https.window.js | Pass | 1 / 1 | | |
fetch-later/quota/same-origin-iframe/empty-payload.https.window.js | Pass | 6 / 6 | | |
fetch-later/quota/same-origin-iframe/max-payload.https.window.js | Pass | 2 / 2 | | |
fetch-later/quota/same-origin-iframe/multiple-iframes.https.window.js | Fail | 0 / 1 | TEST BUG | the 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.js | Pass | 6 / 6 | | |
fetch-later/quota/same-origin-iframe/sandboxed-iframe.https.window.js | Pass | 1 / 1 | | |
fetch-later/quota/same-origin-iframe/small-payload.https.window.js | Pass | 6 / 6 | | |
fetch-later/quota/small-payload.https.window.js | Pass | 6 / 6 | | |
fetch-later/send-on-deactivate-with-background-sync.https.window.js | Pass | 3 / 3 | | |
fetch-later/send-on-deactivate.https.window.js | Pass | 5 / 5 | | |
fetch-later/send-on-discard/not-send-after-abort.https.window.js | Pass | 1 / 1 | | |
fetch-later/send-on-discard/send-multiple-with-activate-after.https.window.js | Pass | 1 / 1 | | |
fetch-later/send-on-discard/send-multiple.https.window.js | Pass | 1 / 1 | | |
h1-parsing/lone-cr.window.js | Fail | 0 / 10 | TEST RUNNER | fetch/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.js | Pass | 4 / 4 | | |
h1-parsing/status-code.window.js | Fail | 0 / 16 | TEST RUNNER | fetch/h1-parsing/resources/status-code.py is not emulated (404) |
http-cache/304-update.any.js | Pass | 15 / 15 | | |
http-cache/cache-mode.any.js | Pass | 15 / 15 | | |
http-cache/cc-request.any.js | Pass | 36 / 36 | | |
http-cache/freshness.any.js | Pass | 51 / 51 | | |
http-cache/heuristic.any.js | Pass | 51 / 51 | | |
http-cache/invalidate.any.js | Pass | 45 / 45 | | |
http-cache/partial.any.js | Fail | 0 / 27 | NOT IMPLEMENTED | the 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.js | Fail | 0 / 6 | TEST BUG | the 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.html | Pass | 2 / 2 | | |
http-cache/split-cache.html | Pass | 4 / 4 | | |
http-cache/status.any.js | Pass | 78 / 78 | | |
http-cache/vary.any.js | Pass | 42 / 42 | | |
images/canvas-remote-read-remote-image-redirect.html | Pass | 1 / 1 | | |
metadata/audio-worklet.https.html | Pass | 5 / 5 | | |
metadata/fetch-preflight.https.sub.any.js | Pass | 30 / 30 | | |
metadata/fetch.https.sub.any.js | Pass | 90 / 90 | | |
metadata/generated/audioworklet.https.sub.html | Pass | 19 / 19 | | |
metadata/generated/element-a.https.sub.html | Fail | 22 / 23 | TEST BUG | the 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.html | Pass | 18 / 18 | | |
metadata/generated/element-area.https.sub.html | Fail | 22 / 23 | TEST BUG | the 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.html | Pass | 18 / 18 | | |
metadata/generated/element-audio.https.sub.html | Fail | 21 / 23 | TEST BUG, NOT IMPLEMENTED | the 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.html | Pass | 18 / 18 | | |
metadata/generated/element-embed.https.sub.html | Fail | 17 / 19 | TEST BUG, NOT IMPLEMENTED | expects 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.html | Pass | 18 / 18 | | |
metadata/generated/element-frame.https.sub.html | Fail | 19 / 20 | NOT IMPLEMENTED | the Sec-Fetch-Storage-Access request header (Storage Access API) |
metadata/generated/element-frame.sub.html | Pass | 18 / 18 | | |
metadata/generated/element-iframe.https.sub.html | Fail | 19 / 20 | NOT IMPLEMENTED | the Sec-Fetch-Storage-Access request header (Storage Access API) |
metadata/generated/element-iframe.sub.html | Pass | 18 / 18 | | |
metadata/generated/element-img-environment-change.https.sub.html | Fail | 21 / 22 | REQUIRES(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.html | Pass | 18 / 18 | | |
metadata/generated/element-img.https.sub.html | Fail | 42 / 45 | TEST BUG, NOT IMPLEMENTED | the 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.html | Pass | 36 / 36 | | |
metadata/generated/element-input-image.https.sub.html | Fail | 18 / 20 | TEST BUG, NOT IMPLEMENTED | the 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.html | Pass | 18 / 18 | | |
metadata/generated/element-link-icon.https.sub.html | Timeout | 0 / 22 | NOT IMPLEMENTED | fetching the icons of <link rel=icon> |
metadata/generated/element-link-icon.sub.html | Timeout | 0 / 18 | NOT IMPLEMENTED | fetching the icons of <link rel=icon> |
metadata/generated/element-link-prefetch.https.optional.sub.html | Fail | 21 / 34 | TEST BUG, NOT IMPLEMENTED | the 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.html | Pass | 18 / 18 | | |
metadata/generated/element-meta-refresh.https.optional.sub.html | Pass | 20 / 20 | | |
metadata/generated/element-meta-refresh.optional.sub.html | Pass | 18 / 18 | | |
metadata/generated/element-picture.https.sub.html | Fail | 63 / 66 | NOT IMPLEMENTED | the Sec-Fetch-Storage-Access request header (Storage Access API) |
metadata/generated/element-picture.sub.html | Pass | 54 / 54 | | |
metadata/generated/element-script.https.sub.html | Fail | 36 / 37 | NOT IMPLEMENTED | the Sec-Fetch-Storage-Access request header (Storage Access API) |
metadata/generated/element-script.sub.html | Pass | 36 / 36 | | |
metadata/generated/element-video-poster.https.sub.html | Timeout | 14 / 20 | REQUIRES(layout) | the test polls until the video's clientWidth is the poster width (123) |
metadata/generated/element-video-poster.sub.html | Pass | 18 / 18 | | |
metadata/generated/element-video.https.sub.html | Fail | 21 / 23 | TEST BUG, NOT IMPLEMENTED | the 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.html | Pass | 18 / 18 | | |
metadata/generated/fetch-via-serviceworker.https.sub.html | Fail | 42 / 44 | NOT IMPLEMENTED | the Sec-Fetch-Storage-Access header |
metadata/generated/fetch.https.sub.html | Fail | 21 / 22 | NOT IMPLEMENTED | the Sec-Fetch-Storage-Access request header (Storage Access API) |
metadata/generated/fetch.sub.html | Pass | 18 / 18 | | |
metadata/generated/form-submission.https.sub.html | Pass | 42 / 42 | | |
metadata/generated/form-submission.sub.html | Pass | 36 / 36 | | |
metadata/generated/header-link.https.sub.html | Fail | 0 / 37 | NOT IMPLEMENTED | the Link response header (rel=preload, prefetch, icon, stylesheet... are not fetched) |
metadata/generated/header-link.sub.html | Fail | 0 / 36 | NOT IMPLEMENTED | the Link response header (rel=preload, prefetch, icon, stylesheet... are not fetched) |
metadata/generated/header-refresh.https.optional.sub.html | Pass | 20 / 20 | | |
metadata/generated/header-refresh.optional.sub.html | Pass | 18 / 18 | | |
metadata/generated/script-json-module-import-static.https.sub.html | Pass | 17 / 17 | | |
metadata/generated/script-json-module-import-static.sub.html | Pass | 18 / 18 | | |
metadata/generated/script-module-import-dynamic.https.sub.html | Pass | 19 / 19 | | |
metadata/generated/script-module-import-dynamic.sub.html | Pass | 18 / 18 | | |
metadata/generated/script-module-import-static.https.sub.html | Pass | 19 / 19 | | |
metadata/generated/script-module-import-static.sub.html | Pass | 18 / 18 | | |
metadata/generated/script-text-module-import-static.https.sub.html | Pass | 17 / 17 | | |
metadata/generated/script-text-module-import-static.sub.html | Pass | 18 / 18 | | |
metadata/generated/serviceworker.https.sub.html | Pass | 10 / 10 | | |
metadata/generated/svg-image.https.sub.html | Fail | 20 / 23 | TEST BUG, NOT IMPLEMENTED | the 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.html | Pass | 18 / 18 | | |
metadata/generated/window-history.https.sub.html | Pass | 16 / 16 | | |
metadata/generated/window-history.sub.html | Pass | 30 / 30 | | |
metadata/generated/window-location.https.sub.html | Pass | 84 / 84 | | |
metadata/generated/window-location.sub.html | Pass | 72 / 72 | | |
metadata/generated/worker-dedicated-constructor.https.sub.html | Pass | 6 / 6 | | |
metadata/generated/worker-dedicated-constructor.sub.html | Pass | 5 / 5 | | |
metadata/generated/worker-dedicated-importscripts.https.sub.html | Fail | 18 / 19 | NOT IMPLEMENTED | the Sec-Fetch-Storage-Access request header (Storage Access API) |
metadata/generated/worker-dedicated-importscripts.sub.html | Pass | 18 / 18 | | |
metadata/navigation.https.sub.html | Pass | 5 / 5 | | |
metadata/object.https.sub.html | Pass | 15 / 15 | | |
metadata/paint-worklet.https.html | Pass | 5 / 5 | | |
metadata/preload.https.sub.html | Pass | 91 / 91 | | |
metadata/redirect/multiple-redirect-https-downgrade-upgrade.sub.html | Pass | 26 / 26 | | |
metadata/redirect/redirect-http-upgrade.sub.html | Pass | 26 / 26 | | |
metadata/redirect/redirect-https-downgrade.sub.html | Pass | 26 / 26 | | |
metadata/report.https.sub.html | Pass | 15 / 15 | | |
metadata/serviceworker-accessors.https.sub.html | Pass | 5 / 5 | | |
metadata/sharedworker.https.sub.html | Pass | 5 / 5 | | |
metadata/style.https.sub.html | Pass | 20 / 20 | | |
metadata/text.https.html | Pass | 5 / 5 | | |
metadata/track.https.sub.html | Pass | 20 / 20 | | |
metadata/trailing-dot.https.sub.any.js | Fail | 0 / 9 | TEST RUNNER | the hosts spelled with a trailing dot (web-platform.test.) are not served |
metadata/unload.https.sub.html | Pass | 5 / 5 | | |
metadata/window-open.https.sub.html | Pass | 45 / 45 | | |
metadata/worker.https.sub.html | Pass | 5 / 5 | | |
metadata/zz-debug.https.sub.html | Pass | 1 / 1 | | |
nosniff/image.html | Pass | 11 / 11 | | |
nosniff/importscripts.html | Pass | 1 / 1 | | |
nosniff/parsing-nosniff.window.js | Fail | 6 / 16 | TEST RUNNER | fetch/nosniff/resources/nosniff.py is not emulated (404), so the scripts fail to load |
nosniff/script.html | Pass | 10 / 10 | | |
nosniff/stylesheet.html | Pass | 18 / 18 | | |
nosniff/worker.html | Pass | 9 / 9 | | |
origin/assorted.window.js | Error | 0 / 43 | TEST RUNNER | fetch/origin/resources/redirect-and-stash.py is not emulated (the stash returns the 404 page instead of JSON) |
range/blob.any.js | Pass | 70 / 70 | | |
range/cache-revalidate-construct-range-response.html | Fail | 0 / 1 | NOT IMPLEMENTED, TEST RUNNER | the partial responses (206) are not stored by the HTTP cache; video-with-aged-proxy-cache.py is not emulated |
range/data.any.js | Pass | 4 / 4 | | |
range/general.any.js | Fail | 15 / 21 | TEST RUNNER | fetch/range/resources/stash-take.py and long-wav.py are not emulated |
range/general.window.js | Timeout | 0 / 2 | TEST RUNNER | fetch/range/resources/partial-script.py and stash-take.py are not emulated |
range/non-matching-range-response.html | Pass | 3 / 3 | | |
range/sw-416.https.window.js | Fail | 0 / 2 | NOT IMPLEMENTED | the 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.js | Pass | 2 / 2 | | |
range/sw-opaque.https.window.js | Pass | 1 / 1 | | |
range/sw.https.window.js | Fail | 6 / 10 | NOT IMPLEMENTED, TEST RUNNER | the 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.html | Fail | 0 / 1 | TEST RUNNER | fetch/redirect-navigate/302-found-post-handler.py is not emulated (the frame shows a 404 page of another origin) |
redirect-navigate/preserve-fragment.html | Pass | 120 / 120 | | |
redirects/data.window.js | Pass | 3 / 3 | | |
redirects/subresource-fragments.html | Pass | 4 / 4 | | |
security/1xx-response.any.js | Fail | 2 / 8 | TEST RUNNER | the 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.html | Pass | 1 / 1 | | |
security/dangling-markup/dangling-markup-mitigation-allowed-apis.https.html | Timeout | 0 / 0 | REQUIRES(workers) | the requests are recorded by a service worker (navigator.serviceWorker) |
security/dangling-markup/media.html | Fail | 2 / 4 | NOT IMPLEMENTED | the 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.html | Fail | 0 / 6 | NOT IMPLEMENTED | the dangling markup mitigation (a form action/navigation URL containing \n and < is not blocked) |
security/dangling-markup/textarea.html | Fail | 0 / 3 | NOT IMPLEMENTED | the dangling markup mitigation (a form action/navigation URL containing \n and < is not blocked) |
security/redirect-to-url-with-credentials.https.html | Pass | 7 / 7 | | |
security/stylesheet-cssrules-serviceworker-passthrough-redirect.https.html | Pass | 1 / 1 | | |
stale-while-revalidate/fetch-sw.https.html | Timeout | 0 / 1 | NOT IMPLEMENTED | the stale-while-revalidate directive of the HTTP cache (a stale response is validated before it is used) |
stale-while-revalidate/fetch.any.js | Timeout | 0 / 3 | NOT IMPLEMENTED, TEST RUNNER | the 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.html | Timeout | 0 / 1 | NOT IMPLEMENTED, TEST RUNNER | the 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.html | Timeout | 0 / 1 | NOT IMPLEMENTED, TEST RUNNER | the 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.html | Timeout | 0 / 1 | NOT IMPLEMENTED, TEST RUNNER | the 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.html | Timeout | 0 / 1 | NOT IMPLEMENTED, TEST RUNNER | the stale-while-revalidate directive of the HTTP cache (a stale response is validated before it is used); the stale-*.py handlers are not emulated |