aboutsummaryrefslogtreecommitdiffstats
path: root/tests/wpt/meta/fetch
diff options
context:
space:
mode:
Diffstat (limited to 'tests/wpt/meta/fetch')
-rw-r--r--tests/wpt/meta/fetch/api/abort/cache.https.any.js.ini21
-rw-r--r--tests/wpt/meta/fetch/api/abort/general.any.js.ini314
-rw-r--r--tests/wpt/meta/fetch/api/abort/request.any.js.ini116
-rw-r--r--tests/wpt/meta/fetch/api/abort/serviceworker-intercepted.https.html.ini33
-rw-r--r--tests/wpt/meta/fetch/api/basic/accept-header.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/basic/conditional-get.any.js.ini15
-rw-r--r--tests/wpt/meta/fetch/api/basic/error-after-response.any.js.ini21
-rw-r--r--tests/wpt/meta/fetch/api/basic/historical.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/basic/http-response-code.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/basic/keepalive.any.js.ini3
-rw-r--r--tests/wpt/meta/fetch/api/basic/keepalive.html.ini4
-rw-r--r--tests/wpt/meta/fetch/api/basic/request-forbidden-headers.any.js.ini267
-rw-r--r--tests/wpt/meta/fetch/api/basic/request-head.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/basic/request-headers-case.any.js.ini21
-rw-r--r--tests/wpt/meta/fetch/api/basic/request-headers-nonascii.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/basic/request-headers.any.js.ini15
-rw-r--r--tests/wpt/meta/fetch/api/basic/request-referrer.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/basic/request-upload.any.js.ini44
-rw-r--r--tests/wpt/meta/fetch/api/basic/request-upload.h2.any.js.ini76
-rw-r--r--tests/wpt/meta/fetch/api/basic/response-null-body.any.js.ini69
-rw-r--r--tests/wpt/meta/fetch/api/basic/scheme-about.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/basic/scheme-blob.sub.any.js.ini5
-rw-r--r--tests/wpt/meta/fetch/api/basic/scheme-data.any.js.ini39
-rw-r--r--tests/wpt/meta/fetch/api/basic/scheme-others.sub.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/basic/status.h2.any.js.ini38
-rw-r--r--tests/wpt/meta/fetch/api/basic/stream-response.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/basic/stream-safe-creation.any.js.ini10
-rw-r--r--tests/wpt/meta/fetch/api/basic/text-utf8.any.js.ini33
-rw-r--r--tests/wpt/meta/fetch/api/body/formdata.any.js.ini14
-rw-r--r--tests/wpt/meta/fetch/api/body/mime-type.any.js.ini82
-rw-r--r--tests/wpt/meta/fetch/api/cors/cors-multiple-origins.sub.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/cors/cors-preflight-redirect.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/credentials/authentication-basic.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/credentials/authentication-redirection.any.js.ini14
-rw-r--r--tests/wpt/meta/fetch/api/credentials/cookies.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/headers/header-values-normalize.any.js.ini243
-rw-r--r--tests/wpt/meta/fetch/api/headers/header-values.any.js.ini18
-rw-r--r--tests/wpt/meta/fetch/api/headers/headers-basic.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/headers/headers-casing.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/headers/headers-combine.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/headers/headers-errors.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/headers/headers-no-cors.any.js.ini51
-rw-r--r--tests/wpt/meta/fetch/api/headers/headers-normalize.any.js.ini11
-rw-r--r--tests/wpt/meta/fetch/api/headers/headers-record.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/headers/headers-structure.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/idlharness.any.js.ini153
-rw-r--r--tests/wpt/meta/fetch/api/redirect/redirect-back-to-original-origin.any.js.ini15
-rw-r--r--tests/wpt/meta/fetch/api/redirect/redirect-count.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/redirect/redirect-empty-location.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/redirect/redirect-keepalive.any.js.ini12
-rw-r--r--tests/wpt/meta/fetch/api/redirect/redirect-location-escape.tentative.any.js.ini33
-rw-r--r--tests/wpt/meta/fetch/api/redirect/redirect-location.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/redirect/redirect-method.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/redirect/redirect-origin.any.js.ini14
-rw-r--r--tests/wpt/meta/fetch/api/redirect/redirect-schemes.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/redirect/redirect-to-dataurl.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/redirect/redirect-upload.h2.any.js.ini10
-rw-r--r--tests/wpt/meta/fetch/api/request/destination/fetch-destination.https.html.ini79
-rw-r--r--tests/wpt/meta/fetch/api/request/forbidden-method.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/request/request-bad-port.any.js.ini137
-rw-r--r--tests/wpt/meta/fetch/api/request/request-cache-default-conditional.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/request/request-cache-default.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/request/request-cache-force-cache.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/request/request-cache-no-cache.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/request/request-cache-no-store.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/request/request-cache-only-if-cached.any.js.ini6
-rw-r--r--tests/wpt/meta/fetch/api/request/request-cache-reload.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/request/request-consume-empty.any.js.ini15
-rw-r--r--tests/wpt/meta/fetch/api/request/request-consume.any.js.ini15
-rw-r--r--tests/wpt/meta/fetch/api/request/request-disturbed.any.js.ini33
-rw-r--r--tests/wpt/meta/fetch/api/request/request-error.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/request/request-headers.any.js.ini21
-rw-r--r--tests/wpt/meta/fetch/api/request/request-init-002.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/request/request-init-contenttype.any.js.ini8
-rw-r--r--tests/wpt/meta/fetch/api/request/request-init-stream.any.js.ini63
-rw-r--r--tests/wpt/meta/fetch/api/request/request-keepalive.any.js.ini21
-rw-r--r--tests/wpt/meta/fetch/api/request/request-structure.any.js.ini27
-rw-r--r--tests/wpt/meta/fetch/api/request/request-structure.html.ini7
-rw-r--r--tests/wpt/meta/fetch/api/response/json.any.js.ini8
-rw-r--r--tests/wpt/meta/fetch/api/response/response-cancel-stream.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/response/response-clone.any.js.ini104
-rw-r--r--tests/wpt/meta/fetch/api/response/response-consume-empty.any.js.ini56
-rw-r--r--tests/wpt/meta/fetch/api/response/response-consume-stream.any.js.ini21
-rw-r--r--tests/wpt/meta/fetch/api/response/response-error-from-stream.any.js.ini10
-rw-r--r--tests/wpt/meta/fetch/api/response/response-error.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/response/response-init-001.any.js.ini15
-rw-r--r--tests/wpt/meta/fetch/api/response/response-init-002.any.js.ini15
-rw-r--r--tests/wpt/meta/fetch/api/response/response-init-contenttype.any.js.ini8
-rw-r--r--tests/wpt/meta/fetch/api/response/response-static-error.any.js.ini15
-rw-r--r--tests/wpt/meta/fetch/api/response/response-static-json.any.js.ini57
-rw-r--r--tests/wpt/meta/fetch/api/response/response-static-redirect.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/response/response-stream-bad-chunk.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/response/response-stream-disturbed-1.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/response/response-stream-disturbed-2.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/response/response-stream-disturbed-3.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/response/response-stream-disturbed-4.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/response/response-stream-disturbed-5.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/response/response-stream-disturbed-6.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/api/response/response-stream-disturbed-by-pipe.any.js.ini21
-rw-r--r--tests/wpt/meta/fetch/api/response/response-stream-with-broken-then.any.js.ini15
-rw-r--r--tests/wpt/meta/fetch/connection-pool/network-partition-key.html.ini28
-rw-r--r--tests/wpt/meta/fetch/content-encoding/bad-gzip-body.any.js.ini33
-rw-r--r--tests/wpt/meta/fetch/content-encoding/gzip-body.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/content-length/api-and-duplicate-headers.any.js.ini15
-rw-r--r--tests/wpt/meta/fetch/content-length/parsing.window.js.ini84
-rw-r--r--tests/wpt/meta/fetch/content-length/too-long.window.js.ini4
-rw-r--r--tests/wpt/meta/fetch/content-type/multipart.window.js.ini3
-rw-r--r--tests/wpt/meta/fetch/content-type/response.window.js.ini162
-rw-r--r--tests/wpt/meta/fetch/content-type/script.window.js.ini57
-rw-r--r--tests/wpt/meta/fetch/corb/response_block.tentative.sub.https.html.ini3
-rw-r--r--tests/wpt/meta/fetch/cors-rfc1918/non-secure-context.window.js.ini4
-rw-r--r--tests/wpt/meta/fetch/data-urls/base64.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/data-urls/processing.any.js.ini296
-rw-r--r--tests/wpt/meta/fetch/h1-parsing/lone-cr.window.js.ini4
-rw-r--r--tests/wpt/meta/fetch/h1-parsing/status-code.window.js.ini22
-rw-r--r--tests/wpt/meta/fetch/http-cache/304-update.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/http-cache/cache-mode.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/http-cache/cc-request.any.js.ini15
-rw-r--r--tests/wpt/meta/fetch/http-cache/credentials.tentative.any.js.ini21
-rw-r--r--tests/wpt/meta/fetch/http-cache/freshness.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/http-cache/heuristic.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/http-cache/invalidate.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/http-cache/partial.any.js.ini15
-rw-r--r--tests/wpt/meta/fetch/http-cache/post-patch.any.js.ini21
-rw-r--r--tests/wpt/meta/fetch/http-cache/split-cache.html.ini7
-rw-r--r--tests/wpt/meta/fetch/http-cache/split-cache.tentative.html.ini13
-rw-r--r--tests/wpt/meta/fetch/http-cache/status.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/http-cache/vary.any.js.ini9
-rw-r--r--tests/wpt/meta/fetch/local-network-access/iframe.tentative.https.window.js.ini36
-rw-r--r--tests/wpt/meta/fetch/metadata/audio-worklet.https.html.ini3
-rw-r--r--tests/wpt/meta/fetch/metadata/embed.https.sub.tentative.html.ini20
-rw-r--r--tests/wpt/meta/fetch/metadata/fetch-preflight.https.sub.any.js.ini21
-rw-r--r--tests/wpt/meta/fetch/metadata/fetch.https.sub.any.js.ini117
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/appcache-manifest.https.sub.html.ini60
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/css-font-face.https.sub.tentative.html.ini51
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/css-font-face.sub.tentative.html.ini45
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/css-images.https.sub.tentative.html.ini268
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/css-images.sub.tentative.html.ini190
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-a.sub.html.ini6
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-area.sub.html.ini46
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-audio.https.sub.html.ini60
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-audio.sub.html.ini6
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-embed.https.sub.html.ini52
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-embed.sub.html.ini46
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-frame.sub.html.ini46
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-iframe.sub.html.ini6
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.https.sub.html.ini61
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini46
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-img.https.sub.html.ini117
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-img.sub.html.ini12
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-input-image.https.sub.html.ini55
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-input-image.sub.html.ini46
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-link-icon.https.sub.html.ini61
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-link-icon.sub.html.ini46
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-link-prefetch.https.optional.sub.html.ini97
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-link-prefetch.optional.sub.html.ini46
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-meta-refresh.https.optional.sub.html.ini55
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-meta-refresh.optional.sub.html.ini46
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-picture.https.sub.html.ini171
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-picture.sub.html.ini18
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-script.https.sub.html.ini102
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-script.sub.html.ini12
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-video-poster.https.sub.html.ini55
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-video-poster.sub.html.ini46
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-video.https.sub.html.ini60
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-video.sub.html.ini6
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/fetch-via-serviceworker.https.sub.html.ini120
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/fetch.https.sub.html.ini57
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/fetch.sub.html.ini6
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/form-submission.sub.html.ini91
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/header-link.https.sub.html.ini99
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/header-link.https.sub.tentative.html.ini3
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/header-link.sub.html.ini90
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/header-refresh.https.optional.sub.html.ini55
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/header-refresh.optional.sub.html.ini46
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/script-module-import-dynamic.https.sub.html.ini48
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/script-module-import-dynamic.sub.html.ini6
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/script-module-import-static.https.sub.html.ini48
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/script-module-import-static.sub.html.ini6
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/serviceworker.https.sub.html.ini30
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/svg-image.https.sub.html.ini64
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/svg-image.sub.html.ini46
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/window-history.https.sub.html.ini37
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/window-history.sub.html.ini73
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/window-location.sub.html.ini24
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/worker-dedicated-constructor.https.sub.html.ini12
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/worker-dedicated-constructor.sub.html.ini24
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/worker-dedicated-importscripts.https.sub.html.ini48
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/worker-dedicated-importscripts.sub.html.ini6
-rw-r--r--tests/wpt/meta/fetch/metadata/paint-worklet.https.html.ini3
-rw-r--r--tests/wpt/meta/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.sub.html.ini46
-rw-r--r--tests/wpt/meta/fetch/metadata/redirect/redirect-http-upgrade.sub.html.ini25
-rw-r--r--tests/wpt/meta/fetch/metadata/redirect/redirect-https-downgrade.sub.html.ini16
-rw-r--r--tests/wpt/meta/fetch/metadata/serviceworker-accessors.https.sub.html.ini4
-rw-r--r--tests/wpt/meta/fetch/metadata/trailing-dot.https.sub.any.js.ini27
-rw-r--r--tests/wpt/meta/fetch/nosniff/parsing-nosniff.window.js.ini9
-rw-r--r--tests/wpt/meta/fetch/nosniff/worker.html.ini3
-rw-r--r--tests/wpt/meta/fetch/orb/tentative/content-range.sub.any.js.ini8
-rw-r--r--tests/wpt/meta/fetch/orb/tentative/img-mime-types-coverage.tentative.sub.html.ini141
-rw-r--r--tests/wpt/meta/fetch/orb/tentative/known-mime-type.sub.any.js.ini20
-rw-r--r--tests/wpt/meta/fetch/orb/tentative/nosniff.sub.any.js.ini20
-rw-r--r--tests/wpt/meta/fetch/orb/tentative/status.sub.any.js.ini14
-rw-r--r--tests/wpt/meta/fetch/origin/assorted.window.js.ini33
-rw-r--r--tests/wpt/meta/fetch/private-network-access/fetch.https.window.js.ini95
-rw-r--r--tests/wpt/meta/fetch/private-network-access/fetch.window.js.ini24
-rw-r--r--tests/wpt/meta/fetch/private-network-access/idlharness.tentative.any.js.ini21
-rw-r--r--tests/wpt/meta/fetch/private-network-access/iframe.tentative.https.window.js.ini36
-rw-r--r--tests/wpt/meta/fetch/private-network-access/iframe.tentative.window.js.ini15
-rw-r--r--tests/wpt/meta/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js.ini138
-rw-r--r--tests/wpt/meta/fetch/private-network-access/nested-worker.https.window.js.ini6
-rw-r--r--tests/wpt/meta/fetch/private-network-access/nested-worker.window.js.ini6
-rw-r--r--tests/wpt/meta/fetch/private-network-access/non-secure-context.window.js.ini36
-rw-r--r--tests/wpt/meta/fetch/private-network-access/preflight-cache.https.window.js.ini9
-rw-r--r--tests/wpt/meta/fetch/private-network-access/redirect.https.window.js.ini21
-rw-r--r--tests/wpt/meta/fetch/private-network-access/service-worker-background-fetch.https.window.js.ini28
-rw-r--r--tests/wpt/meta/fetch/private-network-access/service-worker-fetch.https.window.js.ini43
-rw-r--r--tests/wpt/meta/fetch/private-network-access/service-worker-update.https.window.js.ini16
-rw-r--r--tests/wpt/meta/fetch/private-network-access/service-worker.https.window.js.ini16
-rw-r--r--tests/wpt/meta/fetch/private-network-access/shared-worker-fetch.https.window.js.ini49
-rw-r--r--tests/wpt/meta/fetch/private-network-access/shared-worker-fetch.window.js.ini40
-rw-r--r--tests/wpt/meta/fetch/private-network-access/shared-worker.https.window.js.ini16
-rw-r--r--tests/wpt/meta/fetch/private-network-access/shared-worker.window.js.ini10
-rw-r--r--tests/wpt/meta/fetch/private-network-access/websocket.window.js.ini9
-rw-r--r--tests/wpt/meta/fetch/private-network-access/worker-fetch.https.window.js.ini33
-rw-r--r--tests/wpt/meta/fetch/private-network-access/worker-fetch.window.js.ini3
-rw-r--r--tests/wpt/meta/fetch/private-network-access/worker.https.window.js.ini12
-rw-r--r--tests/wpt/meta/fetch/private-network-access/worker.window.js.ini6
-rw-r--r--tests/wpt/meta/fetch/private-network-access/xhr.https.window.js.ini36
-rw-r--r--tests/wpt/meta/fetch/private-network-access/xhr.window.js.ini3
-rw-r--r--tests/wpt/meta/fetch/range/blob.any.js.ini158
-rw-r--r--tests/wpt/meta/fetch/range/data.any.js.ini14
-rw-r--r--tests/wpt/meta/fetch/range/general.any.js.ini20
-rw-r--r--tests/wpt/meta/fetch/range/sw.https.window.js.ini18
-rw-r--r--tests/wpt/meta/fetch/redirect-navigate/preserve-fragment.html.ini361
-rw-r--r--tests/wpt/meta/fetch/redirects/subresource-fragments.html.ini13
-rw-r--r--tests/wpt/meta/fetch/stale-while-revalidate/fetch.any.js.ini15
-rw-r--r--tests/wpt/meta/fetch/stale-while-revalidate/revalidate-not-blocked-by-csp.html.ini4
-rw-r--r--tests/wpt/meta/fetch/stale-while-revalidate/stale-image.html.ini4
238 files changed, 8854 insertions, 0 deletions
diff --git a/tests/wpt/meta/fetch/api/abort/cache.https.any.js.ini b/tests/wpt/meta/fetch/api/abort/cache.https.any.js.ini
new file mode 100644
index 00000000000..7107d4274e3
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/abort/cache.https.any.js.ini
@@ -0,0 +1,21 @@
+[cache.https.any.worker.html]
+ [Signals are not stored in the cache API, even if they're already aborted]
+ expected: FAIL
+
+ [Signals are not stored in the cache API]
+ expected: FAIL
+
+
+[cache.https.any.serviceworker.html]
+ expected: ERROR
+
+[cache.https.any.html]
+ [Signals are not stored in the cache API, even if they're already aborted]
+ expected: FAIL
+
+ [Signals are not stored in the cache API]
+ expected: FAIL
+
+
+[cache.https.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/abort/general.any.js.ini b/tests/wpt/meta/fetch/api/abort/general.any.js.ini
new file mode 100644
index 00000000000..a15d01c1f53
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/abort/general.any.js.ini
@@ -0,0 +1,314 @@
+[general.any.sharedworker.html]
+ expected: ERROR
+
+[general.any.serviceworker.html]
+ expected: ERROR
+
+[general.any.html]
+ [Aborting rejects with AbortError]
+ expected: FAIL
+
+ [Aborting rejects with AbortError - no-cors]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - RequestInit's window is not null]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Input URL is not valid]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Input URL has credentials]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - RequestInit's mode is navigate]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - RequestInit's referrer is invalid]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - RequestInit's method is invalid]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - RequestInit's method is forbidden]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Bad referrerPolicy init parameter value]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Bad mode init parameter value]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Bad credentials init parameter value]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Bad cache init parameter value]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Bad redirect init parameter value]
+ expected: FAIL
+
+ [Request objects have a signal property]
+ expected: FAIL
+
+ [Signal on request object]
+ expected: FAIL
+
+ [Signal on request object created from request object]
+ expected: FAIL
+
+ [Signal on request object created from request object, with signal on second request]
+ expected: FAIL
+
+ [Signal on request object created from request object, with signal on second request overriding another]
+ expected: FAIL
+
+ [Signal retained after unrelated properties are overridden by fetch]
+ expected: FAIL
+
+ [Signal removed by setting to null]
+ expected: FAIL
+
+ [Already aborted signal rejects immediately]
+ expected: FAIL
+
+ [Request is still 'used' if signal is aborted before fetching]
+ expected: FAIL
+
+ [response.arrayBuffer() rejects if already aborted]
+ expected: FAIL
+
+ [response.blob() rejects if already aborted]
+ expected: FAIL
+
+ [response.formData() rejects if already aborted]
+ expected: FAIL
+
+ [response.json() rejects if already aborted]
+ expected: FAIL
+
+ [response.text() rejects if already aborted]
+ expected: FAIL
+
+ [Call text() twice on aborted response]
+ expected: FAIL
+
+ [Already aborted signal does not make request]
+ expected: FAIL
+
+ [Already aborted signal can be used for many fetches]
+ expected: FAIL
+
+ [Signal can be used to abort other fetches, even if another fetch succeeded before aborting]
+ expected: FAIL
+
+ [Underlying connection is closed when aborting after receiving response]
+ expected: FAIL
+
+ [Underlying connection is closed when aborting after receiving response - no-cors]
+ expected: FAIL
+
+ [Fetch aborted & connection closed when aborted after calling response.arrayBuffer()]
+ expected: FAIL
+
+ [Fetch aborted & connection closed when aborted after calling response.blob()]
+ expected: FAIL
+
+ [Fetch aborted & connection closed when aborted after calling response.formData()]
+ expected: FAIL
+
+ [Fetch aborted & connection closed when aborted after calling response.json()]
+ expected: FAIL
+
+ [Fetch aborted & connection closed when aborted after calling response.text()]
+ expected: FAIL
+
+ [Stream errors once aborted. Underlying connection closed.]
+ expected: FAIL
+
+ [Stream errors once aborted, after reading. Underlying connection closed.]
+ expected: FAIL
+
+ [Stream will not error if body is empty. It's closed with an empty queue before it errors.]
+ expected: FAIL
+
+ [Readable stream synchronously cancels with AbortError if aborted before reading]
+ expected: FAIL
+
+ [Signal state is cloned]
+ expected: FAIL
+
+ [Clone aborts with original controller]
+ expected: FAIL
+
+ [Aborting rejects with abort reason]
+ expected: FAIL
+
+ [Signal on request object should also have abort reason]
+ expected: FAIL
+
+
+[general.any.worker.html]
+ [Aborting rejects with AbortError]
+ expected: FAIL
+
+ [Aborting rejects with AbortError - no-cors]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - RequestInit's window is not null]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Input URL is not valid]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Input URL has credentials]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - RequestInit's mode is navigate]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - RequestInit's referrer is invalid]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - RequestInit's method is invalid]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - RequestInit's method is forbidden]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Bad referrerPolicy init parameter value]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Bad mode init parameter value]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Bad credentials init parameter value]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Bad cache init parameter value]
+ expected: FAIL
+
+ [TypeError from request constructor takes priority - Bad redirect init parameter value]
+ expected: FAIL
+
+ [Request objects have a signal property]
+ expected: FAIL
+
+ [Signal on request object]
+ expected: FAIL
+
+ [Signal on request object created from request object]
+ expected: FAIL
+
+ [Signal on request object created from request object, with signal on second request]
+ expected: FAIL
+
+ [Signal on request object created from request object, with signal on second request overriding another]
+ expected: FAIL
+
+ [Signal retained after unrelated properties are overridden by fetch]
+ expected: FAIL
+
+ [Signal removed by setting to null]
+ expected: FAIL
+
+ [Already aborted signal rejects immediately]
+ expected: FAIL
+
+ [Request is still 'used' if signal is aborted before fetching]
+ expected: FAIL
+
+ [response.arrayBuffer() rejects if already aborted]
+ expected: FAIL
+
+ [response.blob() rejects if already aborted]
+ expected: FAIL
+
+ [response.formData() rejects if already aborted]
+ expected: FAIL
+
+ [response.json() rejects if already aborted]
+ expected: FAIL
+
+ [response.text() rejects if already aborted]
+ expected: FAIL
+
+ [Call text() twice on aborted response]
+ expected: FAIL
+
+ [Already aborted signal does not make request]
+ expected: FAIL
+
+ [Already aborted signal can be used for many fetches]
+ expected: FAIL
+
+ [Signal can be used to abort other fetches, even if another fetch succeeded before aborting]
+ expected: FAIL
+
+ [Underlying connection is closed when aborting after receiving response]
+ expected: FAIL
+
+ [Underlying connection is closed when aborting after receiving response - no-cors]
+ expected: FAIL
+
+ [Fetch aborted & connection closed when aborted after calling response.arrayBuffer()]
+ expected: FAIL
+
+ [Fetch aborted & connection closed when aborted after calling response.blob()]
+ expected: FAIL
+
+ [Fetch aborted & connection closed when aborted after calling response.formData()]
+ expected: FAIL
+
+ [Fetch aborted & connection closed when aborted after calling response.json()]
+ expected: FAIL
+
+ [Fetch aborted & connection closed when aborted after calling response.text()]
+ expected: FAIL
+
+ [Stream errors once aborted. Underlying connection closed.]
+ expected: FAIL
+
+ [Stream errors once aborted, after reading. Underlying connection closed.]
+ expected: FAIL
+
+ [Stream will not error if body is empty. It's closed with an empty queue before it errors.]
+ expected: FAIL
+
+ [Readable stream synchronously cancels with AbortError if aborted before reading]
+ expected: FAIL
+
+ [Signal state is cloned]
+ expected: FAIL
+
+ [Clone aborts with original controller]
+ expected: FAIL
+
+ [Aborting rejects with abort reason]
+ expected: FAIL
+
+ [Signal on request object should also have abort reason]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/api/abort/request.any.js.ini b/tests/wpt/meta/fetch/api/abort/request.any.js.ini
new file mode 100644
index 00000000000..a39255f79d7
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/abort/request.any.js.ini
@@ -0,0 +1,116 @@
+[request.any.html]
+ [Calling arrayBuffer() on an aborted request]
+ expected: FAIL
+
+ [Aborting a request after calling arrayBuffer()]
+ expected: FAIL
+
+ [Calling arrayBuffer() on an aborted consumed empty request]
+ expected: FAIL
+
+ [Calling arrayBuffer() on an aborted consumed nonempty request]
+ expected: FAIL
+
+ [Calling blob() on an aborted request]
+ expected: FAIL
+
+ [Aborting a request after calling blob()]
+ expected: FAIL
+
+ [Calling blob() on an aborted consumed empty request]
+ expected: FAIL
+
+ [Calling blob() on an aborted consumed nonempty request]
+ expected: FAIL
+
+ [Calling formData() on an aborted request]
+ expected: FAIL
+
+ [Aborting a request after calling formData()]
+ expected: FAIL
+
+ [Calling formData() on an aborted consumed nonempty request]
+ expected: FAIL
+
+ [Calling json() on an aborted request]
+ expected: FAIL
+
+ [Aborting a request after calling json()]
+ expected: FAIL
+
+ [Calling json() on an aborted consumed nonempty request]
+ expected: FAIL
+
+ [Calling text() on an aborted request]
+ expected: FAIL
+
+ [Aborting a request after calling text()]
+ expected: FAIL
+
+ [Calling text() on an aborted consumed empty request]
+ expected: FAIL
+
+ [Calling text() on an aborted consumed nonempty request]
+ expected: FAIL
+
+
+[request.any.serviceworker.html]
+ expected: ERROR
+
+[request.any.sharedworker.html]
+ expected: ERROR
+
+[request.any.worker.html]
+ [Calling arrayBuffer() on an aborted request]
+ expected: FAIL
+
+ [Aborting a request after calling arrayBuffer()]
+ expected: FAIL
+
+ [Calling arrayBuffer() on an aborted consumed empty request]
+ expected: FAIL
+
+ [Calling arrayBuffer() on an aborted consumed nonempty request]
+ expected: FAIL
+
+ [Calling blob() on an aborted request]
+ expected: FAIL
+
+ [Aborting a request after calling blob()]
+ expected: FAIL
+
+ [Calling blob() on an aborted consumed empty request]
+ expected: FAIL
+
+ [Calling blob() on an aborted consumed nonempty request]
+ expected: FAIL
+
+ [Calling formData() on an aborted request]
+ expected: FAIL
+
+ [Aborting a request after calling formData()]
+ expected: FAIL
+
+ [Calling formData() on an aborted consumed nonempty request]
+ expected: FAIL
+
+ [Calling json() on an aborted request]
+ expected: FAIL
+
+ [Aborting a request after calling json()]
+ expected: FAIL
+
+ [Calling json() on an aborted consumed nonempty request]
+ expected: FAIL
+
+ [Calling text() on an aborted request]
+ expected: FAIL
+
+ [Aborting a request after calling text()]
+ expected: FAIL
+
+ [Calling text() on an aborted consumed empty request]
+ expected: FAIL
+
+ [Calling text() on an aborted consumed nonempty request]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/api/abort/serviceworker-intercepted.https.html.ini b/tests/wpt/meta/fetch/api/abort/serviceworker-intercepted.https.html.ini
new file mode 100644
index 00000000000..d07e3ece15b
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/abort/serviceworker-intercepted.https.html.ini
@@ -0,0 +1,33 @@
+[serviceworker-intercepted.https.html]
+ [Already aborted request does not land in service worker]
+ expected: FAIL
+
+ [response.arrayBuffer() rejects if already aborted]
+ expected: FAIL
+
+ [response.blob() rejects if already aborted]
+ expected: FAIL
+
+ [response.formData() rejects if already aborted]
+ expected: FAIL
+
+ [response.json() rejects if already aborted]
+ expected: FAIL
+
+ [response.text() rejects if already aborted]
+ expected: FAIL
+
+ [Stream errors once aborted.]
+ expected: FAIL
+
+ [fetch() rejects with abort reason]
+ expected: FAIL
+
+ [fetch() response body has abort reason]
+ expected: FAIL
+
+ [Service Worker can observe the fetch abort and associated abort reason]
+ expected: FAIL
+
+ [Abort reason serialization happens on abort]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/api/basic/accept-header.any.js.ini b/tests/wpt/meta/fetch/api/basic/accept-header.any.js.ini
new file mode 100644
index 00000000000..c8dda9eb5a1
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/accept-header.any.js.ini
@@ -0,0 +1,9 @@
+[accept-header.any.worker.html]
+
+[accept-header.any.sharedworker.html]
+ expected: ERROR
+
+[accept-header.any.html]
+
+[accept-header.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/basic/conditional-get.any.js.ini b/tests/wpt/meta/fetch/api/basic/conditional-get.any.js.ini
new file mode 100644
index 00000000000..c3dd6098330
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/conditional-get.any.js.ini
@@ -0,0 +1,15 @@
+[conditional-get.any.sharedworker.html]
+ expected: ERROR
+
+[conditional-get.any.worker.html]
+ [Testing conditional GET with ETags]
+ expected: FAIL
+
+
+[conditional-get.any.serviceworker.html]
+ expected: ERROR
+
+[conditional-get.any.html]
+ [Testing conditional GET with ETags]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/api/basic/error-after-response.any.js.ini b/tests/wpt/meta/fetch/api/basic/error-after-response.any.js.ini
new file mode 100644
index 00000000000..35b9968a133
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/error-after-response.any.js.ini
@@ -0,0 +1,21 @@
+[error-after-response.any.sharedworker.html]
+ expected: ERROR
+
+[error-after-response.any.worker.html]
+ [Response reader closed promise should reject after a network error happening after resolving fetch promise]
+ expected: FAIL
+
+ [Response reader read() promise should reject after a network error happening after resolving fetch promise]
+ expected: FAIL
+
+
+[error-after-response.any.html]
+ [Response reader closed promise should reject after a network error happening after resolving fetch promise]
+ expected: FAIL
+
+ [Response reader read() promise should reject after a network error happening after resolving fetch promise]
+ expected: FAIL
+
+
+[error-after-response.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/basic/historical.any.js.ini b/tests/wpt/meta/fetch/api/basic/historical.any.js.ini
new file mode 100644
index 00000000000..f7a5a1c34d7
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/historical.any.js.ini
@@ -0,0 +1,9 @@
+[historical.any.worker.html]
+
+[historical.any.sharedworker.html]
+ expected: ERROR
+
+[historical.any.serviceworker.html]
+ expected: ERROR
+
+[historical.any.html]
diff --git a/tests/wpt/meta/fetch/api/basic/http-response-code.any.js.ini b/tests/wpt/meta/fetch/api/basic/http-response-code.any.js.ini
new file mode 100644
index 00000000000..3d566236e8c
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/http-response-code.any.js.ini
@@ -0,0 +1,9 @@
+[http-response-code.any.sharedworker.html]
+ expected: ERROR
+
+[http-response-code.any.serviceworker.html]
+ expected: ERROR
+
+[http-response-code.any.html]
+
+[http-response-code.any.worker.html]
diff --git a/tests/wpt/meta/fetch/api/basic/keepalive.any.js.ini b/tests/wpt/meta/fetch/api/basic/keepalive.any.js.ini
new file mode 100644
index 00000000000..e9ab91fc80e
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/keepalive.any.js.ini
@@ -0,0 +1,3 @@
+[keepalive.any.html]
+ [keepalive in onunload in nested frame in another window]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/api/basic/keepalive.html.ini b/tests/wpt/meta/fetch/api/basic/keepalive.html.ini
new file mode 100644
index 00000000000..5e55a6a7476
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/keepalive.html.ini
@@ -0,0 +1,4 @@
+[keepalive.html]
+ [keepalive in onunload in nested frame in another window]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/api/basic/request-forbidden-headers.any.js.ini b/tests/wpt/meta/fetch/api/basic/request-forbidden-headers.any.js.ini
new file mode 100644
index 00000000000..88c14114e79
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/request-forbidden-headers.any.js.ini
@@ -0,0 +1,267 @@
+[request-forbidden-headers.any.worker.html]
+ [header x-http-method-override is forbidden to use value TRACE]
+ expected: FAIL
+
+ [header x-http-method is forbidden to use value TRACE]
+ expected: FAIL
+
+ [header x-method-override is forbidden to use value TRACE]
+ expected: FAIL
+
+ [header X-HTTP-METHOD-OVERRIDE is forbidden to use value TRACE]
+ expected: FAIL
+
+ [header X-HTTP-METHOD is forbidden to use value TRACE]
+ expected: FAIL
+
+ [header X-METHOD-OVERRIDE is forbidden to use value TRACE]
+ expected: FAIL
+
+ [header x-http-method-override is forbidden to use value TRACK]
+ expected: FAIL
+
+ [header x-http-method is forbidden to use value TRACK]
+ expected: FAIL
+
+ [header x-method-override is forbidden to use value TRACK]
+ expected: FAIL
+
+ [header X-HTTP-METHOD-OVERRIDE is forbidden to use value TRACK]
+ expected: FAIL
+
+ [header X-HTTP-METHOD is forbidden to use value TRACK]
+ expected: FAIL
+
+ [header X-METHOD-OVERRIDE is forbidden to use value TRACK]
+ expected: FAIL
+
+ [header x-http-method-override is forbidden to use value CONNECT]
+ expected: FAIL
+
+ [header x-http-method is forbidden to use value CONNECT]
+ expected: FAIL
+
+ [header x-method-override is forbidden to use value CONNECT]
+ expected: FAIL
+
+ [header X-HTTP-METHOD-OVERRIDE is forbidden to use value CONNECT]
+ expected: FAIL
+
+ [header X-HTTP-METHOD is forbidden to use value CONNECT]
+ expected: FAIL
+
+ [header X-METHOD-OVERRIDE is forbidden to use value CONNECT]
+ expected: FAIL
+
+ [header x-http-method-override is forbidden to use value trace]
+ expected: FAIL
+
+ [header x-http-method is forbidden to use value trace]
+ expected: FAIL
+
+ [header x-method-override is forbidden to use value trace]
+ expected: FAIL
+
+ [header X-HTTP-METHOD-OVERRIDE is forbidden to use value trace]
+ expected: FAIL
+
+ [header X-HTTP-METHOD is forbidden to use value trace]
+ expected: FAIL
+
+ [header X-METHOD-OVERRIDE is forbidden to use value trace]
+ expected: FAIL
+
+ [header x-http-method-override is forbidden to use value track]
+ expected: FAIL
+
+ [header x-http-method is forbidden to use value track]
+ expected: FAIL
+
+ [header x-method-override is forbidden to use value track]
+ expected: FAIL
+
+ [header X-HTTP-METHOD-OVERRIDE is forbidden to use value track]
+ expected: FAIL
+
+ [header X-HTTP-METHOD is forbidden to use value track]
+ expected: FAIL
+
+ [header X-METHOD-OVERRIDE is forbidden to use value track]
+ expected: FAIL
+
+ [header x-http-method-override is forbidden to use value connect]
+ expected: FAIL
+
+ [header x-http-method is forbidden to use value connect]
+ expected: FAIL
+
+ [header x-method-override is forbidden to use value connect]
+ expected: FAIL
+
+ [header X-HTTP-METHOD-OVERRIDE is forbidden to use value connect]
+ expected: FAIL
+
+ [header X-HTTP-METHOD is forbidden to use value connect]
+ expected: FAIL
+
+ [header X-METHOD-OVERRIDE is forbidden to use value connect]
+ expected: FAIL
+
+ [header x-http-method-override is forbidden to use value trace,]
+ expected: FAIL
+
+ [header x-http-method is forbidden to use value trace,]
+ expected: FAIL
+
+ [header x-method-override is forbidden to use value trace,]
+ expected: FAIL
+
+ [header X-HTTP-METHOD-OVERRIDE is forbidden to use value trace,]
+ expected: FAIL
+
+ [header X-HTTP-METHOD is forbidden to use value trace,]
+ expected: FAIL
+
+ [header X-METHOD-OVERRIDE is forbidden to use value trace,]
+ expected: FAIL
+
+ [Access-Control-Request-Private-Network is a forbidden request header]
+ expected: FAIL
+
+
+[request-forbidden-headers.any.sharedworker.html]
+ expected: ERROR
+
+[request-forbidden-headers.any.html]
+ [header x-http-method-override is forbidden to use value TRACE]
+ expected: FAIL
+
+ [header x-http-method is forbidden to use value TRACE]
+ expected: FAIL
+
+ [header x-method-override is forbidden to use value TRACE]
+ expected: FAIL
+
+ [header X-HTTP-METHOD-OVERRIDE is forbidden to use value TRACE]
+ expected: FAIL
+
+ [header X-HTTP-METHOD is forbidden to use value TRACE]
+ expected: FAIL
+
+ [header X-METHOD-OVERRIDE is forbidden to use value TRACE]
+ expected: FAIL
+
+ [header x-http-method-override is forbidden to use value TRACK]
+ expected: FAIL
+
+ [header x-http-method is forbidden to use value TRACK]
+ expected: FAIL
+
+ [header x-method-override is forbidden to use value TRACK]
+ expected: FAIL
+
+ [header X-HTTP-METHOD-OVERRIDE is forbidden to use value TRACK]
+ expected: FAIL
+
+ [header X-HTTP-METHOD is forbidden to use value TRACK]
+ expected: FAIL
+
+ [header X-METHOD-OVERRIDE is forbidden to use value TRACK]
+ expected: FAIL
+
+ [header x-http-method-override is forbidden to use value CONNECT]
+ expected: FAIL
+
+ [header x-http-method is forbidden to use value CONNECT]
+ expected: FAIL
+
+ [header x-method-override is forbidden to use value CONNECT]
+ expected: FAIL
+
+ [header X-HTTP-METHOD-OVERRIDE is forbidden to use value CONNECT]
+ expected: FAIL
+
+ [header X-HTTP-METHOD is forbidden to use value CONNECT]
+ expected: FAIL
+
+ [header X-METHOD-OVERRIDE is forbidden to use value CONNECT]
+ expected: FAIL
+
+ [header x-http-method-override is forbidden to use value trace]
+ expected: FAIL
+
+ [header x-http-method is forbidden to use value trace]
+ expected: FAIL
+
+ [header x-method-override is forbidden to use value trace]
+ expected: FAIL
+
+ [header X-HTTP-METHOD-OVERRIDE is forbidden to use value trace]
+ expected: FAIL
+
+ [header X-HTTP-METHOD is forbidden to use value trace]
+ expected: FAIL
+
+ [header X-METHOD-OVERRIDE is forbidden to use value trace]
+ expected: FAIL
+
+ [header x-http-method-override is forbidden to use value track]
+ expected: FAIL
+
+ [header x-http-method is forbidden to use value track]
+ expected: FAIL
+
+ [header x-method-override is forbidden to use value track]
+ expected: FAIL
+
+ [header X-HTTP-METHOD-OVERRIDE is forbidden to use value track]
+ expected: FAIL
+
+ [header X-HTTP-METHOD is forbidden to use value track]
+ expected: FAIL
+
+ [header X-METHOD-OVERRIDE is forbidden to use value track]
+ expected: FAIL
+
+ [header x-http-method-override is forbidden to use value connect]
+ expected: FAIL
+
+ [header x-http-method is forbidden to use value connect]
+ expected: FAIL
+
+ [header x-method-override is forbidden to use value connect]
+ expected: FAIL
+
+ [header X-HTTP-METHOD-OVERRIDE is forbidden to use value connect]
+ expected: FAIL
+
+ [header X-HTTP-METHOD is forbidden to use value connect]
+ expected: FAIL
+
+ [header X-METHOD-OVERRIDE is forbidden to use value connect]
+ expected: FAIL
+
+ [header x-http-method-override is forbidden to use value trace,]
+ expected: FAIL
+
+ [header x-http-method is forbidden to use value trace,]
+ expected: FAIL
+
+ [header x-method-override is forbidden to use value trace,]
+ expected: FAIL
+
+ [header X-HTTP-METHOD-OVERRIDE is forbidden to use value trace,]
+ expected: FAIL
+
+ [header X-HTTP-METHOD is forbidden to use value trace,]
+ expected: FAIL
+
+ [header X-METHOD-OVERRIDE is forbidden to use value trace,]
+ expected: FAIL
+
+ [Access-Control-Request-Private-Network is a forbidden request header]
+ expected: FAIL
+
+
+[request-forbidden-headers.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/basic/request-head.any.js.ini b/tests/wpt/meta/fetch/api/basic/request-head.any.js.ini
new file mode 100644
index 00000000000..acadde36be5
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/request-head.any.js.ini
@@ -0,0 +1,9 @@
+[request-head.any.worker.html]
+
+[request-head.any.sharedworker.html]
+ expected: ERROR
+
+[request-head.any.serviceworker.html]
+ expected: ERROR
+
+[request-head.any.html]
diff --git a/tests/wpt/meta/fetch/api/basic/request-headers-case.any.js.ini b/tests/wpt/meta/fetch/api/basic/request-headers-case.any.js.ini
new file mode 100644
index 00000000000..480cc62f00e
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/request-headers-case.any.js.ini
@@ -0,0 +1,21 @@
+[request-headers-case.any.html]
+ [Multiple headers with the same name, different case (THIS-is-A-test first)]
+ expected: FAIL
+
+ [Multiple headers with the same name, different case (THIS-IS-A-TEST first)]
+ expected: FAIL
+
+
+[request-headers-case.any.worker.html]
+ [Multiple headers with the same name, different case (THIS-is-A-test first)]
+ expected: FAIL
+
+ [Multiple headers with the same name, different case (THIS-IS-A-TEST first)]
+ expected: FAIL
+
+
+[request-headers-case.any.serviceworker.html]
+ expected: ERROR
+
+[request-headers-case.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/basic/request-headers-nonascii.any.js.ini b/tests/wpt/meta/fetch/api/basic/request-headers-nonascii.any.js.ini
new file mode 100644
index 00000000000..2c8fc22bcf2
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/request-headers-nonascii.any.js.ini
@@ -0,0 +1,9 @@
+[request-headers-nonascii.any.sharedworker.html]
+ expected: ERROR
+
+[request-headers-nonascii.any.worker.html]
+
+[request-headers-nonascii.any.html]
+
+[request-headers-nonascii.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/basic/request-headers.any.js.ini b/tests/wpt/meta/fetch/api/basic/request-headers.any.js.ini
new file mode 100644
index 00000000000..0f2f3791bef
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/request-headers.any.js.ini
@@ -0,0 +1,15 @@
+[request-headers.any.serviceworker.html]
+ expected: ERROR
+
+[request-headers.any.sharedworker.html]
+ expected: ERROR
+
+[request-headers.any.html]
+ [Fetch with POST with FormData body]
+ expected: FAIL
+
+
+[request-headers.any.worker.html]
+ [Fetch with POST with FormData body]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/api/basic/request-referrer.any.js.ini b/tests/wpt/meta/fetch/api/basic/request-referrer.any.js.ini
new file mode 100644
index 00000000000..6a4334fb2cd
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/request-referrer.any.js.ini
@@ -0,0 +1,9 @@
+[request-referrer.any.worker.html]
+
+[request-referrer.any.html]
+
+[request-referrer.any.serviceworker.html]
+ expected: ERROR
+
+[request-referrer.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/basic/request-upload.any.js.ini b/tests/wpt/meta/fetch/api/basic/request-upload.any.js.ini
new file mode 100644
index 00000000000..ac317cc0456
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/request-upload.any.js.ini
@@ -0,0 +1,44 @@
+[request-upload.any.html]
+ [Fetch with POST with ReadableStream]
+ expected: FAIL
+
+ [Fetch with POST with text body on 421 response should be retried once on new connection.]
+ expected: FAIL
+
+ [Fetch with POST with ReadableStream on 421 response should return the response and not retry.]
+ expected: TIMEOUT
+
+ [Feature detect for POST with ReadableStream]
+ expected: NOTRUN
+
+ [Feature detect for POST with ReadableStream, using request object]
+ expected: NOTRUN
+
+ [Streaming upload shouldn't work on Http/1.1.]
+ expected: FAIL
+
+
+[request-upload.any.serviceworker.html]
+ expected: ERROR
+
+[request-upload.any.sharedworker.html]
+ expected: ERROR
+
+[request-upload.any.worker.html]
+ [Fetch with POST with ReadableStream]
+ expected: FAIL
+
+ [Fetch with POST with text body on 421 response should be retried once on new connection.]
+ expected: FAIL
+
+ [Fetch with POST with ReadableStream on 421 response should return the response and not retry.]
+ expected: TIMEOUT
+
+ [Feature detect for POST with ReadableStream]
+ expected: NOTRUN
+
+ [Feature detect for POST with ReadableStream, using request object]
+ expected: NOTRUN
+
+ [Streaming upload shouldn't work on Http/1.1.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/api/basic/request-upload.h2.any.js.ini b/tests/wpt/meta/fetch/api/basic/request-upload.h2.any.js.ini
new file mode 100644
index 00000000000..c35164d1bf9
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/request-upload.h2.any.js.ini
@@ -0,0 +1,76 @@
+[request-upload.h2.any.sharedworker.html]
+ expected: ERROR
+
+[request-upload.h2.any.serviceworker.html]
+ expected: ERROR
+
+[request-upload.h2.any.worker.html]
+ expected: TIMEOUT
+ [Fetch with POST with empty ReadableStream]
+ expected: TIMEOUT
+
+ [Fetch with POST with ReadableStream]
+ expected: NOTRUN
+
+ [Fetch with POST with ReadableStream on 421 response should return the response and not retry.]
+ expected: NOTRUN
+
+ [Feature detect for POST with ReadableStream]
+ expected: NOTRUN
+
+ [Feature detect for POST with ReadableStream, using request object]
+ expected: NOTRUN
+
+ [Synchronous feature detect]
+ expected: FAIL
+
+ [Synchronous feature detect fails if feature unsupported]
+ expected: NOTRUN
+
+ [Streaming upload with body containing a String]
+ expected: NOTRUN
+
+ [Streaming upload with body containing null]
+ expected: NOTRUN
+
+ [Streaming upload with body containing a number]
+ expected: NOTRUN
+
+ [Streaming upload should fail on a 401 response]
+ expected: NOTRUN
+
+
+[request-upload.h2.any.html]
+ expected: TIMEOUT
+ [Fetch with POST with empty ReadableStream]
+ expected: TIMEOUT
+
+ [Fetch with POST with ReadableStream]
+ expected: NOTRUN
+
+ [Fetch with POST with ReadableStream on 421 response should return the response and not retry.]
+ expected: NOTRUN
+
+ [Feature detect for POST with ReadableStream]
+ expected: NOTRUN
+
+ [Feature detect for POST with ReadableStream, using request object]
+ expected: NOTRUN
+
+ [Synchronous feature detect]
+ expected: FAIL
+
+ [Synchronous feature detect fails if feature unsupported]
+ expected: NOTRUN
+
+ [Streaming upload with body containing a String]
+ expected: NOTRUN
+
+ [Streaming upload with body containing null]
+ expected: NOTRUN
+
+ [Streaming upload with body containing a number]
+ expected: NOTRUN
+
+ [Streaming upload should fail on a 401 response]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/api/basic/response-null-body.any.js.ini b/tests/wpt/meta/fetch/api/basic/response-null-body.any.js.ini
new file mode 100644
index 00000000000..4ae9625f4c6
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/response-null-body.any.js.ini
@@ -0,0 +1,69 @@
+[response-null-body.any.html]
+ [Response.body is null for responses with status=204 (method=GET)]
+ expected: FAIL
+
+ [Response.body is null for responses with status=204 (method=POST)]
+ expected: FAIL
+
+ [Response.body is null for responses with status=204 (method=OPTIONS)]
+ expected: FAIL
+
+ [Response.body is null for responses with status=205 (method=GET)]
+ expected: FAIL
+
+ [Response.body is null for responses with status=205 (method=POST)]
+ expected: FAIL
+
+ [Response.body is null for responses with status=205 (method=OPTIONS)]
+ expected: FAIL
+
+ [Response.body is null for responses with status=304 (method=GET)]
+ expected: FAIL
+
+ [Response.body is null for responses with status=304 (method=POST)]
+ expected: FAIL
+
+ [Response.body is null for responses with status=304 (method=OPTIONS)]
+ expected: FAIL
+
+ [Response.body is null for responses with method=HEAD]
+ expected: FAIL
+
+
+[response-null-body.any.worker.html]
+ [Response.body is null for responses with status=204 (method=GET)]
+ expected: FAIL
+
+ [Response.body is null for responses with status=204 (method=POST)]
+ expected: FAIL
+
+ [Response.body is null for responses with status=204 (method=OPTIONS)]
+ expected: FAIL
+
+ [Response.body is null for responses with status=205 (method=GET)]
+ expected: FAIL
+
+ [Response.body is null for responses with status=205 (method=POST)]
+ expected: FAIL
+
+ [Response.body is null for responses with status=205 (method=OPTIONS)]
+ expected: FAIL
+
+ [Response.body is null for responses with status=304 (method=GET)]
+ expected: FAIL
+
+ [Response.body is null for responses with status=304 (method=POST)]
+ expected: FAIL
+
+ [Response.body is null for responses with status=304 (method=OPTIONS)]
+ expected: FAIL
+
+ [Response.body is null for responses with method=HEAD]
+ expected: FAIL
+
+
+[response-null-body.any.serviceworker.html]
+ expected: ERROR
+
+[response-null-body.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/basic/scheme-about.any.js.ini b/tests/wpt/meta/fetch/api/basic/scheme-about.any.js.ini
new file mode 100644
index 00000000000..305e90a43de
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/scheme-about.any.js.ini
@@ -0,0 +1,9 @@
+[scheme-about.any.worker.html]
+
+[scheme-about.any.html]
+
+[scheme-about.any.serviceworker.html]
+ expected: ERROR
+
+[scheme-about.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/basic/scheme-blob.sub.any.js.ini b/tests/wpt/meta/fetch/api/basic/scheme-blob.sub.any.js.ini
new file mode 100644
index 00000000000..1f763976c20
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/scheme-blob.sub.any.js.ini
@@ -0,0 +1,5 @@
+[scheme-blob.sub.any.worker.html]
+ expected: CRASH
+
+[scheme-blob.sub.any.html]
+ expected: CRASH
diff --git a/tests/wpt/meta/fetch/api/basic/scheme-data.any.js.ini b/tests/wpt/meta/fetch/api/basic/scheme-data.any.js.ini
new file mode 100644
index 00000000000..1ccad87dc7d
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/scheme-data.any.js.ini
@@ -0,0 +1,39 @@
+[scheme-data.any.html]
+ [Fetching data:,response%27s%20body is OK (cors)]
+ expected: FAIL
+
+ [Fetching [HEAD\] data:,response%27s%20body is OK]
+ expected: FAIL
+
+ [Fetching [POST\] data:,response%27s%20body is OK]
+ expected: FAIL
+
+ [Fetching data:,response%27s%20body is OK (same-origin)]
+ expected: FAIL
+
+ [Fetching data:,response%27s%20body is OK]
+ expected: FAIL
+
+
+[scheme-data.any.worker.html]
+ [Fetching data:,response%27s%20body is OK (cors)]
+ expected: FAIL
+
+ [Fetching [HEAD\] data:,response%27s%20body is OK]
+ expected: FAIL
+
+ [Fetching [POST\] data:,response%27s%20body is OK]
+ expected: FAIL
+
+ [Fetching data:,response%27s%20body is OK (same-origin)]
+ expected: FAIL
+
+ [Fetching data:,response%27s%20body is OK]
+ expected: FAIL
+
+
+[scheme-data.any.sharedworker.html]
+ expected: ERROR
+
+[scheme-data.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/basic/scheme-others.sub.any.js.ini b/tests/wpt/meta/fetch/api/basic/scheme-others.sub.any.js.ini
new file mode 100644
index 00000000000..dae68b8f7c8
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/scheme-others.sub.any.js.ini
@@ -0,0 +1,9 @@
+[scheme-others.sub.any.serviceworker.html]
+ expected: ERROR
+
+[scheme-others.sub.any.sharedworker.html]
+ expected: ERROR
+
+[scheme-others.sub.any.worker.html]
+
+[scheme-others.sub.any.html]
diff --git a/tests/wpt/meta/fetch/api/basic/status.h2.any.js.ini b/tests/wpt/meta/fetch/api/basic/status.h2.any.js.ini
new file mode 100644
index 00000000000..d08401013ba
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/status.h2.any.js.ini
@@ -0,0 +1,38 @@
+[status.h2.any.worker.html]
+ [statusText over H2 for status 200 should be the empty string]
+ expected: FAIL
+
+ [statusText over H2 for status 400 should be the empty string]
+ expected: FAIL
+
+ [statusText over H2 for status 404 should be the empty string]
+ expected: FAIL
+
+ [statusText over H2 for status 410 should be the empty string]
+ expected: FAIL
+
+ [statusText over H2 for status 500 should be the empty string]
+ expected: FAIL
+
+ [statusText over H2 for status 502 should be the empty string]
+ expected: FAIL
+
+
+[status.h2.any.html]
+ [statusText over H2 for status 200 should be the empty string]
+ expected: FAIL
+
+ [statusText over H2 for status 400 should be the empty string]
+ expected: FAIL
+
+ [statusText over H2 for status 404 should be the empty string]
+ expected: FAIL
+
+ [statusText over H2 for status 410 should be the empty string]
+ expected: FAIL
+
+ [statusText over H2 for status 500 should be the empty string]
+ expected: FAIL
+
+ [statusText over H2 for status 502 should be the empty string]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/api/basic/stream-response.any.js.ini b/tests/wpt/meta/fetch/api/basic/stream-response.any.js.ini
new file mode 100644
index 00000000000..14c587baf79
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/stream-response.any.js.ini
@@ -0,0 +1,9 @@
+[stream-response.any.sharedworker.html]
+ expected: ERROR
+
+[stream-response.any.html]
+
+[stream-response.any.serviceworker.html]
+ expected: ERROR
+
+[stream-response.any.worker.html]
diff --git a/tests/wpt/meta/fetch/api/basic/stream-safe-creation.any.js.ini b/tests/wpt/meta/fetch/api/basic/stream-safe-creation.any.js.ini
new file mode 100644
index 00000000000..f48fb507bbb
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/stream-safe-creation.any.js.ini
@@ -0,0 +1,10 @@
+[stream-safe-creation.any.serviceworker.html]
+ expected: ERROR
+ [stream-safe-creation]
+ expected: FAIL
+
+
+[stream-safe-creation.any.sharedworker.html]
+ expected: ERROR
+ [stream-safe-creation]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/api/basic/text-utf8.any.js.ini b/tests/wpt/meta/fetch/api/basic/text-utf8.any.js.ini
new file mode 100644
index 00000000000..4a8e2275aca
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/basic/text-utf8.any.js.ini
@@ -0,0 +1,33 @@
+[text-utf8.any.html]
+ [UTF-8 with BOM with Request.text()]
+ expected: FAIL
+
+ [UTF-8 with BOM with fetched data (UTF-16 charset)]
+ expected: FAIL
+
+ [UTF-8 with BOM with fetched data (UTF-8 charset)]
+ expected: FAIL
+
+ [UTF-8 with BOM with Response.text()]
+ expected: FAIL
+
+
+[text-utf8.any.worker.html]
+ [UTF-8 with BOM with Request.text()]
+ expected: FAIL
+
+ [UTF-8 with BOM with fetched data (UTF-16 charset)]
+ expected: FAIL
+
+ [UTF-8 with BOM with fetched data (UTF-8 charset)]
+ expected: FAIL
+
+ [UTF-8 with BOM with Response.text()]
+ expected: FAIL
+
+
+[text-utf8.any.serviceworker.html]
+ expected: ERROR
+
+[text-utf8.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/body/formdata.any.js.ini b/tests/wpt/meta/fetch/api/body/formdata.any.js.ini
new file mode 100644
index 00000000000..2fbdce4291b
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/body/formdata.any.js.ini
@@ -0,0 +1,14 @@
+[formdata.any.worker.html]
+ [Consume empty response.formData() as FormData]
+ expected: FAIL
+
+ [Consume empty request.formData() as FormData]
+ expected: FAIL
+
+
+[formdata.any.html]
+ [Consume empty response.formData() as FormData]
+ expected: FAIL
+
+ [Consume empty request.formData() as FormData]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/api/body/mime-type.any.js.ini b/tests/wpt/meta/fetch/api/body/mime-type.any.js.ini
new file mode 100644
index 00000000000..f108827d2ea
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/body/mime-type.any.js.ini
@@ -0,0 +1,82 @@
+[mime-type.any.html]
+ expected: TIMEOUT
+ [Response: MIME type for Blob from empty body]
+ expected: TIMEOUT
+
+ [Request: MIME type for Blob from empty body with Content-Type]
+ expected: NOTRUN
+
+ [Response: MIME type for Blob from empty body with Content-Type]
+ expected: NOTRUN
+
+ [Request: MIME type for Blob]
+ expected: NOTRUN
+
+ [Response: MIME type for Blob]
+ expected: NOTRUN
+
+ [Request: MIME type for Blob with non-empty type]
+ expected: NOTRUN
+
+ [Response: MIME type for Blob with non-empty type]
+ expected: NOTRUN
+
+ [Request: Extract a MIME type with clone]
+ expected: NOTRUN
+
+ [Response: Extract a MIME type with clone]
+ expected: NOTRUN
+
+ [Request: Content-Type in headers wins Blob"s type]
+ expected: NOTRUN
+
+ [Response: Content-Type in headers wins Blob"s type]
+ expected: NOTRUN
+
+ [Request: setting missing Content-Type in headers and it wins Blob"s type]
+ expected: NOTRUN
+
+ [Response: setting missing Content-Type in headers and it wins Blob"s type]
+ expected: NOTRUN
+
+
+[mime-type.any.worker.html]
+ expected: TIMEOUT
+ [Response: MIME type for Blob from empty body]
+ expected: TIMEOUT
+
+ [Request: MIME type for Blob from empty body with Content-Type]
+ expected: NOTRUN
+
+ [Response: MIME type for Blob from empty body with Content-Type]
+ expected: NOTRUN
+
+ [Request: MIME type for Blob]
+ expected: NOTRUN
+
+ [Response: MIME type for Blob]
+ expected: NOTRUN
+
+ [Request: MIME type for Blob with non-empty type]
+ expected: NOTRUN
+
+ [Response: MIME type for Blob with non-empty type]
+ expected: NOTRUN
+
+ [Request: Extract a MIME type with clone]
+ expected: NOTRUN
+
+ [Response: Extract a MIME type with clone]
+ expected: NOTRUN
+
+ [Request: Content-Type in headers wins Blob"s type]
+ expected: NOTRUN
+
+ [Response: Content-Type in headers wins Blob"s type]
+ expected: NOTRUN
+
+ [Request: setting missing Content-Type in headers and it wins Blob"s type]
+ expected: NOTRUN
+
+ [Response: setting missing Content-Type in headers and it wins Blob"s type]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/api/cors/cors-multiple-origins.sub.any.js.ini b/tests/wpt/meta/fetch/api/cors/cors-multiple-origins.sub.any.js.ini
new file mode 100644
index 00000000000..df03d08776f
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/cors/cors-multiple-origins.sub.any.js.ini
@@ -0,0 +1,9 @@
+[cors-multiple-origins.sub.any.html]
+
+[cors-multiple-origins.sub.any.serviceworker.html]
+ expected: ERROR
+
+[cors-multiple-origins.sub.any.sharedworker.html]
+ expected: ERROR
+
+[cors-multiple-origins.sub.any.worker.html]
diff --git a/tests/wpt/meta/fetch/api/cors/cors-preflight-redirect.any.js.ini b/tests/wpt/meta/fetch/api/cors/cors-preflight-redirect.any.js.ini
new file mode 100644
index 00000000000..fa9d243c210
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/cors/cors-preflight-redirect.any.js.ini
@@ -0,0 +1,9 @@
+[cors-preflight-redirect.any.worker.html]
+
+[cors-preflight-redirect.any.sharedworker.html]
+ expected: ERROR
+
+[cors-preflight-redirect.any.html]
+
+[cors-preflight-redirect.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/credentials/authentication-basic.any.js.ini b/tests/wpt/meta/fetch/api/credentials/authentication-basic.any.js.ini
new file mode 100644
index 00000000000..502061d7763
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/credentials/authentication-basic.any.js.ini
@@ -0,0 +1,9 @@
+[authentication-basic.any.worker.html]
+
+[authentication-basic.any.sharedworker.html]
+ expected: ERROR
+
+[authentication-basic.any.html]
+
+[authentication-basic.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/credentials/authentication-redirection.any.js.ini b/tests/wpt/meta/fetch/api/credentials/authentication-redirection.any.js.ini
new file mode 100644
index 00000000000..78c2307ac29
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/credentials/authentication-redirection.any.js.ini
@@ -0,0 +1,14 @@
+[authentication-redirection.any.sharedworker.html]
+ expected: ERROR
+
+[authentication-redirection.any.html]
+ [getAuthorizationHeaderValue - cross origin redirection]
+ expected: FAIL
+
+
+[authentication-redirection.any.serviceworker.html]
+ expected: ERROR
+
+[authentication-redirection.any.worker.html]
+ [getAuthorizationHeaderValue - cross origin redirection]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/api/credentials/cookies.any.js.ini b/tests/wpt/meta/fetch/api/credentials/cookies.any.js.ini
new file mode 100644
index 00000000000..26146e8a86b
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/credentials/cookies.any.js.ini
@@ -0,0 +1,9 @@
+[cookies.any.sharedworker.html]
+ expected: ERROR
+
+[cookies.any.worker.html]
+
+[cookies.any.serviceworker.html]
+ expected: ERROR
+
+[cookies.any.html]
diff --git a/tests/wpt/meta/fetch/api/headers/header-values-normalize.any.js.ini b/tests/wpt/meta/fetch/api/headers/header-values-normalize.any.js.ini
new file mode 100644
index 00000000000..d675e7c548d
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/headers/header-values-normalize.any.js.ini
@@ -0,0 +1,243 @@
+[header-values-normalize.any.html]
+ [fetch() with value %13]
+ expected: FAIL
+
+ [XMLHttpRequest with value %16]
+ expected: FAIL
+
+ [XMLHttpRequest with value %17]
+ expected: FAIL
+
+ [fetch() with value %1C]
+ expected: FAIL
+
+ [fetch() with value %16]
+ expected: FAIL
+
+ [XMLHttpRequest with value %1C]
+ expected: FAIL
+
+ [XMLHttpRequest with value %1B]
+ expected: FAIL
+
+ [fetch() with value %1A]
+ expected: FAIL
+
+ [fetch() with value %1B]
+ expected: FAIL
+
+ [fetch() with value %17]
+ expected: FAIL
+
+ [fetch() with value %1D]
+ expected: FAIL
+
+ [fetch() with value %1E]
+ expected: FAIL
+
+ [XMLHttpRequest with value %1D]
+ expected: FAIL
+
+ [XMLHttpRequest with value %1E]
+ expected: FAIL
+
+ [XMLHttpRequest with value %08]
+ expected: FAIL
+
+ [XMLHttpRequest with value %1A]
+ expected: FAIL
+
+ [XMLHttpRequest with value %01]
+ expected: FAIL
+
+ [XMLHttpRequest with value %03]
+ expected: FAIL
+
+ [XMLHttpRequest with value %02]
+ expected: FAIL
+
+ [XMLHttpRequest with value %05]
+ expected: FAIL
+
+ [XMLHttpRequest with value %04]
+ expected: FAIL
+
+ [XMLHttpRequest with value %07]
+ expected: FAIL
+
+ [XMLHttpRequest with value %06]
+ expected: FAIL
+
+ [fetch() with value %07]
+ expected: FAIL
+
+ [fetch() with value %06]
+ expected: FAIL
+
+ [fetch() with value %05]
+ expected: FAIL
+
+ [fetch() with value %04]
+ expected: FAIL
+
+ [fetch() with value %03]
+ expected: FAIL
+
+ [fetch() with value %02]
+ expected: FAIL
+
+ [fetch() with value %01]
+ expected: FAIL
+
+ [XMLHttpRequest with value %1F]
+ expected: FAIL
+
+ [fetch() with value %08]
+ expected: FAIL
+
+ [fetch() with value %0F]
+ expected: FAIL
+
+ [fetch() with value %0E]
+ expected: FAIL
+
+ [XMLHttpRequest with value %0E]
+ expected: FAIL
+
+ [XMLHttpRequest with value %0F]
+ expected: FAIL
+
+ [fetch() with value %18]
+ expected: FAIL
+
+ [fetch() with value %19]
+ expected: FAIL
+
+ [XMLHttpRequest with value %18]
+ expected: FAIL
+
+ [XMLHttpRequest with value %19]
+ expected: FAIL
+
+ [fetch() with value %10]
+ expected: FAIL
+
+ [fetch() with value %11]
+ expected: FAIL
+
+ [XMLHttpRequest with value %10]
+ expected: FAIL
+
+ [XMLHttpRequest with value %11]
+ expected: FAIL
+
+ [fetch() with value %14]
+ expected: FAIL
+
+ [fetch() with value %15]
+ expected: FAIL
+
+ [XMLHttpRequest with value %14]
+ expected: FAIL
+
+ [XMLHttpRequest with value %15]
+ expected: FAIL
+
+ [XMLHttpRequest with value %12]
+ expected: FAIL
+
+ [fetch() with value %1F]
+ expected: FAIL
+
+ [XMLHttpRequest with value %13]
+ expected: FAIL
+
+ [fetch() with value %12]
+ expected: FAIL
+
+
+[header-values-normalize.any.worker.html]
+ [fetch() with value %1A]
+ expected: FAIL
+
+ [fetch() with value %1B]
+ expected: FAIL
+
+ [fetch() with value %1C]
+ expected: FAIL
+
+ [fetch() with value %1D]
+ expected: FAIL
+
+ [fetch() with value %1E]
+ expected: FAIL
+
+ [fetch() with value %1F]
+ expected: FAIL
+
+ [fetch() with value %07]
+ expected: FAIL
+
+ [fetch() with value %06]
+ expected: FAIL
+
+ [fetch() with value %05]
+ expected: FAIL
+
+ [fetch() with value %04]
+ expected: FAIL
+
+ [fetch() with value %03]
+ expected: FAIL
+
+ [fetch() with value %02]
+ expected: FAIL
+
+ [fetch() with value %01]
+ expected: FAIL
+
+ [fetch() with value %08]
+ expected: FAIL
+
+ [fetch() with value %0F]
+ expected: FAIL
+
+ [fetch() with value %0E]
+ expected: FAIL
+
+ [fetch() with value %18]
+ expected: FAIL
+
+ [fetch() with value %19]
+ expected: FAIL
+
+ [fetch() with value %10]
+ expected: FAIL
+
+ [fetch() with value %11]
+ expected: FAIL
+
+ [fetch() with value %12]
+ expected: FAIL
+
+ [fetch() with value %13]
+ expected: FAIL
+
+ [fetch() with value %14]
+ expected: FAIL
+
+ [fetch() with value %15]
+ expected: FAIL
+
+ [fetch() with value %16]
+ expected: FAIL
+
+ [fetch() with value %17]
+ expected: FAIL
+
+
+[header-values-normalize.any.serviceworker.html]
+ expected: ERROR
+
+[header-values-normalize.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/headers/header-values.any.js.ini b/tests/wpt/meta/fetch/api/headers/header-values.any.js.ini
new file mode 100644
index 00000000000..dda65b071ef
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/headers/header-values.any.js.ini
@@ -0,0 +1,18 @@
+[header-values.any.serviceworker.html]
+ expected: ERROR
+
+[header-values.any.sharedworker.html]
+ expected: ERROR
+
+[header-values.any.html]
+ [XMLHttpRequest with all valid values]
+ expected: FAIL
+
+ [fetch() with all valid values]
+ expected: FAIL
+
+
+[header-values.any.worker.html]
+ [fetch() with all valid values]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/api/headers/headers-basic.any.js.ini b/tests/wpt/meta/fetch/api/headers/headers-basic.any.js.ini
new file mode 100644
index 00000000000..96848ef201f
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/headers/headers-basic.any.js.ini
@@ -0,0 +1,9 @@
+[headers-basic.any.worker.html]
+
+[headers-basic.any.serviceworker.html]
+ expected: ERROR
+
+[headers-basic.any.html]
+
+[headers-basic.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/headers/headers-casing.any.js.ini b/tests/wpt/meta/fetch/api/headers/headers-casing.any.js.ini
new file mode 100644
index 00000000000..b8e4731b6e7
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/headers/headers-casing.any.js.ini
@@ -0,0 +1,9 @@
+[headers-casing.any.serviceworker.html]
+ expected: ERROR
+
+[headers-casing.any.html]
+
+[headers-casing.any.worker.html]
+
+[headers-casing.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/headers/headers-combine.any.js.ini b/tests/wpt/meta/fetch/api/headers/headers-combine.any.js.ini
new file mode 100644
index 00000000000..a1f6b1ab565
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/headers/headers-combine.any.js.ini
@@ -0,0 +1,9 @@
+[headers-combine.any.worker.html]
+
+[headers-combine.any.sharedworker.html]
+ expected: ERROR
+
+[headers-combine.any.html]
+
+[headers-combine.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/headers/headers-errors.any.js.ini b/tests/wpt/meta/fetch/api/headers/headers-errors.any.js.ini
new file mode 100644
index 00000000000..180dfb16ba4
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/headers/headers-errors.any.js.ini
@@ -0,0 +1,9 @@
+[headers-errors.any.serviceworker.html]
+ expected: ERROR
+
+[headers-errors.any.html]
+
+[headers-errors.any.worker.html]
+
+[headers-errors.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/headers/headers-no-cors.any.js.ini b/tests/wpt/meta/fetch/api/headers/headers-no-cors.any.js.ini
new file mode 100644
index 00000000000..b02ed0ec7a9
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/headers/headers-no-cors.any.js.ini
@@ -0,0 +1,51 @@
+[headers-no-cors.any.html]
+ ["no-cors" Headers object cannot have accept set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
+ expected: FAIL
+
+ ["no-cors" Headers object cannot have content-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
+ expected: FAIL
+
+ ["no-cors" Headers object cannot have accept-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
+ expected: FAIL
+
+ ["no-cors" Headers object cannot have content-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
+ expected: FAIL
+
+ ["no-cors" Headers object cannot have content-type set to text/plain;ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, text/plain]
+ expected: FAIL
+
+ ["no-cors" Headers object cannot have accept-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
+ expected: FAIL
+
+ ["no-cors" Headers object cannot have accept set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
+ expected: FAIL
+
+
+[headers-no-cors.any.worker.html]
+ ["no-cors" Headers object cannot have accept set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
+ expected: FAIL
+
+ ["no-cors" Headers object cannot have content-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
+ expected: FAIL
+
+ ["no-cors" Headers object cannot have accept-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
+ expected: FAIL
+
+ ["no-cors" Headers object cannot have content-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
+ expected: FAIL
+
+ ["no-cors" Headers object cannot have content-type set to text/plain;ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, text/plain]
+ expected: FAIL
+
+ ["no-cors" Headers object cannot have accept-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
+ expected: FAIL
+
+ ["no-cors" Headers object cannot have accept set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
+ expected: FAIL
+
+
+[headers-no-cors.any.serviceworker.html]
+ expected: ERROR
+
+[headers-no-cors.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/headers/headers-normalize.any.js.ini b/tests/wpt/meta/fetch/api/headers/headers-normalize.any.js.ini
new file mode 100644
index 00000000000..77555d7f864
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/headers/headers-normalize.any.js.ini
@@ -0,0 +1,11 @@
+[headers-normalize.any.worker.html]
+ expected: CRASH
+
+[headers-normalize.any.sharedworker.html]
+ expected: ERROR
+
+[headers-normalize.any.html]
+ expected: CRASH
+
+[headers-normalize.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/headers/headers-record.any.js.ini b/tests/wpt/meta/fetch/api/headers/headers-record.any.js.ini
new file mode 100644
index 00000000000..9d6da6e96c2
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/headers/headers-record.any.js.ini
@@ -0,0 +1,9 @@
+[headers-record.any.serviceworker.html]
+ expected: ERROR
+
+[headers-record.any.sharedworker.html]
+ expected: ERROR
+
+[headers-record.any.worker.html]
+
+[headers-record.any.html]
diff --git a/tests/wpt/meta/fetch/api/headers/headers-structure.any.js.ini b/tests/wpt/meta/fetch/api/headers/headers-structure.any.js.ini
new file mode 100644
index 00000000000..8afab6715e3
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/headers/headers-structure.any.js.ini
@@ -0,0 +1,9 @@
+[headers-structure.any.worker.html]
+
+[headers-structure.any.sharedworker.html]
+ expected: ERROR
+
+[headers-structure.any.html]
+
+[headers-structure.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/idlharness.any.js.ini b/tests/wpt/meta/fetch/api/idlharness.any.js.ini
new file mode 100644
index 00000000000..57faeec7450
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/idlharness.any.js.ini
@@ -0,0 +1,153 @@
+[idlharness.any.worker.html]
+ [Request interface: attribute keepalive]
+ expected: FAIL
+
+ [Request interface: attribute isReloadNavigation]
+ expected: FAIL
+
+ [Request interface: attribute isHistoryNavigation]
+ expected: FAIL
+
+ [Request interface: attribute signal]
+ expected: FAIL
+
+ [Request interface: attribute duplex]
+ expected: FAIL
+
+ [Request interface: operation arrayBuffer()]
+ expected: FAIL
+
+ [Request interface: operation blob()]
+ expected: FAIL
+
+ [Request interface: operation formData()]
+ expected: FAIL
+
+ [Request interface: operation json()]
+ expected: FAIL
+
+ [Request interface: operation text()]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "keepalive" with the proper type]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "isReloadNavigation" with the proper type]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "isHistoryNavigation" with the proper type]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "signal" with the proper type]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "duplex" with the proper type]
+ expected: FAIL
+
+ [Response interface: operation json(any, optional ResponseInit)]
+ expected: FAIL
+
+ [Response interface: operation arrayBuffer()]
+ expected: FAIL
+
+ [Response interface: operation blob()]
+ expected: FAIL
+
+ [Response interface: operation formData()]
+ expected: FAIL
+
+ [Response interface: operation json()]
+ expected: FAIL
+
+ [Response interface: operation text()]
+ expected: FAIL
+
+ [Response interface: calling json(any, optional ResponseInit) on new Response() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: operation fetch(RequestInfo, optional RequestInit)]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: calling fetch(RequestInfo, optional RequestInit) on self with too few arguments must throw TypeError]
+ expected: FAIL
+
+
+[idlharness.any.sharedworker.html]
+ expected: ERROR
+
+[idlharness.any.html]
+ [Request interface: attribute keepalive]
+ expected: FAIL
+
+ [Request interface: attribute isReloadNavigation]
+ expected: FAIL
+
+ [Request interface: attribute isHistoryNavigation]
+ expected: FAIL
+
+ [Request interface: attribute signal]
+ expected: FAIL
+
+ [Request interface: attribute duplex]
+ expected: FAIL
+
+ [Request interface: operation arrayBuffer()]
+ expected: FAIL
+
+ [Request interface: operation blob()]
+ expected: FAIL
+
+ [Request interface: operation formData()]
+ expected: FAIL
+
+ [Request interface: operation json()]
+ expected: FAIL
+
+ [Request interface: operation text()]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "keepalive" with the proper type]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "isReloadNavigation" with the proper type]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "isHistoryNavigation" with the proper type]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "signal" with the proper type]
+ expected: FAIL
+
+ [Request interface: new Request('about:blank') must inherit property "duplex" with the proper type]
+ expected: FAIL
+
+ [Response interface: operation json(any, optional ResponseInit)]
+ expected: FAIL
+
+ [Response interface: operation arrayBuffer()]
+ expected: FAIL
+
+ [Response interface: operation blob()]
+ expected: FAIL
+
+ [Response interface: operation formData()]
+ expected: FAIL
+
+ [Response interface: operation json()]
+ expected: FAIL
+
+ [Response interface: operation text()]
+ expected: FAIL
+
+ [Response interface: calling json(any, optional ResponseInit) on new Response() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: operation fetch(RequestInfo, optional RequestInit)]
+ expected: FAIL
+
+ [Window interface: calling fetch(RequestInfo, optional RequestInit) on window with too few arguments must throw TypeError]
+ expected: FAIL
+
+
+[idlharness.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/redirect/redirect-back-to-original-origin.any.js.ini b/tests/wpt/meta/fetch/api/redirect/redirect-back-to-original-origin.any.js.ini
new file mode 100644
index 00000000000..0225b01c4b2
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/redirect/redirect-back-to-original-origin.any.js.ini
@@ -0,0 +1,15 @@
+[redirect-back-to-original-origin.any.html]
+ [original => remote => original with mode: "no-cors"]
+ expected: FAIL
+
+
+[redirect-back-to-original-origin.any.worker.html]
+ [original => remote => original with mode: "no-cors"]
+ expected: FAIL
+
+
+[redirect-back-to-original-origin.any.serviceworker.html]
+ expected: ERROR
+
+[redirect-back-to-original-origin.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/redirect/redirect-count.any.js.ini b/tests/wpt/meta/fetch/api/redirect/redirect-count.any.js.ini
new file mode 100644
index 00000000000..7aac80c78ad
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/redirect/redirect-count.any.js.ini
@@ -0,0 +1,9 @@
+[redirect-count.any.worker.html]
+
+[redirect-count.any.sharedworker.html]
+ expected: ERROR
+
+[redirect-count.any.html]
+
+[redirect-count.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/redirect/redirect-empty-location.any.js.ini b/tests/wpt/meta/fetch/api/redirect/redirect-empty-location.any.js.ini
new file mode 100644
index 00000000000..c6c6e5b2914
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/redirect/redirect-empty-location.any.js.ini
@@ -0,0 +1,9 @@
+[redirect-empty-location.any.serviceworker.html]
+ expected: ERROR
+
+[redirect-empty-location.any.html]
+
+[redirect-empty-location.any.worker.html]
+
+[redirect-empty-location.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/redirect/redirect-keepalive.any.js.ini b/tests/wpt/meta/fetch/api/redirect/redirect-keepalive.any.js.ini
new file mode 100644
index 00000000000..73c79c76452
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/redirect/redirect-keepalive.any.js.ini
@@ -0,0 +1,12 @@
+[redirect-keepalive.any.html]
+ [[keepalive\][new window\][unload\] same-origin redirect]
+ expected: FAIL
+
+ [[keepalive\][new window\][unload\] same-origin redirect + preflight]
+ expected: FAIL
+
+ [[keepalive\][new window\][unload\] cross-origin redirect]
+ expected: FAIL
+
+ [[keepalive\][new window\][unload\] cross-origin redirect + preflight]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/api/redirect/redirect-location-escape.tentative.any.js.ini b/tests/wpt/meta/fetch/api/redirect/redirect-location-escape.tentative.any.js.ini
new file mode 100644
index 00000000000..9b8c11b77a9
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/redirect/redirect-location-escape.tentative.any.js.ini
@@ -0,0 +1,33 @@
+[redirect-location-escape.tentative.any.serviceworker.html]
+ expected: ERROR
+
+[redirect-location-escape.tentative.any.sharedworker.html]
+ expected: ERROR
+
+[redirect-location-escape.tentative.any.html]
+ [Redirect to invalid UTF-8]
+ expected: FAIL
+
+ [Redirect to unescaped UTF-8]
+ expected: FAIL
+
+ [Escaping produces double-percent]
+ expected: FAIL
+
+ [Redirect to escaped and unescaped UTF-8]
+ expected: FAIL
+
+
+[redirect-location-escape.tentative.any.worker.html]
+ [Redirect to invalid UTF-8]
+ expected: FAIL
+
+ [Redirect to unescaped UTF-8]
+ expected: FAIL
+
+ [Escaping produces double-percent]
+ expected: FAIL
+
+ [Redirect to escaped and unescaped UTF-8]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/api/redirect/redirect-location.any.js.ini b/tests/wpt/meta/fetch/api/redirect/redirect-location.any.js.ini
new file mode 100644
index 00000000000..01a5978aa2b
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/redirect/redirect-location.any.js.ini
@@ -0,0 +1,9 @@
+[redirect-location.any.serviceworker.html]
+ expected: ERROR
+
+[redirect-location.any.sharedworker.html]
+ expected: ERROR
+
+[redirect-location.any.worker.html]
+
+[redirect-location.any.html]
diff --git a/tests/wpt/meta/fetch/api/redirect/redirect-method.any.js.ini b/tests/wpt/meta/fetch/api/redirect/redirect-method.any.js.ini
new file mode 100644
index 00000000000..f2769d07330
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/redirect/redirect-method.any.js.ini
@@ -0,0 +1,9 @@
+[redirect-method.any.serviceworker.html]
+ expected: ERROR
+
+[redirect-method.any.sharedworker.html]
+ expected: ERROR
+
+[redirect-method.any.html]
+
+[redirect-method.any.worker.html]
diff --git a/tests/wpt/meta/fetch/api/redirect/redirect-origin.any.js.ini b/tests/wpt/meta/fetch/api/redirect/redirect-origin.any.js.ini
new file mode 100644
index 00000000000..6d98a194eb7
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/redirect/redirect-origin.any.js.ini
@@ -0,0 +1,14 @@
+[redirect-origin.any.worker.html]
+ [[POST\] Redirect 307 Same origin to same origin]
+ expected: FAIL
+
+ [[POST\] Redirect 308 Same origin to same origin]
+ expected: FAIL
+
+
+[redirect-origin.any.html]
+ [[POST\] Redirect 307 Same origin to same origin]
+ expected: FAIL
+
+ [[POST\] Redirect 308 Same origin to same origin]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/api/redirect/redirect-schemes.any.js.ini b/tests/wpt/meta/fetch/api/redirect/redirect-schemes.any.js.ini
new file mode 100644
index 00000000000..11914e5d4c4
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/redirect/redirect-schemes.any.js.ini
@@ -0,0 +1,9 @@
+[redirect-schemes.any.sharedworker.html]
+ expected: ERROR
+
+[redirect-schemes.any.worker.html]
+
+[redirect-schemes.any.serviceworker.html]
+ expected: ERROR
+
+[redirect-schemes.any.html]
diff --git a/tests/wpt/meta/fetch/api/redirect/redirect-to-dataurl.any.js.ini b/tests/wpt/meta/fetch/api/redirect/redirect-to-dataurl.any.js.ini
new file mode 100644
index 00000000000..e748a11ffca
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/redirect/redirect-to-dataurl.any.js.ini
@@ -0,0 +1,9 @@
+[redirect-to-dataurl.any.serviceworker.html]
+ expected: ERROR
+
+[redirect-to-dataurl.any.sharedworker.html]
+ expected: ERROR
+
+[redirect-to-dataurl.any.html]
+
+[redirect-to-dataurl.any.worker.html]
diff --git a/tests/wpt/meta/fetch/api/redirect/redirect-upload.h2.any.js.ini b/tests/wpt/meta/fetch/api/redirect/redirect-upload.h2.any.js.ini
new file mode 100644
index 00000000000..9329ae40654
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/redirect/redirect-upload.h2.any.js.ini
@@ -0,0 +1,10 @@
+[redirect-upload.h2.any.sharedworker.html]
+ expected: ERROR
+
+[redirect-upload.h2.any.html]
+ expected: TIMEOUT
+
+[redirect-upload.h2.any.serviceworker.html]
+ expected: ERROR
+
+[redirect-upload.h2.any.worker.html]
diff --git a/tests/wpt/meta/fetch/api/request/destination/fetch-destination.https.html.ini b/tests/wpt/meta/fetch/api/request/destination/fetch-destination.https.html.ini
new file mode 100644
index 00000000000..5c6250e61b8
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/destination/fetch-destination.https.html.ini
@@ -0,0 +1,79 @@
+[fetch-destination.https.html]
+ [HTMLVideoElement fetches with a "video" Request.destination]
+ expected: FAIL
+
+ [HTMLLinkElement with rel=preload and as=video fetches with a "video" Request.destination]
+ expected: FAIL
+
+ [HTMLLinkElement with rel=preload and as=script fetches with a "script" Request.destination]
+ expected: FAIL
+
+ [HTMLLinkElement with rel=preload and as=sharedworker fetches with a "sharedworker" Request.destination]
+ expected: FAIL
+
+ [HTMLLinkElement with rel=preload and as=manifest fetches with a "manifest" Request.destination]
+ expected: FAIL
+
+ [HTMLImageElement with srcset attribute fetches with an "image" Request.destination]
+ expected: FAIL
+
+ [SVGImageElement fetches with an "image" Request.destination]
+ expected: FAIL
+
+ [HTMLAudioElement fetches with an "audio" Request.destination]
+ expected: FAIL
+
+ [HTMLScriptElement fetches with a "script" Request.destination]
+ expected: FAIL
+
+ [HTMLLinkElement with rel=preload and as=audio fetches with a "audio" Request.destination]
+ expected: FAIL
+
+ [HTMLImageElement with a HTMLPictureElement parent attribute fetches with an "image" Request.destination]
+ expected: FAIL
+
+ [HTMLLinkElement with rel=preload and as=document fetches with a "document" Request.destination]
+ expected: FAIL
+
+ [HTMLLinkElement with rel=stylesheet fetches with a "style" Request.destination]
+ expected: FAIL
+
+ [HTMLImageElement fetches with an "image" Request.destination]
+ expected: FAIL
+
+ [HTMLLinkElement with rel=preload and as=style fetches with a "style" Request.destination]
+ expected: FAIL
+
+ [XMLHttpRequest() fetches with an empty string Request.destination]
+ expected: FAIL
+
+ [EventSource() fetches with an empty string Request.destination]
+ expected: FAIL
+
+ [HTMLLinkElement with rel=preload and as=fetch fetches with an empty string Request.destination]
+ expected: FAIL
+
+ [HTMLLinkElement with rel=preload and as=font fetches with a "font" Request.destination]
+ expected: FAIL
+
+ [HTMLLinkElement with rel=preload and as=xslt fetches with a "xslt" Request.destination]
+ expected: FAIL
+
+ [Initialize global state]
+ expected: FAIL
+
+ [HTMLLinkElement with rel=preload and as=track fetches with a "track" Request.destination]
+ expected: FAIL
+
+ [fetch() fetches with an empty string Request.destination]
+ expected: FAIL
+
+ [HTMLLinkElement with rel=preload and as=image fetches with a "image" Request.destination]
+ expected: FAIL
+
+ [AudioWorklet module fetches with a "audioworklet" Request.destination]
+ expected: FAIL
+
+ [HTMLLinkElement with rel=preload and as=worker fetches with a "worker" Request.destination]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/api/request/forbidden-method.any.js.ini b/tests/wpt/meta/fetch/api/request/forbidden-method.any.js.ini
new file mode 100644
index 00000000000..1f45d6a6529
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/forbidden-method.any.js.ini
@@ -0,0 +1,9 @@
+[forbidden-method.any.sharedworker.html]
+ expected: ERROR
+
+[forbidden-method.any.serviceworker.html]
+ expected: ERROR
+
+[forbidden-method.any.worker.html]
+
+[forbidden-method.any.html]
diff --git a/tests/wpt/meta/fetch/api/request/request-bad-port.any.js.ini b/tests/wpt/meta/fetch/api/request/request-bad-port.any.js.ini
new file mode 100644
index 00000000000..a3b10d843c8
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-bad-port.any.js.ini
@@ -0,0 +1,137 @@
+[request-bad-port.any.serviceworker.html]
+ expected: ERROR
+
+[request-bad-port.any.html]
+ expected: TIMEOUT
+ [Request on bad port 6697 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 3659 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 4045 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 1720 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 6665 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 6000 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 1723 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 6666 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 6667 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 6668 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 6669 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 2049 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 5061 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 5060 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 989 should throw TypeError.]
+ expected: TIMEOUT
+
+ [Request on bad port 990 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 993 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 995 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 1719 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 6566 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 10080 should throw TypeError.]
+ expected: NOTRUN
+
+
+[request-bad-port.any.worker.html]
+ expected: TIMEOUT
+ [Request on bad port 6697 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 3659 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 4045 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 1720 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 6665 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 6000 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 1723 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 6666 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 6667 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 6668 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 6669 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 2049 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 5061 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 5060 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 989 should throw TypeError.]
+ expected: TIMEOUT
+
+ [Request on bad port 990 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 993 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 995 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 1719 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 6566 should throw TypeError.]
+ expected: NOTRUN
+
+ [Request on bad port 10080 should throw TypeError.]
+ expected: NOTRUN
+
+
+[request-bad-port.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/request/request-cache-default-conditional.any.js.ini b/tests/wpt/meta/fetch/api/request/request-cache-default-conditional.any.js.ini
new file mode 100644
index 00000000000..8dc784e0732
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-cache-default-conditional.any.js.ini
@@ -0,0 +1,9 @@
+[request-cache-default-conditional.any.sharedworker.html]
+ expected: ERROR
+
+[request-cache-default-conditional.any.html]
+
+[request-cache-default-conditional.any.serviceworker.html]
+ expected: ERROR
+
+[request-cache-default-conditional.any.worker.html]
diff --git a/tests/wpt/meta/fetch/api/request/request-cache-default.any.js.ini b/tests/wpt/meta/fetch/api/request/request-cache-default.any.js.ini
new file mode 100644
index 00000000000..341170c9787
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-cache-default.any.js.ini
@@ -0,0 +1,9 @@
+[request-cache-default.any.worker.html]
+
+[request-cache-default.any.serviceworker.html]
+ expected: ERROR
+
+[request-cache-default.any.html]
+
+[request-cache-default.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/request/request-cache-force-cache.any.js.ini b/tests/wpt/meta/fetch/api/request/request-cache-force-cache.any.js.ini
new file mode 100644
index 00000000000..b31ccadfc07
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-cache-force-cache.any.js.ini
@@ -0,0 +1,9 @@
+[request-cache-force-cache.any.sharedworker.html]
+ expected: ERROR
+
+[request-cache-force-cache.any.html]
+
+[request-cache-force-cache.any.serviceworker.html]
+ expected: ERROR
+
+[request-cache-force-cache.any.worker.html]
diff --git a/tests/wpt/meta/fetch/api/request/request-cache-no-cache.any.js.ini b/tests/wpt/meta/fetch/api/request/request-cache-no-cache.any.js.ini
new file mode 100644
index 00000000000..9807d4ab3b4
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-cache-no-cache.any.js.ini
@@ -0,0 +1,9 @@
+[request-cache-no-cache.any.serviceworker.html]
+ expected: ERROR
+
+[request-cache-no-cache.any.sharedworker.html]
+ expected: ERROR
+
+[request-cache-no-cache.any.worker.html]
+
+[request-cache-no-cache.any.html]
diff --git a/tests/wpt/meta/fetch/api/request/request-cache-no-store.any.js.ini b/tests/wpt/meta/fetch/api/request/request-cache-no-store.any.js.ini
new file mode 100644
index 00000000000..b99584e18fb
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-cache-no-store.any.js.ini
@@ -0,0 +1,9 @@
+[request-cache-no-store.any.sharedworker.html]
+ expected: ERROR
+
+[request-cache-no-store.any.worker.html]
+
+[request-cache-no-store.any.html]
+
+[request-cache-no-store.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/request/request-cache-only-if-cached.any.js.ini b/tests/wpt/meta/fetch/api/request/request-cache-only-if-cached.any.js.ini
new file mode 100644
index 00000000000..1e66b16366c
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-cache-only-if-cached.any.js.ini
@@ -0,0 +1,6 @@
+[request-cache-only-if-cached.any.worker.html]
+
+[request-cache-only-if-cached.any.sharedworker.html]
+ expected: ERROR
+
+[request-cache-only-if-cached.any.html]
diff --git a/tests/wpt/meta/fetch/api/request/request-cache-reload.any.js.ini b/tests/wpt/meta/fetch/api/request/request-cache-reload.any.js.ini
new file mode 100644
index 00000000000..717ac51506f
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-cache-reload.any.js.ini
@@ -0,0 +1,9 @@
+[request-cache-reload.any.html]
+
+[request-cache-reload.any.serviceworker.html]
+ expected: ERROR
+
+[request-cache-reload.any.sharedworker.html]
+ expected: ERROR
+
+[request-cache-reload.any.worker.html]
diff --git a/tests/wpt/meta/fetch/api/request/request-consume-empty.any.js.ini b/tests/wpt/meta/fetch/api/request/request-consume-empty.any.js.ini
new file mode 100644
index 00000000000..9515ab943b1
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-consume-empty.any.js.ini
@@ -0,0 +1,15 @@
+[request-consume-empty.any.sharedworker.html]
+ expected: ERROR
+
+[request-consume-empty.any.worker.html]
+ [Consume empty FormData request body as text]
+ expected: FAIL
+
+
+[request-consume-empty.any.serviceworker.html]
+ expected: ERROR
+
+[request-consume-empty.any.html]
+ [Consume empty FormData request body as text]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/api/request/request-consume.any.js.ini b/tests/wpt/meta/fetch/api/request/request-consume.any.js.ini
new file mode 100644
index 00000000000..24f7b9a642f
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-consume.any.js.ini
@@ -0,0 +1,15 @@
+[request-consume.any.html]
+ [Consume FormData request's body as FormData]
+ expected: FAIL
+
+
+[request-consume.any.worker.html]
+ [Consume FormData request's body as FormData]
+ expected: FAIL
+
+
+[request-consume.any.serviceworker.html]
+ expected: ERROR
+
+[request-consume.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/request/request-disturbed.any.js.ini b/tests/wpt/meta/fetch/api/request/request-disturbed.any.js.ini
new file mode 100644
index 00000000000..4dba35d628c
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-disturbed.any.js.ini
@@ -0,0 +1,33 @@
+[request-disturbed.any.worker.html]
+ [Input request used for creating new request became disturbed even if body is not used]
+ expected: FAIL
+
+ [Check creating a new request with a new body from a disturbed request]
+ expected: FAIL
+
+ [Request construction failure should not set "bodyUsed"]
+ expected: FAIL
+
+ [Input request used for creating new request became disturbed]
+ expected: FAIL
+
+
+[request-disturbed.any.serviceworker.html]
+ expected: ERROR
+
+[request-disturbed.any.html]
+ [Input request used for creating new request became disturbed even if body is not used]
+ expected: FAIL
+
+ [Check creating a new request with a new body from a disturbed request]
+ expected: FAIL
+
+ [Request construction failure should not set "bodyUsed"]
+ expected: FAIL
+
+ [Input request used for creating new request became disturbed]
+ expected: FAIL
+
+
+[request-disturbed.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/request/request-error.any.js.ini b/tests/wpt/meta/fetch/api/request/request-error.any.js.ini
new file mode 100644
index 00000000000..f5cb9ddf34b
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-error.any.js.ini
@@ -0,0 +1,9 @@
+[request-error.any.worker.html]
+
+[request-error.any.serviceworker.html]
+ expected: ERROR
+
+[request-error.any.html]
+
+[request-error.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/request/request-headers.any.js.ini b/tests/wpt/meta/fetch/api/request/request-headers.any.js.ini
new file mode 100644
index 00000000000..2e9dbd2cf7e
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-headers.any.js.ini
@@ -0,0 +1,21 @@
+[request-headers.any.html]
+ [Adding invalid request header "Set-Cookie: KO"]
+ expected: FAIL
+
+ [Adding invalid request header "Access-Control-Request-Private-Network: KO"]
+ expected: FAIL
+
+
+[request-headers.any.worker.html]
+ [Adding invalid request header "Set-Cookie: KO"]
+ expected: FAIL
+
+ [Adding invalid request header "Access-Control-Request-Private-Network: KO"]
+ expected: FAIL
+
+
+[request-headers.any.serviceworker.html]
+ expected: ERROR
+
+[request-headers.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/request/request-init-002.any.js.ini b/tests/wpt/meta/fetch/api/request/request-init-002.any.js.ini
new file mode 100644
index 00000000000..73209ae2b0e
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-init-002.any.js.ini
@@ -0,0 +1,9 @@
+[request-init-002.any.worker.html]
+
+[request-init-002.any.sharedworker.html]
+ expected: ERROR
+
+[request-init-002.any.serviceworker.html]
+ expected: ERROR
+
+[request-init-002.any.html]
diff --git a/tests/wpt/meta/fetch/api/request/request-init-contenttype.any.js.ini b/tests/wpt/meta/fetch/api/request/request-init-contenttype.any.js.ini
new file mode 100644
index 00000000000..b1565a4387a
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-init-contenttype.any.js.ini
@@ -0,0 +1,8 @@
+[request-init-contenttype.any.worker.html]
+ [Default Content-Type for Request with FormData body]
+ expected: FAIL
+
+
+[request-init-contenttype.any.html]
+ [Default Content-Type for Request with FormData body]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/api/request/request-init-stream.any.js.ini b/tests/wpt/meta/fetch/api/request/request-init-stream.any.js.ini
new file mode 100644
index 00000000000..45b3690b4b5
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-init-stream.any.js.ini
@@ -0,0 +1,63 @@
+[request-init-stream.any.sharedworker.html]
+ expected: ERROR
+
+[request-init-stream.any.worker.html]
+ [Constructing a Request with a Request on which body.getReader() is called]
+ expected: FAIL
+
+ [Constructing a Request with a Request on which body.getReader().read() is called]
+ expected: FAIL
+
+ [Constructing a Request with a Request on which read() and releaseLock() are called]
+ expected: FAIL
+
+ [It is error to omit .duplex when the body is a ReadableStream.]
+ expected: FAIL
+
+ [It is error to set .duplex = 'full' when the body is null.]
+ expected: FAIL
+
+ [It is error to set .duplex = 'full' when the body is a string.]
+ expected: FAIL
+
+ [It is error to set .duplex = 'full' when the body is a Uint8Array.]
+ expected: FAIL
+
+ [It is error to set .duplex = 'full' when the body is a Blob.]
+ expected: FAIL
+
+ [It is error to set .duplex = 'full' when the body is a ReadableStream.]
+ expected: FAIL
+
+
+[request-init-stream.any.html]
+ [Constructing a Request with a Request on which body.getReader() is called]
+ expected: FAIL
+
+ [Constructing a Request with a Request on which body.getReader().read() is called]
+ expected: FAIL
+
+ [Constructing a Request with a Request on which read() and releaseLock() are called]
+ expected: FAIL
+
+ [It is error to omit .duplex when the body is a ReadableStream.]
+ expected: FAIL
+
+ [It is error to set .duplex = 'full' when the body is null.]
+ expected: FAIL
+
+ [It is error to set .duplex = 'full' when the body is a string.]
+ expected: FAIL
+
+ [It is error to set .duplex = 'full' when the body is a Uint8Array.]
+ expected: FAIL
+
+ [It is error to set .duplex = 'full' when the body is a Blob.]
+ expected: FAIL
+
+ [It is error to set .duplex = 'full' when the body is a ReadableStream.]
+ expected: FAIL
+
+
+[request-init-stream.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/request/request-keepalive.any.js.ini b/tests/wpt/meta/fetch/api/request/request-keepalive.any.js.ini
new file mode 100644
index 00000000000..190ad96ddba
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-keepalive.any.js.ini
@@ -0,0 +1,21 @@
+[request-keepalive.any.sharedworker.html]
+ expected: ERROR
+
+[request-keepalive.any.worker.html]
+ [keepalive flag with stream body]
+ expected: FAIL
+
+ [keepalive flag]
+ expected: FAIL
+
+
+[request-keepalive.any.serviceworker.html]
+ expected: ERROR
+
+[request-keepalive.any.html]
+ [keepalive flag with stream body]
+ expected: FAIL
+
+ [keepalive flag]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/api/request/request-structure.any.js.ini b/tests/wpt/meta/fetch/api/request/request-structure.any.js.ini
new file mode 100644
index 00000000000..b1a3ce85531
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-structure.any.js.ini
@@ -0,0 +1,27 @@
+[request-structure.any.worker.html]
+ [Check isReloadNavigation attribute]
+ expected: FAIL
+
+ [Check isHistoryNavigation attribute]
+ expected: FAIL
+
+ [Check duplex attribute]
+ expected: FAIL
+
+
+[request-structure.any.sharedworker.html]
+ expected: ERROR
+
+[request-structure.any.html]
+ [Check isReloadNavigation attribute]
+ expected: FAIL
+
+ [Check isHistoryNavigation attribute]
+ expected: FAIL
+
+ [Check duplex attribute]
+ expected: FAIL
+
+
+[request-structure.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/request/request-structure.html.ini b/tests/wpt/meta/fetch/api/request/request-structure.html.ini
new file mode 100644
index 00000000000..d90b69a1a99
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/request/request-structure.html.ini
@@ -0,0 +1,7 @@
+[request-structure.html]
+ [Check isReloadNavigation attribute]
+ expected: FAIL
+
+ [Check isHistoryNavigation attribute]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/api/response/json.any.js.ini b/tests/wpt/meta/fetch/api/response/json.any.js.ini
new file mode 100644
index 00000000000..180ef859b33
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/json.any.js.ini
@@ -0,0 +1,8 @@
+[json.any.worker.html]
+ [Ensure the correct JSON parser is used]
+ expected: FAIL
+
+
+[json.any.html]
+ [Ensure the correct JSON parser is used]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/api/response/response-cancel-stream.any.js.ini b/tests/wpt/meta/fetch/api/response/response-cancel-stream.any.js.ini
new file mode 100644
index 00000000000..dad88086a82
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-cancel-stream.any.js.ini
@@ -0,0 +1,9 @@
+[response-cancel-stream.any.sharedworker.html]
+ expected: ERROR
+
+[response-cancel-stream.any.html]
+
+[response-cancel-stream.any.serviceworker.html]
+ expected: ERROR
+
+[response-cancel-stream.any.worker.html]
diff --git a/tests/wpt/meta/fetch/api/response/response-clone.any.js.ini b/tests/wpt/meta/fetch/api/response/response-clone.any.js.ini
new file mode 100644
index 00000000000..2378d61f274
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-clone.any.js.ini
@@ -0,0 +1,104 @@
+[response-clone.any.sharedworker.html]
+ expected: ERROR
+
+[response-clone.any.html]
+ [Check cloned response's body]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Uint8ClampedArraychunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Float32Arraychunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Float64Arraychunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Uint16Arraychunk)]
+ expected: FAIL
+
+ [Cancelling stream should not affect cloned one]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Int8Arraychunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (ArrayBufferchunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Int32Arraychunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (DataViewchunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Uint32Arraychunk)]
+ expected: FAIL
+
+ [Cloned responses should provide the same data]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Int16Arraychunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Uint8Arraychunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (BigInt64Arraychunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (BigUint64Arraychunk)]
+ expected: FAIL
+
+
+[response-clone.any.serviceworker.html]
+ expected: ERROR
+
+[response-clone.any.worker.html]
+ [Check cloned response's body]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Uint8ClampedArraychunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Float32Arraychunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Float64Arraychunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Uint16Arraychunk)]
+ expected: FAIL
+
+ [Cancelling stream should not affect cloned one]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Int8Arraychunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (ArrayBufferchunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Int32Arraychunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (DataViewchunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Uint32Arraychunk)]
+ expected: FAIL
+
+ [Cloned responses should provide the same data]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Int16Arraychunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (Uint8Arraychunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (BigInt64Arraychunk)]
+ expected: FAIL
+
+ [Check response clone use structureClone for teed ReadableStreams (BigUint64Arraychunk)]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/api/response/response-consume-empty.any.js.ini b/tests/wpt/meta/fetch/api/response/response-consume-empty.any.js.ini
new file mode 100644
index 00000000000..1e555d38f07
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-consume-empty.any.js.ini
@@ -0,0 +1,56 @@
+[response-consume-empty.any.serviceworker.html]
+ expected: ERROR
+
+[response-consume-empty.any.sharedworker.html]
+ expected: ERROR
+
+[response-consume-empty.any.worker.html]
+ [Consume response's body as text]
+ expected: FAIL
+
+ [Consume response's body as json (error case)]
+ expected: FAIL
+
+ [Consume response's body as blob]
+ expected: FAIL
+
+ [Consume response's body as formData without correct type (error case)]
+ expected: FAIL
+
+ [Consume response's body as arrayBuffer]
+ expected: FAIL
+
+ [Consume empty FormData response body as text]
+ expected: FAIL
+
+ [Consume response's body as formData with correct multipart type (error case)]
+ expected: FAIL
+
+ [Consume response's body as formData with correct urlencoded type]
+ expected: FAIL
+
+
+[response-consume-empty.any.html]
+ [Consume response's body as text]
+ expected: FAIL
+
+ [Consume response's body as json (error case)]
+ expected: FAIL
+
+ [Consume response's body as blob]
+ expected: FAIL
+
+ [Consume response's body as formData without correct type (error case)]
+ expected: FAIL
+
+ [Consume response's body as arrayBuffer]
+ expected: FAIL
+
+ [Consume empty FormData response body as text]
+ expected: FAIL
+
+ [Consume response's body as formData with correct multipart type (error case)]
+ expected: FAIL
+
+ [Consume response's body as formData with correct urlencoded type]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/api/response/response-consume-stream.any.js.ini b/tests/wpt/meta/fetch/api/response/response-consume-stream.any.js.ini
new file mode 100644
index 00000000000..42af2917b41
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-consume-stream.any.js.ini
@@ -0,0 +1,21 @@
+[response-consume-stream.any.serviceworker.html]
+ expected: ERROR
+
+[response-consume-stream.any.html]
+ [Getting a redirect Response stream]
+ expected: FAIL
+
+ [Getting an error Response stream]
+ expected: FAIL
+
+
+[response-consume-stream.any.worker.html]
+ [Getting a redirect Response stream]
+ expected: FAIL
+
+ [Getting an error Response stream]
+ expected: FAIL
+
+
+[response-consume-stream.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/response/response-error-from-stream.any.js.ini b/tests/wpt/meta/fetch/api/response/response-error-from-stream.any.js.ini
new file mode 100644
index 00000000000..db1345716bb
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-error-from-stream.any.js.ini
@@ -0,0 +1,10 @@
+[response-error-from-stream.any.worker.html]
+
+[response-error-from-stream.any.serviceworker.html]
+ expected: ERROR
+
+[response-error-from-stream.any.html]
+ expected: ERROR
+
+[response-error-from-stream.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/response/response-error.any.js.ini b/tests/wpt/meta/fetch/api/response/response-error.any.js.ini
new file mode 100644
index 00000000000..0dced9eb35a
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-error.any.js.ini
@@ -0,0 +1,9 @@
+[response-error.any.html]
+
+[response-error.any.worker.html]
+
+[response-error.any.serviceworker.html]
+ expected: ERROR
+
+[response-error.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/response/response-init-001.any.js.ini b/tests/wpt/meta/fetch/api/response/response-init-001.any.js.ini
new file mode 100644
index 00000000000..c36975d4452
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-init-001.any.js.ini
@@ -0,0 +1,15 @@
+[response-init-001.any.serviceworker.html]
+ expected: ERROR
+
+[response-init-001.any.sharedworker.html]
+ expected: ERROR
+
+[response-init-001.any.html]
+ [Check default value for body attribute]
+ expected: FAIL
+
+
+[response-init-001.any.worker.html]
+ [Check default value for body attribute]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/api/response/response-init-002.any.js.ini b/tests/wpt/meta/fetch/api/response/response-init-002.any.js.ini
new file mode 100644
index 00000000000..4aba6dd6aba
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-init-002.any.js.ini
@@ -0,0 +1,15 @@
+[response-init-002.any.serviceworker.html]
+ expected: ERROR
+
+[response-init-002.any.sharedworker.html]
+ expected: ERROR
+
+[response-init-002.any.worker.html]
+ [Testing null Response body]
+ expected: FAIL
+
+
+[response-init-002.any.html]
+ [Testing null Response body]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/api/response/response-init-contenttype.any.js.ini b/tests/wpt/meta/fetch/api/response/response-init-contenttype.any.js.ini
new file mode 100644
index 00000000000..e33088cb4f4
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-init-contenttype.any.js.ini
@@ -0,0 +1,8 @@
+[response-init-contenttype.any.worker.html]
+ [Default Content-Type for Response with FormData body]
+ expected: FAIL
+
+
+[response-init-contenttype.any.html]
+ [Default Content-Type for Response with FormData body]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/api/response/response-static-error.any.js.ini b/tests/wpt/meta/fetch/api/response/response-static-error.any.js.ini
new file mode 100644
index 00000000000..191ccee2418
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-static-error.any.js.ini
@@ -0,0 +1,15 @@
+[response-static-error.any.serviceworker.html]
+ expected: ERROR
+
+[response-static-error.any.sharedworker.html]
+ expected: ERROR
+
+[response-static-error.any.worker.html]
+ [Check response returned by static method error()]
+ expected: FAIL
+
+
+[response-static-error.any.html]
+ [Check response returned by static method error()]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/api/response/response-static-json.any.js.ini b/tests/wpt/meta/fetch/api/response/response-static-json.any.js.ini
new file mode 100644
index 00000000000..ed4bc41366a
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-static-json.any.js.ini
@@ -0,0 +1,57 @@
+[response-static-json.any.worker.html]
+ [Check response returned by static json() with init undefined]
+ expected: FAIL
+
+ [Check response returned by static json() with init {"status":400}]
+ expected: FAIL
+
+ [Check response returned by static json() with init {"statusText":"foo"}]
+ expected: FAIL
+
+ [Check response returned by static json() with init {"headers":{}}]
+ expected: FAIL
+
+ [Check response returned by static json() with init {"headers":{"content-type":"foo/bar"}}]
+ expected: FAIL
+
+ [Check response returned by static json() with init {"headers":{"x-foo":"bar"}}]
+ expected: FAIL
+
+ [Check static json() encodes JSON objects correctly]
+ expected: FAIL
+
+ [Check static json() propagates JSON serializer errors]
+ expected: FAIL
+
+
+[response-static-json.any.html]
+ [Check response returned by static json() with init undefined]
+ expected: FAIL
+
+ [Check response returned by static json() with init {"status":400}]
+ expected: FAIL
+
+ [Check response returned by static json() with init {"statusText":"foo"}]
+ expected: FAIL
+
+ [Check response returned by static json() with init {"headers":{}}]
+ expected: FAIL
+
+ [Check response returned by static json() with init {"headers":{"content-type":"foo/bar"}}]
+ expected: FAIL
+
+ [Check response returned by static json() with init {"headers":{"x-foo":"bar"}}]
+ expected: FAIL
+
+ [Check static json() encodes JSON objects correctly]
+ expected: FAIL
+
+ [Check static json() propagates JSON serializer errors]
+ expected: FAIL
+
+
+[response-static-json.any.sharedworker.html]
+ expected: ERROR
+
+[response-static-json.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/response/response-static-redirect.any.js.ini b/tests/wpt/meta/fetch/api/response/response-static-redirect.any.js.ini
new file mode 100644
index 00000000000..ace7bffe058
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-static-redirect.any.js.ini
@@ -0,0 +1,9 @@
+[response-static-redirect.any.html]
+
+[response-static-redirect.any.worker.html]
+
+[response-static-redirect.any.sharedworker.html]
+ expected: ERROR
+
+[response-static-redirect.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/response/response-stream-bad-chunk.any.js.ini b/tests/wpt/meta/fetch/api/response/response-stream-bad-chunk.any.js.ini
new file mode 100644
index 00000000000..d74b62617ec
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-stream-bad-chunk.any.js.ini
@@ -0,0 +1,9 @@
+[response-stream-bad-chunk.any.sharedworker.html]
+ expected: ERROR
+
+[response-stream-bad-chunk.any.html]
+
+[response-stream-bad-chunk.any.worker.html]
+
+[response-stream-bad-chunk.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/response/response-stream-disturbed-1.any.js.ini b/tests/wpt/meta/fetch/api/response/response-stream-disturbed-1.any.js.ini
new file mode 100644
index 00000000000..b35390873a1
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-stream-disturbed-1.any.js.ini
@@ -0,0 +1,9 @@
+[response-stream-disturbed-1.any.worker.html]
+
+[response-stream-disturbed-1.any.sharedworker.html]
+ expected: ERROR
+
+[response-stream-disturbed-1.any.serviceworker.html]
+ expected: ERROR
+
+[response-stream-disturbed-1.any.html]
diff --git a/tests/wpt/meta/fetch/api/response/response-stream-disturbed-2.any.js.ini b/tests/wpt/meta/fetch/api/response/response-stream-disturbed-2.any.js.ini
new file mode 100644
index 00000000000..7f97de9e44e
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-stream-disturbed-2.any.js.ini
@@ -0,0 +1,9 @@
+[response-stream-disturbed-2.any.sharedworker.html]
+ expected: ERROR
+
+[response-stream-disturbed-2.any.worker.html]
+
+[response-stream-disturbed-2.any.html]
+
+[response-stream-disturbed-2.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/response/response-stream-disturbed-3.any.js.ini b/tests/wpt/meta/fetch/api/response/response-stream-disturbed-3.any.js.ini
new file mode 100644
index 00000000000..ec3d9e2b8ef
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-stream-disturbed-3.any.js.ini
@@ -0,0 +1,9 @@
+[response-stream-disturbed-3.any.serviceworker.html]
+ expected: ERROR
+
+[response-stream-disturbed-3.any.sharedworker.html]
+ expected: ERROR
+
+[response-stream-disturbed-3.any.html]
+
+[response-stream-disturbed-3.any.worker.html]
diff --git a/tests/wpt/meta/fetch/api/response/response-stream-disturbed-4.any.js.ini b/tests/wpt/meta/fetch/api/response/response-stream-disturbed-4.any.js.ini
new file mode 100644
index 00000000000..ce8a981f9b2
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-stream-disturbed-4.any.js.ini
@@ -0,0 +1,9 @@
+[response-stream-disturbed-4.any.serviceworker.html]
+ expected: ERROR
+
+[response-stream-disturbed-4.any.sharedworker.html]
+ expected: ERROR
+
+[response-stream-disturbed-4.any.html]
+
+[response-stream-disturbed-4.any.worker.html]
diff --git a/tests/wpt/meta/fetch/api/response/response-stream-disturbed-5.any.js.ini b/tests/wpt/meta/fetch/api/response/response-stream-disturbed-5.any.js.ini
new file mode 100644
index 00000000000..d47bd7efeae
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-stream-disturbed-5.any.js.ini
@@ -0,0 +1,9 @@
+[response-stream-disturbed-5.any.sharedworker.html]
+ expected: ERROR
+
+[response-stream-disturbed-5.any.serviceworker.html]
+ expected: ERROR
+
+[response-stream-disturbed-5.any.html]
+
+[response-stream-disturbed-5.any.worker.html]
diff --git a/tests/wpt/meta/fetch/api/response/response-stream-disturbed-6.any.js.ini b/tests/wpt/meta/fetch/api/response/response-stream-disturbed-6.any.js.ini
new file mode 100644
index 00000000000..c17a43b47c2
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-stream-disturbed-6.any.js.ini
@@ -0,0 +1,9 @@
+[response-stream-disturbed-6.any.html]
+
+[response-stream-disturbed-6.any.serviceworker.html]
+ expected: ERROR
+
+[response-stream-disturbed-6.any.sharedworker.html]
+ expected: ERROR
+
+[response-stream-disturbed-6.any.worker.html]
diff --git a/tests/wpt/meta/fetch/api/response/response-stream-disturbed-by-pipe.any.js.ini b/tests/wpt/meta/fetch/api/response/response-stream-disturbed-by-pipe.any.js.ini
new file mode 100644
index 00000000000..85121b02cc9
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-stream-disturbed-by-pipe.any.js.ini
@@ -0,0 +1,21 @@
+[response-stream-disturbed-by-pipe.any.worker.html]
+ [using pipeThrough on Response body should disturb it synchronously]
+ expected: FAIL
+
+ [using pipeTo on Response body should disturb it synchronously]
+ expected: FAIL
+
+
+[response-stream-disturbed-by-pipe.any.html]
+ [using pipeThrough on Response body should disturb it synchronously]
+ expected: FAIL
+
+ [using pipeTo on Response body should disturb it synchronously]
+ expected: FAIL
+
+
+[response-stream-disturbed-by-pipe.any.serviceworker.html]
+ expected: ERROR
+
+[response-stream-disturbed-by-pipe.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/api/response/response-stream-with-broken-then.any.js.ini b/tests/wpt/meta/fetch/api/response/response-stream-with-broken-then.any.js.ini
new file mode 100644
index 00000000000..b0a456ad565
--- /dev/null
+++ b/tests/wpt/meta/fetch/api/response/response-stream-with-broken-then.any.js.ini
@@ -0,0 +1,15 @@
+[response-stream-with-broken-then.any.worker.html]
+ [intercepting arraybuffer to body readable stream conversion via Object.prototype.then should not be possible]
+ expected: FAIL
+
+
+[response-stream-with-broken-then.any.sharedworker.html]
+ expected: ERROR
+
+[response-stream-with-broken-then.any.html]
+ [intercepting arraybuffer to body readable stream conversion via Object.prototype.then should not be possible]
+ expected: FAIL
+
+
+[response-stream-with-broken-then.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/connection-pool/network-partition-key.html.ini b/tests/wpt/meta/fetch/connection-pool/network-partition-key.html.ini
new file mode 100644
index 00000000000..1e41dc5e034
--- /dev/null
+++ b/tests/wpt/meta/fetch/connection-pool/network-partition-key.html.ini
@@ -0,0 +1,28 @@
+[network-partition-key.html]
+ [Iframes]
+ expected: FAIL
+
+ [CSP sandbox]
+ expected: FAIL
+
+ [Workers]
+ expected: FAIL
+
+ [Cross-site resources without credentials]
+ expected: FAIL
+
+ [about:blank from opaque origin iframe]
+ expected: FAIL
+
+ [Without credentials]
+ expected: FAIL
+
+ [Workers with cross-site resources]
+ expected: FAIL
+
+ [Cross-site resources with credentials]
+ expected: FAIL
+
+ [With credentials]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/content-encoding/bad-gzip-body.any.js.ini b/tests/wpt/meta/fetch/content-encoding/bad-gzip-body.any.js.ini
new file mode 100644
index 00000000000..6c867e1d349
--- /dev/null
+++ b/tests/wpt/meta/fetch/content-encoding/bad-gzip-body.any.js.ini
@@ -0,0 +1,33 @@
+[bad-gzip-body.any.serviceworker.html]
+ expected: ERROR
+
+[bad-gzip-body.any.sharedworker.html]
+ expected: ERROR
+
+[bad-gzip-body.any.html]
+ [Consuming the body of a resource with bad gzip content with json() should reject]
+ expected: FAIL
+
+ [Consuming the body of a resource with bad gzip content with blob() should reject]
+ expected: FAIL
+
+ [Consuming the body of a resource with bad gzip content with arrayBuffer() should reject]
+ expected: FAIL
+
+ [Consuming the body of a resource with bad gzip content with text() should reject]
+ expected: FAIL
+
+
+[bad-gzip-body.any.worker.html]
+ [Consuming the body of a resource with bad gzip content with json() should reject]
+ expected: FAIL
+
+ [Consuming the body of a resource with bad gzip content with blob() should reject]
+ expected: FAIL
+
+ [Consuming the body of a resource with bad gzip content with arrayBuffer() should reject]
+ expected: FAIL
+
+ [Consuming the body of a resource with bad gzip content with text() should reject]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/content-encoding/gzip-body.any.js.ini b/tests/wpt/meta/fetch/content-encoding/gzip-body.any.js.ini
new file mode 100644
index 00000000000..92032d3420c
--- /dev/null
+++ b/tests/wpt/meta/fetch/content-encoding/gzip-body.any.js.ini
@@ -0,0 +1,9 @@
+[gzip-body.any.serviceworker.html]
+ expected: ERROR
+
+[gzip-body.any.sharedworker.html]
+ expected: ERROR
+
+[gzip-body.any.worker.html]
+
+[gzip-body.any.html]
diff --git a/tests/wpt/meta/fetch/content-length/api-and-duplicate-headers.any.js.ini b/tests/wpt/meta/fetch/content-length/api-and-duplicate-headers.any.js.ini
new file mode 100644
index 00000000000..d9c34cced72
--- /dev/null
+++ b/tests/wpt/meta/fetch/content-length/api-and-duplicate-headers.any.js.ini
@@ -0,0 +1,15 @@
+[api-and-duplicate-headers.any.html]
+ [fetch() and duplicate Content-Length/Content-Type headers]
+ expected: FAIL
+
+ [XMLHttpRequest and duplicate Content-Length/Content-Type headers]
+ expected: FAIL
+
+
+[api-and-duplicate-headers.any.worker.html]
+ [fetch() and duplicate Content-Length/Content-Type headers]
+ expected: FAIL
+
+ [XMLHttpRequest and duplicate Content-Length/Content-Type headers]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/content-length/parsing.window.js.ini b/tests/wpt/meta/fetch/content-length/parsing.window.js.ini
new file mode 100644
index 00000000000..ac656410273
--- /dev/null
+++ b/tests/wpt/meta/fetch/content-length/parsing.window.js.ini
@@ -0,0 +1,84 @@
+[parsing.window.html]
+ [Content-Length%3A%2042%2C42]
+ expected: FAIL
+
+ [Content-Length%3A%2042%0D%0AContent-Length%3A%2042%2C42]
+ expected: FAIL
+
+ [Content-Length%3A%2030%2C30]
+ expected: FAIL
+
+ [Content-Length%3A%2030%0D%0AContent-Length%3A%2030%2C30]
+ expected: FAIL
+
+ [Content-Length%3A%20aaaah%0D%0AContent-Length%3A%20aaaah]
+ expected: FAIL
+
+ [Content-Length%3A%20aaaah%2C%20aaaah]
+ expected: FAIL
+
+ [Content-Length%3A%20aaaah]
+ expected: FAIL
+
+ [Content-Length%3A%2042s]
+ expected: FAIL
+
+ [Content-Length%3A%2030s]
+ expected: FAIL
+
+ [Content-Length%3A%20-1]
+ expected: FAIL
+
+ [Content-Length%3A%200x20]
+ expected: FAIL
+
+ [Content-Length%3A%20030%0D%0AContent-Length%3A%2030]
+ expected: FAIL
+
+ [Content-Length%3A%20%2230%22]
+ expected: FAIL
+
+ [Content-Length%3A%20]
+ expected: FAIL
+
+ [Input: "Content-Length: 030, 30". Expected: network error.]
+ expected: FAIL
+
+ [Input: "Content-Length: 030,30". Expected: network error.]
+ expected: FAIL
+
+ [Input: "Content-Length: aaaah\\r\\nContent-Length: aaaah". Expected: 42.]
+ expected: FAIL
+
+ [Input: "Content-Length: aaaah, aaaah". Expected: 42.]
+ expected: FAIL
+
+ [Input: "Content-Length: aaaah". Expected: 42.]
+ expected: FAIL
+
+ [Input: "Content-Length: 42s". Expected: 42.]
+ expected: FAIL
+
+ [Input: "Content-Length: 30s". Expected: 42.]
+ expected: FAIL
+
+ [Input: "Content-Length: -1". Expected: 42.]
+ expected: FAIL
+
+ [Input: "Content-Length: 0x20". Expected: 42.]
+ expected: FAIL
+
+ [Input: "Content-Length: 030\\r\\nContent-Length: 30". Expected: network error.]
+ expected: FAIL
+
+ [Input: "Content-Length: \\"30\\"". Expected: 42.]
+ expected: FAIL
+
+ [Input: "Content-Length: ". Expected: 42.]
+ expected: FAIL
+
+ [Input: "Content-Length: 42\\r\\nContent-Length: 42". Expected: 42.]
+ expected: FAIL
+
+ [Input: "Content-Length: 30". Expected: 30.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/content-length/too-long.window.js.ini b/tests/wpt/meta/fetch/content-length/too-long.window.js.ini
new file mode 100644
index 00000000000..0a78a1a8ea0
--- /dev/null
+++ b/tests/wpt/meta/fetch/content-length/too-long.window.js.ini
@@ -0,0 +1,4 @@
+[too-long.window.html]
+ [Content-Length header value of network response exceeds response body]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/content-type/multipart.window.js.ini b/tests/wpt/meta/fetch/content-type/multipart.window.js.ini
new file mode 100644
index 00000000000..2a95df3b9fd
--- /dev/null
+++ b/tests/wpt/meta/fetch/content-type/multipart.window.js.ini
@@ -0,0 +1,3 @@
+[multipart.window.html]
+ [Ensure capital letters can be used in the boundary value.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/content-type/response.window.js.ini b/tests/wpt/meta/fetch/content-type/response.window.js.ini
new file mode 100644
index 00000000000..fb99623b59d
--- /dev/null
+++ b/tests/wpt/meta/fetch/content-type/response.window.js.ini
@@ -0,0 +1,162 @@
+[response.window.html]
+ [fetch(): combined response Content-Type: text/plain ]
+ expected: FAIL
+
+ [fetch(): separate response Content-Type: text/html;" \\" text/plain]
+ expected: FAIL
+
+ [fetch(): separate response Content-Type: text/html;" text/plain]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/plain */*;charset=gbk]
+ expected: FAIL
+
+ [fetch(): separate response Content-Type: text/html;x=" text/plain]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: text/plain;charset=gbk text/html;charset=windows-1254]
+ expected: FAIL
+
+ [Request: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/plain]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: text/html;x=" text/plain]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: text/plain;charset=gbk;x=foo text/plain]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: text/html;charset=gbk text/plain text/html]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: text/html text/plain]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: */* text/html]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: text/html */*;charset=gbk]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: text/plain;charset=gbk text/plain]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/plain;charset=gbk text/html;charset=windows-1254]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/plain;charset=gbk text/html;charset=windows-1254]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: text/plain;charset=gbk text/html]
+ expected: FAIL
+
+ [fetch(): separate response Content-Type: text/html;" \\" text/plain ";charset=GBK]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/plain;charset=gbk text/plain]
+ expected: FAIL
+
+ [Request: combined response Content-Type: text/html;x=" text/plain]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/plain;charset=gbk text/plain]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: text/html */*]
+ expected: FAIL
+
+ [Request: combined response Content-Type: text/html;" \\" text/plain]
+ expected: FAIL
+
+ [Response: combined response Content-Type: text/html;" text/plain]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/html;" " text/plain]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
+ expected: FAIL
+
+ [Response: combined response Content-Type: text/html;x=" text/plain]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/html;charset=gbk text/html;x=",text/plain]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/plain ]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/html text/plain]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/plain]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html;" " text/plain]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html text/plain]
+ expected: FAIL
+
+ [Response: combined response Content-Type: text/html;" \\" text/plain]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/plain;charset=gbk;x=foo text/plain]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: text/plain]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/plain;charset=gbk;x=foo text/plain]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: text/plain */*]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html;charset=gbk text/html;x=",text/plain]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: text/plain */*;charset=gbk]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/plain */*]
+ expected: FAIL
+
+ [Request: combined response Content-Type: text/html;" text/plain]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html;" \\" text/plain ";charset=GBK]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: text/html;" " text/plain]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252]
+ expected: FAIL
+
+ [fetch(): combined response Content-Type: text/html;charset=gbk text/html;x=",text/plain]
+ expected: FAIL
+
+ [Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/plain;charset=gbk text/html]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html;charset=gbk text/plain text/html]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: */* text/html]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/content-type/script.window.js.ini b/tests/wpt/meta/fetch/content-type/script.window.js.ini
new file mode 100644
index 00000000000..be7494e9c52
--- /dev/null
+++ b/tests/wpt/meta/fetch/content-type/script.window.js.ini
@@ -0,0 +1,57 @@
+[script.window.html]
+ [separate text/javascript;charset=windows-1252 x/x text/javascript]
+ expected: FAIL
+
+ [combined text/javascript;" x/x]
+ expected: FAIL
+
+ [combined x/x;charset=windows-1252 text/javascript]
+ expected: FAIL
+
+ [combined text/javascript;charset=windows-1252;" \\" x/x]
+ expected: FAIL
+
+ [separate x/x text/javascript]
+ expected: FAIL
+
+ [combined x/x;" x/y;\\" text/javascript;charset=windows-1252;" text/javascript]
+ expected: FAIL
+
+ [combined x/x text/javascript]
+ expected: FAIL
+
+ [separate text/javascript;charset=windows-1252;" \\" x/x]
+ expected: FAIL
+
+ [combined text/javascript error]
+ expected: FAIL
+
+ [combined text/javascript;charset=windows-1252 error text/javascript]
+ expected: FAIL
+
+ [combined text/javascript;charset=windows-1252 text/javascript]
+ expected: FAIL
+
+ [separate x/x;charset=windows-1252 text/javascript]
+ expected: FAIL
+
+ [combined text/javascript;charset=windows-1252 x/x text/javascript]
+ expected: FAIL
+
+ [separate x/x;" x/y;\\" text/javascript;charset=windows-1252;" text/javascript]
+ expected: FAIL
+
+ [separate text/javascript;";charset=windows-1252]
+ expected: FAIL
+
+ [combined text/javascript; charset=windows-1252 text/javascript]
+ expected: FAIL
+
+ [separate text/javascript;" x/x]
+ expected: FAIL
+
+ [combined text/javascript ]
+ expected: FAIL
+
+ [separate text/javascript x/x]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/corb/response_block.tentative.sub.https.html.ini b/tests/wpt/meta/fetch/corb/response_block.tentative.sub.https.html.ini
new file mode 100644
index 00000000000..5ce8794210e
--- /dev/null
+++ b/tests/wpt/meta/fetch/corb/response_block.tentative.sub.https.html.ini
@@ -0,0 +1,3 @@
+[response_block.tentative.sub.https.html]
+ [ORB: Expect error response.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/cors-rfc1918/non-secure-context.window.js.ini b/tests/wpt/meta/fetch/cors-rfc1918/non-secure-context.window.js.ini
new file mode 100644
index 00000000000..834261b53fe
--- /dev/null
+++ b/tests/wpt/meta/fetch/cors-rfc1918/non-secure-context.window.js.ini
@@ -0,0 +1,4 @@
+[non-secure-context.window.html]
+ [Public non secure page fetches local page.]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/data-urls/base64.any.js.ini b/tests/wpt/meta/fetch/data-urls/base64.any.js.ini
new file mode 100644
index 00000000000..531ccc505a2
--- /dev/null
+++ b/tests/wpt/meta/fetch/data-urls/base64.any.js.ini
@@ -0,0 +1,9 @@
+[base64.any.worker.html]
+
+[base64.any.sharedworker.html]
+ expected: ERROR
+
+[base64.any.html]
+
+[base64.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/data-urls/processing.any.js.ini b/tests/wpt/meta/fetch/data-urls/processing.any.js.ini
new file mode 100644
index 00000000000..d1d8ddd7f64
--- /dev/null
+++ b/tests/wpt/meta/fetch/data-urls/processing.any.js.ini
@@ -0,0 +1,296 @@
+[processing.any.serviceworker.html]
+ expected: ERROR
+
+[processing.any.sharedworker.html]
+ expected: ERROR
+
+[processing.any.html]
+ ["data:%00,%FF"]
+ expected: FAIL
+
+ ["data:,"]
+ expected: FAIL
+
+ ["data:text / html,X"]
+ expected: FAIL
+
+ ["data:†,X"]
+ expected: FAIL
+
+ ["data: ,%FF"]
+ expected: FAIL
+
+ ["data:text/plain;Charset=UTF-8,%C2%B1"]
+ expected: FAIL
+
+ ["data:;x=x;charset=x,X"]
+ expected: FAIL
+
+ ["data:;base 64,WA"]
+ expected: FAIL
+
+ ["data:text/html ,X"]
+ expected: FAIL
+
+ ["data:text/plain;a=\\",\\",X"]
+ expected: FAIL
+
+ ["data:;charset=,X"]
+ expected: FAIL
+
+ ["data:;CHARSET=\\"X\\",X"]
+ expected: FAIL
+
+ ["data:;%62ase64,WA"]
+ expected: FAIL
+
+ ["data:x/x;base64;charset=x;base64,WA"]
+ expected: FAIL
+
+ ["data://test/,X"]
+ expected: FAIL
+
+ ["data:X,X"]
+ expected: FAIL
+
+ ["data:%3Bbase64,WA"]
+ expected: FAIL
+
+ ["data:\\f,%FF"]
+ expected: FAIL
+
+ ["data:x/x;base64;base64x,WA"]
+ expected: FAIL
+
+ ["data:;charset= x,X"]
+ expected: FAIL
+
+ ["data:text/plain ,X"]
+ expected: FAIL
+
+ ["data:;charset,X"]
+ expected: FAIL
+
+ ["data:;base64,W%0CA"]
+ expected: FAIL
+
+ ["data:;x=x,X"]
+ expected: FAIL
+
+ ["data:,%FF"]
+ expected: FAIL
+
+ ["data:;base64 ,WA"]
+ expected: FAIL
+
+ ["data:;base64,W%20A"]
+ expected: FAIL
+
+ ["data:\\0,%FF"]
+ expected: FAIL
+
+ ["data:x;base64;x,WA"]
+ expected: FAIL
+
+ ["data:;BASe64,WA"]
+ expected: FAIL
+
+ ["data:; charset=x,X"]
+ expected: FAIL
+
+ ["data:x;base64x,WA"]
+ expected: FAIL
+
+ ["data:; base64,WA"]
+ expected: FAIL
+
+ ["data:,X#X"]
+ expected: FAIL
+
+ ["data:x/x;base64;charset=x,WA"]
+ expected: FAIL
+
+ ["data: ;charset=x ; base64,WA"]
+ expected: FAIL
+
+ ["data:;base64;,WA"]
+ expected: FAIL
+
+ ["data:;base64;base64,WA"]
+ expected: FAIL
+
+ ["data:; base64,WA"]
+ expected: FAIL
+
+ ["data:;charset =x,X"]
+ expected: FAIL
+
+ ["data:x/x;base64;base64,WA"]
+ expected: FAIL
+
+ ["data:%20,%FF"]
+ expected: FAIL
+
+ ["data:%1F,%FF"]
+ expected: FAIL
+
+ ["data:,X"]
+ expected: FAIL
+
+ ["data:x;base64=x,WA"]
+ expected: FAIL
+
+ ["data:;base64 ,WA"]
+ expected: FAIL
+
+ ["data:;charset=\\"x\\",X"]
+ expected: FAIL
+
+ ["data:text/plain;charset=UTF-8,áñçə💩"]
+ expected: FAIL
+
+
+[processing.any.worker.html]
+ ["data:%00,%FF"]
+ expected: FAIL
+
+ ["data:,"]
+ expected: FAIL
+
+ ["data:text / html,X"]
+ expected: FAIL
+
+ ["data:†,X"]
+ expected: FAIL
+
+ ["data: ,%FF"]
+ expected: FAIL
+
+ ["data:text/plain;Charset=UTF-8,%C2%B1"]
+ expected: FAIL
+
+ ["data:;x=x;charset=x,X"]
+ expected: FAIL
+
+ ["data:;base 64,WA"]
+ expected: FAIL
+
+ ["data:text/html ,X"]
+ expected: FAIL
+
+ ["data:text/plain;a=\\",\\",X"]
+ expected: FAIL
+
+ ["data:;charset=,X"]
+ expected: FAIL
+
+ ["data:;CHARSET=\\"X\\",X"]
+ expected: FAIL
+
+ ["data:;%62ase64,WA"]
+ expected: FAIL
+
+ ["data:x/x;base64;charset=x;base64,WA"]
+ expected: FAIL
+
+ ["data://test/,X"]
+ expected: FAIL
+
+ ["data:X,X"]
+ expected: FAIL
+
+ ["data:%3Bbase64,WA"]
+ expected: FAIL
+
+ ["data:\\f,%FF"]
+ expected: FAIL
+
+ ["data:x/x;base64;base64x,WA"]
+ expected: FAIL
+
+ ["data:;charset= x,X"]
+ expected: FAIL
+
+ ["data:text/plain ,X"]
+ expected: FAIL
+
+ ["data:;charset,X"]
+ expected: FAIL
+
+ ["data:;base64,W%0CA"]
+ expected: FAIL
+
+ ["data:;x=x,X"]
+ expected: FAIL
+
+ ["data:,%FF"]
+ expected: FAIL
+
+ ["data:;base64 ,WA"]
+ expected: FAIL
+
+ ["data:;base64,W%20A"]
+ expected: FAIL
+
+ ["data:\\0,%FF"]
+ expected: FAIL
+
+ ["data:x;base64;x,WA"]
+ expected: FAIL
+
+ ["data:;BASe64,WA"]
+ expected: FAIL
+
+ ["data:; charset=x,X"]
+ expected: FAIL
+
+ ["data:x;base64x,WA"]
+ expected: FAIL
+
+ ["data:; base64,WA"]
+ expected: FAIL
+
+ ["data:,X#X"]
+ expected: FAIL
+
+ ["data:x/x;base64;charset=x,WA"]
+ expected: FAIL
+
+ ["data: ;charset=x ; base64,WA"]
+ expected: FAIL
+
+ ["data:;base64;,WA"]
+ expected: FAIL
+
+ ["data:;base64;base64,WA"]
+ expected: FAIL
+
+ ["data:; base64,WA"]
+ expected: FAIL
+
+ ["data:;charset =x,X"]
+ expected: FAIL
+
+ ["data:x/x;base64;base64,WA"]
+ expected: FAIL
+
+ ["data:%20,%FF"]
+ expected: FAIL
+
+ ["data:%1F,%FF"]
+ expected: FAIL
+
+ ["data:,X"]
+ expected: FAIL
+
+ ["data:x;base64=x,WA"]
+ expected: FAIL
+
+ ["data:;base64 ,WA"]
+ expected: FAIL
+
+ ["data:;charset=\\"x\\",X"]
+ expected: FAIL
+
+ ["data:text/plain;charset=UTF-8,áñçə💩"]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/h1-parsing/lone-cr.window.js.ini b/tests/wpt/meta/fetch/h1-parsing/lone-cr.window.js.ini
new file mode 100644
index 00000000000..02ab19497cd
--- /dev/null
+++ b/tests/wpt/meta/fetch/h1-parsing/lone-cr.window.js.ini
@@ -0,0 +1,4 @@
+[lone-cr.window.html]
+ [Parsing response with a lone CR before message-body (HTTP/1.1 200 OK\nHeader: Value\r\n\nBody)]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/h1-parsing/status-code.window.js.ini b/tests/wpt/meta/fetch/h1-parsing/status-code.window.js.ini
new file mode 100644
index 00000000000..90f03418df6
--- /dev/null
+++ b/tests/wpt/meta/fetch/h1-parsing/status-code.window.js.ini
@@ -0,0 +1,22 @@
+[status-code.window.html]
+ [HTTP/1.1 999 DOES IT MATTER ]
+ expected: FAIL
+
+ [HTTP/1.1 077 77 ]
+ expected: FAIL
+
+ [HTTP/1.1 200 ]
+ expected: FAIL
+
+ [HTTP/1.1 1 OK ]
+ expected: FAIL
+
+ [HTTP/1.1 099 HELLO ]
+ expected: FAIL
+
+ [HTTP/1.1 99 NOT OK ]
+ expected: FAIL
+
+ [HTTP/1.1 0 OK ]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/http-cache/304-update.any.js.ini b/tests/wpt/meta/fetch/http-cache/304-update.any.js.ini
new file mode 100644
index 00000000000..cfe19e66c88
--- /dev/null
+++ b/tests/wpt/meta/fetch/http-cache/304-update.any.js.ini
@@ -0,0 +1,9 @@
+[304-update.any.html]
+
+[304-update.any.worker.html]
+
+[304-update.any.serviceworker.html]
+ expected: ERROR
+
+[304-update.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/http-cache/cache-mode.any.js.ini b/tests/wpt/meta/fetch/http-cache/cache-mode.any.js.ini
new file mode 100644
index 00000000000..4909587e938
--- /dev/null
+++ b/tests/wpt/meta/fetch/http-cache/cache-mode.any.js.ini
@@ -0,0 +1,9 @@
+[cache-mode.any.sharedworker.html]
+ expected: ERROR
+
+[cache-mode.any.worker.html]
+
+[cache-mode.any.html]
+
+[cache-mode.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/http-cache/cc-request.any.js.ini b/tests/wpt/meta/fetch/http-cache/cc-request.any.js.ini
new file mode 100644
index 00000000000..fca806d592d
--- /dev/null
+++ b/tests/wpt/meta/fetch/http-cache/cc-request.any.js.ini
@@ -0,0 +1,15 @@
+[cc-request.any.worker.html]
+ [HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached]
+ expected: FAIL
+
+
+[cc-request.any.sharedworker.html]
+ expected: ERROR
+
+[cc-request.any.html]
+ [HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached]
+ expected: FAIL
+
+
+[cc-request.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/http-cache/credentials.tentative.any.js.ini b/tests/wpt/meta/fetch/http-cache/credentials.tentative.any.js.ini
new file mode 100644
index 00000000000..06c96c43b4a
--- /dev/null
+++ b/tests/wpt/meta/fetch/http-cache/credentials.tentative.any.js.ini
@@ -0,0 +1,21 @@
+[credentials.tentative.any.worker.html]
+ [same-origin: 2xAnonymous, 2xCredentialled, 1xAnonymous]
+ expected: FAIL
+
+ [same-origin: 2xCredentialled, 2xAnonymous, 1xCredentialled]
+ expected: FAIL
+
+
+[credentials.tentative.any.serviceworker.html]
+ expected: ERROR
+
+[credentials.tentative.any.html]
+ [same-origin: 2xAnonymous, 2xCredentialled, 1xAnonymous]
+ expected: FAIL
+
+ [same-origin: 2xCredentialled, 2xAnonymous, 1xCredentialled]
+ expected: FAIL
+
+
+[credentials.tentative.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/http-cache/freshness.any.js.ini b/tests/wpt/meta/fetch/http-cache/freshness.any.js.ini
new file mode 100644
index 00000000000..6ef34c17843
--- /dev/null
+++ b/tests/wpt/meta/fetch/http-cache/freshness.any.js.ini
@@ -0,0 +1,9 @@
+[freshness.any.html]
+
+[freshness.any.serviceworker.html]
+ expected: ERROR
+
+[freshness.any.sharedworker.html]
+ expected: ERROR
+
+[freshness.any.worker.html]
diff --git a/tests/wpt/meta/fetch/http-cache/heuristic.any.js.ini b/tests/wpt/meta/fetch/http-cache/heuristic.any.js.ini
new file mode 100644
index 00000000000..13dd23b3ed3
--- /dev/null
+++ b/tests/wpt/meta/fetch/http-cache/heuristic.any.js.ini
@@ -0,0 +1,9 @@
+[heuristic.any.serviceworker.html]
+ expected: ERROR
+
+[heuristic.any.sharedworker.html]
+ expected: ERROR
+
+[heuristic.any.html]
+
+[heuristic.any.worker.html]
diff --git a/tests/wpt/meta/fetch/http-cache/invalidate.any.js.ini b/tests/wpt/meta/fetch/http-cache/invalidate.any.js.ini
new file mode 100644
index 00000000000..3409f9d41c2
--- /dev/null
+++ b/tests/wpt/meta/fetch/http-cache/invalidate.any.js.ini
@@ -0,0 +1,9 @@
+[invalidate.any.html]
+
+[invalidate.any.worker.html]
+
+[invalidate.any.serviceworker.html]
+ expected: ERROR
+
+[invalidate.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/http-cache/partial.any.js.ini b/tests/wpt/meta/fetch/http-cache/partial.any.js.ini
new file mode 100644
index 00000000000..05d75397ce6
--- /dev/null
+++ b/tests/wpt/meta/fetch/http-cache/partial.any.js.ini
@@ -0,0 +1,15 @@
+[partial.any.sharedworker.html]
+ expected: ERROR
+
+[partial.any.worker.html]
+ [HTTP cache stores partial content and completes it]
+ expected: FAIL
+
+
+[partial.any.html]
+ [HTTP cache stores partial content and completes it]
+ expected: FAIL
+
+
+[partial.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/http-cache/post-patch.any.js.ini b/tests/wpt/meta/fetch/http-cache/post-patch.any.js.ini
new file mode 100644
index 00000000000..70b6ff0a6d8
--- /dev/null
+++ b/tests/wpt/meta/fetch/http-cache/post-patch.any.js.ini
@@ -0,0 +1,21 @@
+[post-patch.any.html]
+ [HTTP cache uses content after POST request with response containing Content-Location and cache-allowing header]
+ expected: FAIL
+
+ [HTTP cache uses content after PATCH request with response containing Content-Location and cache-allowing header]
+ expected: FAIL
+
+
+[post-patch.any.worker.html]
+ [HTTP cache uses content after POST request with response containing Content-Location and cache-allowing header]
+ expected: FAIL
+
+ [HTTP cache uses content after PATCH request with response containing Content-Location and cache-allowing header]
+ expected: FAIL
+
+
+[post-patch.any.serviceworker.html]
+ expected: ERROR
+
+[post-patch.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/http-cache/split-cache.html.ini b/tests/wpt/meta/fetch/http-cache/split-cache.html.ini
new file mode 100644
index 00000000000..45120a9f132
--- /dev/null
+++ b/tests/wpt/meta/fetch/http-cache/split-cache.html.ini
@@ -0,0 +1,7 @@
+[split-cache.html]
+ [HTTP cache is not shared between same-site frames with cross-site top-level frames]
+ expected: FAIL
+
+ [HTTP cache is not shared between cross-site top-level frames]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/http-cache/split-cache.tentative.html.ini b/tests/wpt/meta/fetch/http-cache/split-cache.tentative.html.ini
new file mode 100644
index 00000000000..f07bf683fae
--- /dev/null
+++ b/tests/wpt/meta/fetch/http-cache/split-cache.tentative.html.ini
@@ -0,0 +1,13 @@
+[split-cache.tentative.html]
+ [HTTP Cache - Partioning by top-level origin 3]
+ expected: FAIL
+
+ [HTTP Cache - Partioning by top-level origin 1]
+ expected: FAIL
+
+ [HTTP cache is not shared between same-site frames with cross-site top-level frames]
+ expected: FAIL
+
+ [HTTP cache is not shared between cross-site top-level frames]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/http-cache/status.any.js.ini b/tests/wpt/meta/fetch/http-cache/status.any.js.ini
new file mode 100644
index 00000000000..b30744f82a6
--- /dev/null
+++ b/tests/wpt/meta/fetch/http-cache/status.any.js.ini
@@ -0,0 +1,9 @@
+[status.any.worker.html]
+
+[status.any.sharedworker.html]
+ expected: ERROR
+
+[status.any.html]
+
+[status.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/http-cache/vary.any.js.ini b/tests/wpt/meta/fetch/http-cache/vary.any.js.ini
new file mode 100644
index 00000000000..970d36ec73d
--- /dev/null
+++ b/tests/wpt/meta/fetch/http-cache/vary.any.js.ini
@@ -0,0 +1,9 @@
+[vary.any.worker.html]
+
+[vary.any.sharedworker.html]
+ expected: ERROR
+
+[vary.any.html]
+
+[vary.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/local-network-access/iframe.tentative.https.window.js.ini b/tests/wpt/meta/fetch/local-network-access/iframe.tentative.https.window.js.ini
new file mode 100644
index 00000000000..5b0348afa74
--- /dev/null
+++ b/tests/wpt/meta/fetch/local-network-access/iframe.tentative.https.window.js.ini
@@ -0,0 +1,36 @@
+[iframe.tentative.https.window.html]
+ [private to local: failed preflight.]
+ expected: FAIL
+
+ [private to local: success.]
+ expected: FAIL
+
+ [public to local: failed preflight.]
+ expected: FAIL
+
+ [public to local: success.]
+ expected: FAIL
+
+ [public to private: failed preflight.]
+ expected: FAIL
+
+ [public to private: success.]
+ expected: FAIL
+
+ [treat-as-public-address to local: failed preflight.]
+ expected: FAIL
+
+ [treat-as-public-address to local: success.]
+ expected: FAIL
+
+ [treat-as-public-address to private: failed preflight.]
+ expected: FAIL
+
+ [treat-as-public-address to private: success.]
+ expected: FAIL
+
+ [public to local, grandparent navigates: failure.]
+ expected: FAIL
+
+ [public to local, grandparent navigates: success.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/audio-worklet.https.html.ini b/tests/wpt/meta/fetch/metadata/audio-worklet.https.html.ini
new file mode 100644
index 00000000000..16f4673e02a
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/audio-worklet.https.html.ini
@@ -0,0 +1,3 @@
+[audio-worklet.https.html]
+ [The fetch metadata for audio worklet]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/embed.https.sub.tentative.html.ini b/tests/wpt/meta/fetch/metadata/embed.https.sub.tentative.html.ini
new file mode 100644
index 00000000000..ae0326e141c
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/embed.https.sub.tentative.html.ini
@@ -0,0 +1,20 @@
+[embed.https.sub.tentative.html]
+ expected: TIMEOUT
+ [Wrapper: Navigate to cross-site embed]
+ expected: NOTRUN
+
+ [Wrapper: cross-site embed]
+ expected: NOTRUN
+
+ [Wrapper: same-site embed]
+ expected: NOTRUN
+
+ [Wrapper: Navigate to same-origin embed]
+ expected: NOTRUN
+
+ [Wrapper: Navigate to same-site embed]
+ expected: NOTRUN
+
+ [Wrapper: same-origin embed]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/meta/fetch/metadata/fetch-preflight.https.sub.any.js.ini b/tests/wpt/meta/fetch/metadata/fetch-preflight.https.sub.any.js.ini
new file mode 100644
index 00000000000..f290329dfbe
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/fetch-preflight.https.sub.any.js.ini
@@ -0,0 +1,21 @@
+[fetch-preflight.https.sub.any.html]
+ [Same-site fetch with preflight]
+ expected: FAIL
+
+ [Cross-site fetch with preflight]
+ expected: FAIL
+
+
+[fetch-preflight.https.sub.any.worker.html]
+ [Same-site fetch with preflight]
+ expected: FAIL
+
+ [Cross-site fetch with preflight]
+ expected: FAIL
+
+
+[fetch-preflight.https.sub.any.serviceworker.html]
+ expected: ERROR
+
+[fetch-preflight.https.sub.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/metadata/fetch.https.sub.any.js.ini b/tests/wpt/meta/fetch/metadata/fetch.https.sub.any.js.ini
new file mode 100644
index 00000000000..3d653a386bc
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/fetch.https.sub.any.js.ini
@@ -0,0 +1,117 @@
+[fetch.https.sub.any.html]
+ [CORS mode: sec-fetch-site]
+ expected: FAIL
+
+ [Same-origin mode: sec-fetch-dest]
+ expected: FAIL
+
+ [Cross-site fetch: sec-fetch-dest]
+ expected: FAIL
+
+ [Cross-site fetch: sec-fetch-site]
+ expected: FAIL
+
+ [Same-origin fetch: sec-fetch-mode]
+ expected: FAIL
+
+ [CORS mode: sec-fetch-mode]
+ expected: FAIL
+
+ [Same-origin mode: sec-fetch-mode]
+ expected: FAIL
+
+ [Same-origin mode: sec-fetch-site]
+ expected: FAIL
+
+ [Same-origin fetch: sec-fetch-site]
+ expected: FAIL
+
+ [Cross-site fetch: sec-fetch-mode]
+ expected: FAIL
+
+ [CORS mode: sec-fetch-dest]
+ expected: FAIL
+
+ [Same-origin fetch: sec-fetch-dest]
+ expected: FAIL
+
+ [no-CORS mode: sec-fetch-dest]
+ expected: FAIL
+
+ [Same-site fetch: sec-fetch-dest]
+ expected: FAIL
+
+ [no-CORS mode: sec-fetch-site]
+ expected: FAIL
+
+ [Same-site fetch: sec-fetch-site]
+ expected: FAIL
+
+ [no-CORS mode: sec-fetch-mode]
+ expected: FAIL
+
+ [Same-site fetch: sec-fetch-mode]
+ expected: FAIL
+
+
+[fetch.https.sub.any.worker.html]
+ [CORS mode: sec-fetch-site]
+ expected: FAIL
+
+ [Same-origin mode: sec-fetch-dest]
+ expected: FAIL
+
+ [Cross-site fetch: sec-fetch-dest]
+ expected: FAIL
+
+ [Cross-site fetch: sec-fetch-site]
+ expected: FAIL
+
+ [Same-origin fetch: sec-fetch-mode]
+ expected: FAIL
+
+ [CORS mode: sec-fetch-mode]
+ expected: FAIL
+
+ [Same-origin mode: sec-fetch-mode]
+ expected: FAIL
+
+ [Same-origin mode: sec-fetch-site]
+ expected: FAIL
+
+ [Same-origin fetch: sec-fetch-site]
+ expected: FAIL
+
+ [Cross-site fetch: sec-fetch-mode]
+ expected: FAIL
+
+ [CORS mode: sec-fetch-dest]
+ expected: FAIL
+
+ [Same-origin fetch: sec-fetch-dest]
+ expected: FAIL
+
+ [no-CORS mode: sec-fetch-dest]
+ expected: FAIL
+
+ [Same-site fetch: sec-fetch-dest]
+ expected: FAIL
+
+ [no-CORS mode: sec-fetch-site]
+ expected: FAIL
+
+ [Same-site fetch: sec-fetch-site]
+ expected: FAIL
+
+ [no-CORS mode: sec-fetch-mode]
+ expected: FAIL
+
+ [Same-site fetch: sec-fetch-mode]
+ expected: FAIL
+
+
+[fetch.https.sub.any.sharedworker.html]
+ expected: ERROR
+
+[fetch.https.sub.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/metadata/generated/appcache-manifest.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/appcache-manifest.https.sub.html.ini
new file mode 100644
index 00000000000..fdf575f99df
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/appcache-manifest.https.sub.html.ini
@@ -0,0 +1,60 @@
+[appcache-manifest.https.sub.html]
+ [sec-fetch-site - Same origin]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-site - Cross-site]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-site - Same site]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-site - HTTPS downgrade (header not sent)]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-site - HTTPS upgrade]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-site - Cross-Site -> Same Origin]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-site - Cross-Site -> Same-Site]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-site - Cross-Site -> Cross-Site]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-site - Same-Origin -> Same Origin]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-site - Same-Origin -> Same-Site]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-site - Same-Origin -> Cross-Site]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-site - Same-Site -> Same Origin]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-site - Same-Site -> Same-Site]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-site - Same-Site -> Cross-Site]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-mode]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-dest]
+ expected: PRECONDITION_FAILED
+
+ [sec-fetch-user]
+ expected: PRECONDITION_FAILED
diff --git a/tests/wpt/meta/fetch/metadata/generated/css-font-face.https.sub.tentative.html.ini b/tests/wpt/meta/fetch/metadata/generated/css-font-face.https.sub.tentative.html.ini
new file mode 100644
index 00000000000..f2eb0d19401
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/css-font-face.https.sub.tentative.html.ini
@@ -0,0 +1,51 @@
+[css-font-face.https.sub.tentative.html]
+ [sec-fetch-site - Same origin]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-site]
+ expected: FAIL
+
+ [sec-fetch-site - Same site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-mode]
+ expected: FAIL
+
+ [sec-fetch-dest]
+ expected: FAIL
+
+ [sec-fetch-user]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/css-font-face.sub.tentative.html.ini b/tests/wpt/meta/fetch/metadata/generated/css-font-face.sub.tentative.html.ini
new file mode 100644
index 00000000000..b856b4c90f3
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/css-font-face.sub.tentative.html.ini
@@ -0,0 +1,45 @@
+[css-font-face.sub.tentative.html]
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [sec-fetch-user - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade (header not sent)]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS upgrade]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/css-images.https.sub.tentative.html.ini b/tests/wpt/meta/fetch/metadata/generated/css-images.https.sub.tentative.html.ini
new file mode 100644
index 00000000000..a1ab6094831
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/css-images.https.sub.tentative.html.ini
@@ -0,0 +1,268 @@
+[css-images.https.sub.tentative.html]
+ expected: TIMEOUT
+ [background-image sec-fetch-site - Same origin]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - Same origin]
+ expected: FAIL
+
+ [content sec-fetch-site - Same origin]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Same origin]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Same origin]
+ expected: FAIL
+
+ [background-image sec-fetch-site - Cross-site]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - Cross-site]
+ expected: FAIL
+
+ [content sec-fetch-site - Cross-site]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Cross-site]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Cross-site]
+ expected: FAIL
+
+ [background-image sec-fetch-site - Same site]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - Same site]
+ expected: FAIL
+
+ [content sec-fetch-site - Same site]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Same site]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Same site]
+ expected: FAIL
+
+ [background-image sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [content sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [background-image sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [content sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [background-image sec-fetch-site - Cross-Site -> Same Origin]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - Cross-Site -> Same Origin]
+ expected: FAIL
+
+ [content sec-fetch-site - Cross-Site -> Same Origin]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Cross-Site -> Same Origin]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Cross-Site -> Same Origin]
+ expected: FAIL
+
+ [background-image sec-fetch-site - Cross-Site -> Same-Site]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - Cross-Site -> Same-Site]
+ expected: FAIL
+
+ [content sec-fetch-site - Cross-Site -> Same-Site]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Cross-Site -> Same-Site]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Cross-Site -> Same-Site]
+ expected: FAIL
+
+ [background-image sec-fetch-site - Cross-Site -> Cross-Site]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - Cross-Site -> Cross-Site]
+ expected: FAIL
+
+ [content sec-fetch-site - Cross-Site -> Cross-Site]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Cross-Site -> Cross-Site]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Cross-Site -> Cross-Site]
+ expected: FAIL
+
+ [background-image sec-fetch-site - Same-Origin -> Same Origin]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - Same-Origin -> Same Origin]
+ expected: FAIL
+
+ [content sec-fetch-site - Same-Origin -> Same Origin]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Same-Origin -> Same Origin]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Same-Origin -> Same Origin]
+ expected: FAIL
+
+ [background-image sec-fetch-site - Same-Origin -> Same-Site]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - Same-Origin -> Same-Site]
+ expected: FAIL
+
+ [content sec-fetch-site - Same-Origin -> Same-Site]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Same-Origin -> Same-Site]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Same-Origin -> Same-Site]
+ expected: FAIL
+
+ [background-image sec-fetch-site - Same-Origin -> Cross-Site]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - Same-Origin -> Cross-Site]
+ expected: FAIL
+
+ [content sec-fetch-site - Same-Origin -> Cross-Site]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Same-Origin -> Cross-Site]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Same-Origin -> Cross-Site]
+ expected: FAIL
+
+ [background-image sec-fetch-site - Same-Site -> Same Origin]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - Same-Site -> Same Origin]
+ expected: FAIL
+
+ [content sec-fetch-site - Same-Site -> Same Origin]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Same-Site -> Same Origin]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Same-Site -> Same Origin]
+ expected: FAIL
+
+ [background-image sec-fetch-site - Same-Site -> Same-Site]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - Same-Site -> Same-Site]
+ expected: FAIL
+
+ [content sec-fetch-site - Same-Site -> Same-Site]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Same-Site -> Same-Site]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Same-Site -> Same-Site]
+ expected: FAIL
+
+ [background-image sec-fetch-site - Same-Site -> Cross-Site]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - Same-Site -> Cross-Site]
+ expected: FAIL
+
+ [content sec-fetch-site - Same-Site -> Cross-Site]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Same-Site -> Cross-Site]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Same-Site -> Cross-Site]
+ expected: FAIL
+
+ [background-image sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: FAIL
+
+ [content sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: FAIL
+
+ [cursor sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: FAIL
+
+ [background-image sec-fetch-mode]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-mode]
+ expected: FAIL
+
+ [content sec-fetch-mode]
+ expected: FAIL
+
+ [cursor sec-fetch-mode]
+ expected: FAIL
+
+ [list-style-image sec-fetch-mode]
+ expected: FAIL
+
+ [background-image sec-fetch-dest]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-dest]
+ expected: FAIL
+
+ [content sec-fetch-dest]
+ expected: FAIL
+
+ [cursor sec-fetch-dest]
+ expected: FAIL
+
+ [list-style-image sec-fetch-dest]
+ expected: FAIL
+
+ [content sec-fetch-user]
+ expected: FAIL
+
+ [cursor sec-fetch-user]
+ expected: FAIL
+
+ [list-style-image sec-fetch-user]
+ expected: FAIL
+
+ [border-image sec-fetch-user]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/css-images.sub.tentative.html.ini b/tests/wpt/meta/fetch/metadata/generated/css-images.sub.tentative.html.ini
new file mode 100644
index 00000000000..7b4cf2c5ae7
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/css-images.sub.tentative.html.ini
@@ -0,0 +1,190 @@
+[css-images.sub.tentative.html]
+ expected: TIMEOUT
+ [content sec-fetch-site - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [content sec-fetch-site - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [content sec-fetch-site - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [cursor sec-fetch-site - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [content sec-fetch-mode - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [cursor sec-fetch-mode - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [list-style-image sec-fetch-mode - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [content sec-fetch-mode - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [cursor sec-fetch-mode - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [list-style-image sec-fetch-mode - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [content sec-fetch-mode - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [cursor sec-fetch-mode - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [list-style-image sec-fetch-mode - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [content sec-fetch-dest - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [cursor sec-fetch-dest - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [list-style-image sec-fetch-dest - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [content sec-fetch-dest - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [cursor sec-fetch-dest - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [list-style-image sec-fetch-dest - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [content sec-fetch-dest - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [cursor sec-fetch-dest - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [list-style-image sec-fetch-dest - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [content sec-fetch-user - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [cursor sec-fetch-user - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [list-style-image sec-fetch-user - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [content sec-fetch-user - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [cursor sec-fetch-user - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [list-style-image sec-fetch-user - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [content sec-fetch-user - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [cursor sec-fetch-user - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [list-style-image sec-fetch-user - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [content sec-fetch-site - HTTPS downgrade (header not sent)]
+ expected: FAIL
+
+ [cursor sec-fetch-site - HTTPS downgrade (header not sent)]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - HTTPS downgrade (header not sent)]
+ expected: FAIL
+
+ [background-image sec-fetch-site - HTTPS upgrade]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - HTTPS upgrade]
+ expected: FAIL
+
+ [content sec-fetch-site - HTTPS upgrade]
+ expected: FAIL
+
+ [cursor sec-fetch-site - HTTPS upgrade]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - HTTPS upgrade]
+ expected: FAIL
+
+ [background-image sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: FAIL
+
+ [content sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: FAIL
+
+ [cursor sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: FAIL
+
+ [list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: FAIL
+
+ [border-image sec-fetch-site - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [border-image sec-fetch-site - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [border-image sec-fetch-site - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [border-image sec-fetch-mode - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [border-image sec-fetch-mode - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [border-image sec-fetch-mode - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [border-image sec-fetch-dest - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [border-image sec-fetch-dest - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [border-image sec-fetch-dest - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [border-image sec-fetch-user - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [border-image sec-fetch-user - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [border-image sec-fetch-user - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [border-image sec-fetch-site - HTTPS downgrade (header not sent)]
+ expected: FAIL
+
+ [background-image sec-fetch-site - HTTPS downgrade (header not sent)]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-a.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-a.sub.html.ini
new file mode 100644
index 00000000000..6f19fd27de4
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-a.sub.html.ini
@@ -0,0 +1,6 @@
+[element-a.sub.html]
+ [sec-fetch-site - HTTPS upgrade - no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade - no attributes]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-area.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-area.sub.html.ini
new file mode 100644
index 00000000000..a82f7428f6a
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-area.sub.html.ini
@@ -0,0 +1,46 @@
+[element-area.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination - no attributes]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-origin destination - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-origin destination - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade (header not sent) - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS upgrade - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade - no attributes]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-audio.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-audio.https.sub.html.ini
new file mode 100644
index 00000000000..4a4d16a5676
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-audio.https.sub.html.ini
@@ -0,0 +1,60 @@
+[element-audio.https.sub.html]
+ [sec-fetch-site - Same origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade, no attributes]
+ expected: FAIL
+
+ [sec-fetch-mode - no attributes]
+ expected: FAIL
+
+ [sec-fetch-mode - attributes: crossorigin]
+ expected: FAIL
+
+ [sec-fetch-mode - attributes: crossorigin=anonymous]
+ expected: FAIL
+
+ [sec-fetch-mode - attributes: crossorigin=use-credentials]
+ expected: FAIL
+
+ [sec-fetch-dest - no attributes]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-audio.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-audio.sub.html.ini
new file mode 100644
index 00000000000..3b31ea96366
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-audio.sub.html.ini
@@ -0,0 +1,6 @@
+[element-audio.sub.html]
+ [sec-fetch-site - HTTPS upgrade, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade, no attributes]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-embed.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-embed.https.sub.html.ini
new file mode 100644
index 00000000000..a61ffa1463c
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-embed.https.sub.html.ini
@@ -0,0 +1,52 @@
+[element-embed.https.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Same origin]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Cross-site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same Origin]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Cross-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same Origin]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same Origin]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Cross-Site]
+ expected: NOTRUN
+
+ [sec-fetch-mode]
+ expected: NOTRUN
+
+ [sec-fetch-dest]
+ expected: NOTRUN
+
+ [sec-fetch-user]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-embed.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-embed.sub.html.ini
new file mode 100644
index 00000000000..1afa0345596
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-embed.sub.html.ini
@@ -0,0 +1,46 @@
+[element-embed.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-origin destination]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-origin destination]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade (header not sent)]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS upgrade]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-frame.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-frame.sub.html.ini
new file mode 100644
index 00000000000..94bf6c786c3
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-frame.sub.html.ini
@@ -0,0 +1,46 @@
+[element-frame.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-origin destination]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-origin destination]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade (header not sent)]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS upgrade]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-iframe.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-iframe.sub.html.ini
new file mode 100644
index 00000000000..6d496e923ca
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-iframe.sub.html.ini
@@ -0,0 +1,6 @@
+[element-iframe.sub.html]
+ [sec-fetch-site - HTTPS upgrade]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.https.sub.html.ini
new file mode 100644
index 00000000000..215ff43521e
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.https.sub.html.ini
@@ -0,0 +1,61 @@
+[element-img-environment-change.https.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Same origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same site, no attributes]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same Origin, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same-Site, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Cross-Site, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same Origin, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same Origin, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same-Site, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Cross-Site, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - attributes: crossorigin]
+ expected: NOTRUN
+
+ [sec-fetch-mode - attributes: crossorigin=anonymous]
+ expected: NOTRUN
+
+ [sec-fetch-mode - attributes: crossorigin=use-credentials]
+ expected: NOTRUN
+
+ [sec-fetch-dest - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - no attributes]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini
new file mode 100644
index 00000000000..3b66eaffa45
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini
@@ -0,0 +1,46 @@
+[element-img-environment-change.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination, no attributes]
+ expected: TIMEOUT
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-origin destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-origin destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade (header not sent), no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS upgrade, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade, no attributes]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-img.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-img.https.sub.html.ini
new file mode 100644
index 00000000000..13f6a1ecd91
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-img.https.sub.html.ini
@@ -0,0 +1,117 @@
+[element-img.https.sub.html]
+ [sec-fetch-site - src - Same origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - srcset - Same origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - src - Cross-site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - srcset - Cross-site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - src - Same site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - srcset - Same site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - src - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - srcset - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - src - Same-Origin -> Same-Site -> Same-Origin redirect, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - srcset - Same-Origin -> Same-Site -> Same-Origin redirect, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - src - Cross-Site -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - srcset - Cross-Site -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - src - Cross-Site -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - srcset - Cross-Site -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - src - Cross-Site -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - srcset - Cross-Site -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - src - Same-Origin -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - srcset - Same-Origin -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - src - Same-Origin -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - srcset - Same-Origin -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - src - Same-Origin -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - srcset - Same-Origin -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - src - Same-Site -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - srcset - Same-Site -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - src - Same-Site -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - srcset - Same-Site -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - src - Same-Site -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - srcset - Same-Site -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - src - HTTPS downgrade-upgrade, no attributes]
+ expected: FAIL
+
+ [sec-fetch-mode - src - no attributes]
+ expected: FAIL
+
+ [sec-fetch-mode - src - attributes: crossorigin]
+ expected: FAIL
+
+ [sec-fetch-mode - src - attributes: crossorigin=anonymous]
+ expected: FAIL
+
+ [sec-fetch-mode - src - attributes: crossorigin=use-credentials]
+ expected: FAIL
+
+ [sec-fetch-mode - srcset - no attributes]
+ expected: FAIL
+
+ [sec-fetch-mode - srcset - attributes: crossorigin]
+ expected: FAIL
+
+ [sec-fetch-mode - srcset - attributes: crossorigin=anonymous]
+ expected: FAIL
+
+ [sec-fetch-mode - srcset - attributes: crossorigin=use-credentials]
+ expected: FAIL
+
+ [sec-fetch-dest - src - no attributes]
+ expected: FAIL
+
+ [sec-fetch-dest - srcset - no attributes]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-img.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-img.sub.html.ini
new file mode 100644
index 00000000000..2d53a409cf2
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-img.sub.html.ini
@@ -0,0 +1,12 @@
+[element-img.sub.html]
+ [sec-fetch-site - src - HTTPS upgrade, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - srcset - HTTPS upgrade, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - src - HTTPS downgrade-upgrade, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - srcset - HTTPS downgrade-upgrade, no attributes]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-input-image.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-input-image.https.sub.html.ini
new file mode 100644
index 00000000000..f749f3403a6
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-input-image.https.sub.html.ini
@@ -0,0 +1,55 @@
+[element-input-image.https.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Same origin, no attributes]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Cross-site, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same site, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same Origin, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same-Site, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Cross-Site, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same Origin, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same Origin, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same-Site, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Cross-Site, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - no attributes]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-input-image.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-input-image.sub.html.ini
new file mode 100644
index 00000000000..59c416c96c0
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-input-image.sub.html.ini
@@ -0,0 +1,46 @@
+[element-input-image.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination, no attributes]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-origin destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-origin destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade (header not sent), no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS upgrade, no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade, no attributes]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-link-icon.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-link-icon.https.sub.html.ini
new file mode 100644
index 00000000000..1497c8d2770
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-link-icon.https.sub.html.ini
@@ -0,0 +1,61 @@
+[element-link-icon.https.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Same origin no attributes]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Cross-site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same Origin no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Cross-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same Origin no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same Origin no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Cross-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode attributes: crossorigin]
+ expected: NOTRUN
+
+ [sec-fetch-mode attributes: crossorigin=anonymous]
+ expected: NOTRUN
+
+ [sec-fetch-mode attributes: crossorigin=use-credentials]
+ expected: NOTRUN
+
+ [sec-fetch-dest no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user no attributes]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-link-icon.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-link-icon.sub.html.ini
new file mode 100644
index 00000000000..e2e601ee012
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-link-icon.sub.html.ini
@@ -0,0 +1,46 @@
+[element-link-icon.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination no attributes]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-origin destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-origin destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade (header not sent) no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS upgrade no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade no attributes]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-link-prefetch.https.optional.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-link-prefetch.https.optional.sub.html.ini
new file mode 100644
index 00000000000..3bcfbe3081b
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-link-prefetch.https.optional.sub.html.ini
@@ -0,0 +1,97 @@
+[element-link-prefetch.https.optional.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Same origin no attributes]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Cross-site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same Origin no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Cross-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same Origin no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same Origin no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Cross-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode attributes: crossorigin]
+ expected: NOTRUN
+
+ [sec-fetch-mode attributes: crossorigin=anonymous]
+ expected: NOTRUN
+
+ [sec-fetch-mode attributes: crossorigin=use-credentials]
+ expected: NOTRUN
+
+ [sec-fetch-dest no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest attributes: as=audio]
+ expected: NOTRUN
+
+ [sec-fetch-dest attributes: as=document]
+ expected: NOTRUN
+
+ [sec-fetch-dest attributes: as=embed]
+ expected: NOTRUN
+
+ [sec-fetch-dest attributes: as=fetch]
+ expected: NOTRUN
+
+ [sec-fetch-dest attributes: as=font]
+ expected: NOTRUN
+
+ [sec-fetch-dest attributes: as=image]
+ expected: NOTRUN
+
+ [sec-fetch-dest attributes: as=object]
+ expected: NOTRUN
+
+ [sec-fetch-dest attributes: as=script]
+ expected: NOTRUN
+
+ [sec-fetch-dest attributes: as=style]
+ expected: NOTRUN
+
+ [sec-fetch-dest attributes: as=track]
+ expected: NOTRUN
+
+ [sec-fetch-dest attributes: as=video]
+ expected: NOTRUN
+
+ [sec-fetch-dest attributes: as=worker]
+ expected: NOTRUN
+
+ [sec-fetch-user no attributes]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-link-prefetch.optional.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-link-prefetch.optional.sub.html.ini
new file mode 100644
index 00000000000..dbde77c8aa8
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-link-prefetch.optional.sub.html.ini
@@ -0,0 +1,46 @@
+[element-link-prefetch.optional.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination no attributes]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-origin destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-origin destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade (header not sent) no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS upgrade no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade no attributes]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-meta-refresh.https.optional.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-meta-refresh.https.optional.sub.html.ini
new file mode 100644
index 00000000000..72a2a9f3199
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-meta-refresh.https.optional.sub.html.ini
@@ -0,0 +1,55 @@
+[element-meta-refresh.https.optional.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Same origin]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Cross-site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same Origin]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Cross-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same Origin]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same Origin]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Cross-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: NOTRUN
+
+ [sec-fetch-mode]
+ expected: NOTRUN
+
+ [sec-fetch-dest]
+ expected: NOTRUN
+
+ [sec-fetch-user]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-meta-refresh.optional.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-meta-refresh.optional.sub.html.ini
new file mode 100644
index 00000000000..b7dffc93d56
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-meta-refresh.optional.sub.html.ini
@@ -0,0 +1,46 @@
+[element-meta-refresh.optional.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-origin destination]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-origin destination]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade (header not sent)]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS upgrade]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-picture.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-picture.https.sub.html.ini
new file mode 100644
index 00000000000..2280b961e90
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-picture.https.sub.html.ini
@@ -0,0 +1,171 @@
+[element-picture.https.sub.html]
+ [sec-fetch-site - img[src\] - Same origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[srcset\] - Same origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - source[srcset\] - Same origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[src\] - Cross-site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[srcset\] - Cross-site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - source[srcset\] - Cross-site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[src\] - Same site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[srcset\] - Same site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - source[srcset\] - Same site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[src\] - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[srcset\] - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - source[srcset\] - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[src\] - Same-Origin -> Same-Site -> Same-Origin redirect, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[srcset\] - Same-Origin -> Same-Site -> Same-Origin redirect, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - source[srcset\] - Same-Origin -> Same-Site -> Same-Origin redirect, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[src\] - Cross-Site -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[srcset\] - Cross-Site -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - source[srcset\] - Cross-Site -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[src\] - Cross-Site -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[srcset\] - Cross-Site -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - source[srcset\] - Cross-Site -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[src\] - Cross-Site -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[srcset\] - Cross-Site -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - source[srcset\] - Cross-Site -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[src\] - Same-Origin -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[srcset\] - Same-Origin -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - source[srcset\] - Same-Origin -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[src\] - Same-Origin -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[srcset\] - Same-Origin -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - source[srcset\] - Same-Origin -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[src\] - Same-Origin -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[srcset\] - Same-Origin -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - source[srcset\] - Same-Origin -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[src\] - Same-Site -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[srcset\] - Same-Site -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - source[srcset\] - Same-Site -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[src\] - Same-Site -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[srcset\] - Same-Site -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - source[srcset\] - Same-Site -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[src\] - Same-Site -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[srcset\] - Same-Site -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - source[srcset\] - Same-Site -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-mode - img[src\] - no attributes]
+ expected: FAIL
+
+ [sec-fetch-mode - img[srcset\] - no attributes]
+ expected: FAIL
+
+ [sec-fetch-mode - source[srcset\] - no attributes]
+ expected: FAIL
+
+ [sec-fetch-mode - img[src\] - attributes: crossorigin]
+ expected: FAIL
+
+ [sec-fetch-mode - img[srcset\] - attributes: crossorigin]
+ expected: FAIL
+
+ [sec-fetch-mode - source[srcset\] - attributes: crossorigin]
+ expected: FAIL
+
+ [sec-fetch-mode - img[src\] - attributes: crossorigin=anonymous]
+ expected: FAIL
+
+ [sec-fetch-mode - img[srcset\] - attributes: crossorigin=anonymous]
+ expected: FAIL
+
+ [sec-fetch-mode - source[srcset\] - attributes: crossorigin=anonymous]
+ expected: FAIL
+
+ [sec-fetch-mode - img[src\] - attributes: crossorigin=use-credentials]
+ expected: FAIL
+
+ [sec-fetch-mode - img[srcset\] - attributes: crossorigin=use-credentials]
+ expected: FAIL
+
+ [sec-fetch-mode - source[srcset\] - attributes: crossorigin=use-credentials]
+ expected: FAIL
+
+ [sec-fetch-dest - img[src\] - no attributes]
+ expected: FAIL
+
+ [sec-fetch-dest - img[srcset\] - no attributes]
+ expected: FAIL
+
+ [sec-fetch-dest - source[srcset\] - no attributes]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-picture.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-picture.sub.html.ini
new file mode 100644
index 00000000000..96ee7c6eafe
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-picture.sub.html.ini
@@ -0,0 +1,18 @@
+[element-picture.sub.html]
+ [sec-fetch-site - img[src\] - HTTPS upgrade, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[srcset\] - HTTPS upgrade, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - source[srcset\] - HTTPS upgrade, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[src\] - HTTPS downgrade-upgrade, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - img[srcset\] - HTTPS downgrade-upgrade, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - source[srcset\] - HTTPS downgrade-upgrade, no attributes]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-script.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-script.https.sub.html.ini
new file mode 100644
index 00000000000..ade689e17a5
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-script.https.sub.html.ini
@@ -0,0 +1,102 @@
+[element-script.https.sub.html]
+ [sec-fetch-site - Same origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same origin, attributes: type=module]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-site, attributes: type=module]
+ expected: FAIL
+
+ [sec-fetch-site - Same site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same site, attributes: type=module]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect, attributes: type=module]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect, attributes: type=module]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same Origin, attributes: type=module]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same-Site, attributes: type=module]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Cross-Site, attributes: type=module]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same Origin, attributes: type=module]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site, attributes: type=module]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site, attributes: type=module]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same Origin, attributes: type=module]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same-Site, attributes: type=module]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Cross-Site, attributes: type=module]
+ expected: FAIL
+
+ [sec-fetch-mode - no attributes]
+ expected: FAIL
+
+ [sec-fetch-mode - attributes: type=module]
+ expected: FAIL
+
+ [sec-fetch-mode - attributes: crossorigin]
+ expected: FAIL
+
+ [sec-fetch-mode - attributes: crossorigin=anonymous]
+ expected: FAIL
+
+ [sec-fetch-mode - attributes: crossorigin=use-credentials]
+ expected: FAIL
+
+ [sec-fetch-dest - no attributes]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-script.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-script.sub.html.ini
new file mode 100644
index 00000000000..247f8800f48
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-script.sub.html.ini
@@ -0,0 +1,12 @@
+[element-script.sub.html]
+ [sec-fetch-site - HTTPS upgrade, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS upgrade, attributes: type=module]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade, attributes: type=module]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-video-poster.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-video-poster.https.sub.html.ini
new file mode 100644
index 00000000000..8a8a1dcb679
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-video-poster.https.sub.html.ini
@@ -0,0 +1,55 @@
+[element-video-poster.https.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Same origin]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Cross-site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same Origin]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Cross-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same Origin]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same Origin]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Cross-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: NOTRUN
+
+ [sec-fetch-mode]
+ expected: NOTRUN
+
+ [sec-fetch-dest]
+ expected: NOTRUN
+
+ [sec-fetch-user]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-video-poster.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-video-poster.sub.html.ini
new file mode 100644
index 00000000000..d711f12d397
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-video-poster.sub.html.ini
@@ -0,0 +1,46 @@
+[element-video-poster.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-origin destination]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-origin destination]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade (header not sent)]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS upgrade]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-video.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-video.https.sub.html.ini
new file mode 100644
index 00000000000..56699467370
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-video.https.sub.html.ini
@@ -0,0 +1,60 @@
+[element-video.https.sub.html]
+ [sec-fetch-site - Same origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same Origin, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Cross-Site, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade, no attributes]
+ expected: FAIL
+
+ [sec-fetch-mode - no attributes]
+ expected: FAIL
+
+ [sec-fetch-mode - attributes: crossorigin]
+ expected: FAIL
+
+ [sec-fetch-mode - attributes: crossorigin=anonymous]
+ expected: FAIL
+
+ [sec-fetch-mode - attributes: crossorigin=use-credentials]
+ expected: FAIL
+
+ [sec-fetch-dest - no attributes]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-video.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-video.sub.html.ini
new file mode 100644
index 00000000000..a33a4431dcc
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/element-video.sub.html.ini
@@ -0,0 +1,6 @@
+[element-video.sub.html]
+ [sec-fetch-site - HTTPS upgrade, no attributes]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade, no attributes]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/fetch-via-serviceworker.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/fetch-via-serviceworker.https.sub.html.ini
new file mode 100644
index 00000000000..35a5acda9c7
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/fetch-via-serviceworker.https.sub.html.ini
@@ -0,0 +1,120 @@
+[fetch-via-serviceworker.https.sub.html]
+ [sec-fetch-site - Same origin, init: mode=no-cors - respondWith]
+ expected: FAIL
+
+ [sec-fetch-site - Same origin, init: mode=no-cors - fallback]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-site, init: mode=no-cors - respondWith]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-site, init: mode=no-cors - fallback]
+ expected: FAIL
+
+ [sec-fetch-site - Same site, init: mode=no-cors - respondWith]
+ expected: FAIL
+
+ [sec-fetch-site - Same site, init: mode=no-cors - fallback]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect, init: mode=no-cors - respondWith]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect, init: mode=no-cors - fallback]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect, init: mode=no-cors - respondWith]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect, init: mode=no-cors - fallback]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same Origin, init: mode=no-cors - respondWith]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same Origin, init: mode=no-cors - fallback]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same-Site, init: mode=no-cors - respondWith]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same-Site, init: mode=no-cors - fallback]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Cross-Site, init: mode=no-cors - respondWith]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Cross-Site, init: mode=no-cors - fallback]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same Origin, init: mode=no-cors - respondWith]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same Origin, init: mode=no-cors - fallback]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site, init: mode=no-cors - respondWith]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site, init: mode=no-cors - fallback]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site, init: mode=no-cors - respondWith]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site, init: mode=no-cors - fallback]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same Origin, init: mode=no-cors - respondWith]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same Origin, init: mode=no-cors - fallback]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same-Site, init: mode=no-cors - respondWith]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same-Site, init: mode=no-cors - fallback]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Cross-Site, init: mode=no-cors - respondWith]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Cross-Site, init: mode=no-cors - fallback]
+ expected: FAIL
+
+ [sec-fetch-mode - no init - respondWith]
+ expected: FAIL
+
+ [sec-fetch-mode - no init - fallback]
+ expected: FAIL
+
+ [sec-fetch-mode - init: mode=cors - respondWith]
+ expected: FAIL
+
+ [sec-fetch-mode - init: mode=cors - fallback]
+ expected: FAIL
+
+ [sec-fetch-mode - init: mode=no-cors - respondWith]
+ expected: FAIL
+
+ [sec-fetch-mode - init: mode=no-cors - fallback]
+ expected: FAIL
+
+ [sec-fetch-mode - init: mode=same-origin - respondWith]
+ expected: FAIL
+
+ [sec-fetch-mode - init: mode=same-origin - fallback]
+ expected: FAIL
+
+ [sec-fetch-dest - no init - respondWith]
+ expected: FAIL
+
+ [sec-fetch-dest - no init - fallback]
+ expected: FAIL
+
+ [sec-fetch-user - no init - respondWith]
+ expected: FAIL
+
+ [sec-fetch-user - no init - fallback]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/fetch.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/fetch.https.sub.html.ini
new file mode 100644
index 00000000000..7ae4931e7bc
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/fetch.https.sub.html.ini
@@ -0,0 +1,57 @@
+[fetch.https.sub.html]
+ [sec-fetch-site - Same origin, init: mode=no-cors]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-site, init: mode=no-cors]
+ expected: FAIL
+
+ [sec-fetch-site - Same site, init: mode=no-cors]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect, init: mode=no-cors]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect, init: mode=no-cors]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same Origin, init: mode=no-cors]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same-Site, init: mode=no-cors]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Cross-Site, init: mode=no-cors]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same Origin, init: mode=no-cors]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site, init: mode=no-cors]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site, init: mode=no-cors]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same Origin, init: mode=no-cors]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same-Site, init: mode=no-cors]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Cross-Site, init: mode=no-cors]
+ expected: FAIL
+
+ [sec-fetch-mode - no init]
+ expected: FAIL
+
+ [sec-fetch-mode - init: mode=cors]
+ expected: FAIL
+
+ [sec-fetch-mode - init: mode=no-cors]
+ expected: FAIL
+
+ [sec-fetch-mode - init: mode=same-origin]
+ expected: FAIL
+
+ [sec-fetch-dest - no init]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/fetch.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/fetch.sub.html.ini
new file mode 100644
index 00000000000..b24c676699b
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/fetch.sub.html.ini
@@ -0,0 +1,6 @@
+[fetch.sub.html]
+ [sec-fetch-site - HTTPS upgrade, no init]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade, no init]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/form-submission.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/form-submission.sub.html.ini
new file mode 100644
index 00000000000..4841ed06a03
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/form-submission.sub.html.ini
@@ -0,0 +1,91 @@
+[form-submission.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination - GET]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination - POST]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination - GET]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination - POST]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination - GET]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination - POST]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-origin destination - GET]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-origin destination - POST]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination - GET]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination - POST]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination - GET]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination - POST]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination - GET]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination - POST]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination - GET]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination - POST]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination - GET]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination - POST]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-origin destination - GET]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-origin destination - POST]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination - GET]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination - POST]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination - GET]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination - POST]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade (header not sent) - GET]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade (header not sent) - POST]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS upgrade - GET]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS upgrade - POST]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade - GET]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade - POST]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/header-link.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/header-link.https.sub.html.ini
new file mode 100644
index 00000000000..6346c6dbf6c
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/header-link.https.sub.html.ini
@@ -0,0 +1,99 @@
+[header-link.https.sub.html]
+ [sec-fetch-site rel=icon - Same origin]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Same origin]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - Cross-site]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Cross-site]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - Same site]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Same site]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - Same-Origin -> Cross-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Same-Origin -> Cross-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - Same-Origin -> Same-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Same-Origin -> Same-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - Cross-Site -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Cross-Site -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - Cross-Site -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Cross-Site -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - Cross-Site -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Cross-Site -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - Same-Origin -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Same-Origin -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - Same-Origin -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Same-Origin -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - Same-Origin -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Same-Origin -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - Same-Site -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Same-Site -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - Same-Site -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Same-Site -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - Same-Site -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Same-Site -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-mode rel=icon]
+ expected: FAIL
+
+ [sec-fetch-mode rel=stylesheet]
+ expected: FAIL
+
+ [sec-fetch-dest rel=icon]
+ expected: FAIL
+
+ [sec-fetch-user rel=icon]
+ expected: FAIL
+
+ [sec-fetch-user rel=stylesheet]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/header-link.https.sub.tentative.html.ini b/tests/wpt/meta/fetch/metadata/generated/header-link.https.sub.tentative.html.ini
new file mode 100644
index 00000000000..738d6b00900
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/header-link.https.sub.tentative.html.ini
@@ -0,0 +1,3 @@
+[header-link.https.sub.tentative.html]
+ [sec-fetch-dest rel=stylesheet]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/header-link.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/header-link.sub.html.ini
new file mode 100644
index 00000000000..cb3931b0d7a
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/header-link.sub.html.ini
@@ -0,0 +1,90 @@
+[header-link.sub.html]
+ [sec-fetch-site rel=icon - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [sec-fetch-mode rel=icon - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [sec-fetch-mode rel=stylesheet - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [sec-fetch-mode rel=icon - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [sec-fetch-mode rel=stylesheet - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [sec-fetch-mode rel=icon - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [sec-fetch-mode rel=stylesheet - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [sec-fetch-dest rel=icon - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [sec-fetch-dest rel=stylesheet - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [sec-fetch-dest rel=icon - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [sec-fetch-dest rel=stylesheet - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [sec-fetch-dest rel=icon - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [sec-fetch-dest rel=stylesheet - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [sec-fetch-user rel=icon - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [sec-fetch-user rel=stylesheet - Not sent to non-trustworthy same-origin destination]
+ expected: FAIL
+
+ [sec-fetch-user rel=icon - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [sec-fetch-user rel=stylesheet - Not sent to non-trustworthy same-site destination]
+ expected: FAIL
+
+ [sec-fetch-user rel=icon - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [sec-fetch-user rel=stylesheet - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - HTTPS downgrade (header not sent)]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - HTTPS downgrade (header not sent)]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - HTTPS upgrade]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - HTTPS upgrade]
+ expected: FAIL
+
+ [sec-fetch-site rel=icon - HTTPS downgrade-upgrade]
+ expected: FAIL
+
+ [sec-fetch-site rel=stylesheet - HTTPS downgrade-upgrade]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/header-refresh.https.optional.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/header-refresh.https.optional.sub.html.ini
new file mode 100644
index 00000000000..1977a28c32b
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/header-refresh.https.optional.sub.html.ini
@@ -0,0 +1,55 @@
+[header-refresh.https.optional.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Same origin]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Cross-site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same Origin]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Cross-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same Origin]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same Origin]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Cross-Site]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: NOTRUN
+
+ [sec-fetch-mode]
+ expected: NOTRUN
+
+ [sec-fetch-dest]
+ expected: NOTRUN
+
+ [sec-fetch-user]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/header-refresh.optional.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/header-refresh.optional.sub.html.ini
new file mode 100644
index 00000000000..33ce93d57e8
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/header-refresh.optional.sub.html.ini
@@ -0,0 +1,46 @@
+[header-refresh.optional.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-origin destination]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-origin destination]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade (header not sent)]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS upgrade]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/script-module-import-dynamic.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/script-module-import-dynamic.https.sub.html.ini
new file mode 100644
index 00000000000..03be57bbc6c
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/script-module-import-dynamic.https.sub.html.ini
@@ -0,0 +1,48 @@
+[script-module-import-dynamic.https.sub.html]
+ [sec-fetch-site - Same origin]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-site]
+ expected: FAIL
+
+ [sec-fetch-site - Same site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-mode]
+ expected: FAIL
+
+ [sec-fetch-dest]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/script-module-import-dynamic.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/script-module-import-dynamic.sub.html.ini
new file mode 100644
index 00000000000..9359c473d82
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/script-module-import-dynamic.sub.html.ini
@@ -0,0 +1,6 @@
+[script-module-import-dynamic.sub.html]
+ [sec-fetch-site - HTTPS upgrade]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/script-module-import-static.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/script-module-import-static.https.sub.html.ini
new file mode 100644
index 00000000000..bdea2870180
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/script-module-import-static.https.sub.html.ini
@@ -0,0 +1,48 @@
+[script-module-import-static.https.sub.html]
+ [sec-fetch-site - Same origin]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-site]
+ expected: FAIL
+
+ [sec-fetch-site - Same site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-mode]
+ expected: FAIL
+
+ [sec-fetch-dest]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/script-module-import-static.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/script-module-import-static.sub.html.ini
new file mode 100644
index 00000000000..f2964cf3a1d
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/script-module-import-static.sub.html.ini
@@ -0,0 +1,6 @@
+[script-module-import-static.sub.html]
+ [sec-fetch-site - HTTPS upgrade]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/serviceworker.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/serviceworker.https.sub.html.ini
new file mode 100644
index 00000000000..9cc084c6449
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/serviceworker.https.sub.html.ini
@@ -0,0 +1,30 @@
+[serviceworker.https.sub.html]
+ [sec-fetch-site - Same origin, no options - registration]
+ expected: FAIL
+
+ [sec-fetch-site - Same origin, no options - updating]
+ expected: FAIL
+
+ [sec-fetch-mode - options: type=classic - registration]
+ expected: FAIL
+
+ [sec-fetch-mode - options: type=classic - updating]
+ expected: FAIL
+
+ [sec-fetch-mode - no options - registration]
+ expected: FAIL
+
+ [sec-fetch-mode - no options - updating]
+ expected: FAIL
+
+ [sec-fetch-dest - no options - registration]
+ expected: FAIL
+
+ [sec-fetch-dest - no options - updating]
+ expected: FAIL
+
+ [sec-fetch-user - no options - registration]
+ expected: FAIL
+
+ [sec-fetch-user - no options - updating]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/svg-image.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/svg-image.https.sub.html.ini
new file mode 100644
index 00000000000..fc5f1de1d19
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/svg-image.https.sub.html.ini
@@ -0,0 +1,64 @@
+[svg-image.https.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Same origin no attributes]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Cross-site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same Origin no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Same-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-Site -> Cross-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same Origin no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Same-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Origin -> Cross-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same Origin no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Same-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same-Site -> Cross-Site no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode attributes: crossorigin]
+ expected: NOTRUN
+
+ [sec-fetch-mode attributes: crossorigin=anonymous]
+ expected: NOTRUN
+
+ [sec-fetch-mode attributes: crossorigin=use-credentials]
+ expected: NOTRUN
+
+ [sec-fetch-dest no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user no attributes]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/svg-image.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/svg-image.sub.html.ini
new file mode 100644
index 00000000000..c563b49ee04
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/svg-image.sub.html.ini
@@ -0,0 +1,46 @@
+[svg-image.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination no attributes]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-origin destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-origin destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade (header not sent) no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS upgrade no attributes]
+ expected: NOTRUN
+
+ [sec-fetch-site - HTTPS downgrade-upgrade no attributes]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/window-history.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/window-history.https.sub.html.ini
new file mode 100644
index 00000000000..40416da6081
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/window-history.https.sub.html.ini
@@ -0,0 +1,37 @@
+[window-history.https.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Same origin - history.back]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Same origin - history.forward]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-site - history.back]
+ expected: NOTRUN
+
+ [sec-fetch-site - Cross-site - history.forward]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same site - history.back]
+ expected: NOTRUN
+
+ [sec-fetch-site - Same site - history.forward]
+ expected: NOTRUN
+
+ [sec-fetch-mode - history.back]
+ expected: NOTRUN
+
+ [sec-fetch-mode - history.forward]
+ expected: NOTRUN
+
+ [sec-fetch-dest - history.back]
+ expected: NOTRUN
+
+ [sec-fetch-dest - history.forward]
+ expected: NOTRUN
+
+ [sec-fetch-user - history.back]
+ expected: NOTRUN
+
+ [sec-fetch-user - history.forward]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/window-history.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/window-history.sub.html.ini
new file mode 100644
index 00000000000..9752bedb009
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/window-history.sub.html.ini
@@ -0,0 +1,73 @@
+[window-history.sub.html]
+ expected: TIMEOUT
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination - history.back]
+ expected: TIMEOUT
+
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination - history.forward]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination - history.back]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination - history.forward]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination - history.back]
+ expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination - history.forward]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-origin destination - history.back]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-origin destination - history.forward]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination - history.back]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination - history.forward]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination - history.back]
+ expected: NOTRUN
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination - history.forward]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination - history.back]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-origin destination - history.forward]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination - history.back]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination - history.forward]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination - history.back]
+ expected: NOTRUN
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination - history.forward]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-origin destination - history.back]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-origin destination - history.forward]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination - history.back]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination - history.forward]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination - history.back]
+ expected: NOTRUN
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination - history.forward]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/generated/window-location.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/window-location.sub.html.ini
new file mode 100644
index 00000000000..54042826d40
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/window-location.sub.html.ini
@@ -0,0 +1,24 @@
+[window-location.sub.html]
+ [sec-fetch-site - HTTPS upgrade - location]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS upgrade - location.href]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS upgrade - location.assign]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS upgrade - location.replace]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade - location]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade - location.href]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade - location.assign]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade - location.replace]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/worker-dedicated-constructor.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/worker-dedicated-constructor.https.sub.html.ini
new file mode 100644
index 00000000000..71a0d06a338
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/worker-dedicated-constructor.https.sub.html.ini
@@ -0,0 +1,12 @@
+[worker-dedicated-constructor.https.sub.html]
+ [sec-fetch-mode - no options]
+ expected: FAIL
+
+ [sec-fetch-mode - options: type=module]
+ expected: FAIL
+
+ [sec-fetch-dest - no options]
+ expected: FAIL
+
+ [sec-fetch-dest - options: type=module]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/worker-dedicated-constructor.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/worker-dedicated-constructor.sub.html.ini
new file mode 100644
index 00000000000..da6289c1350
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/worker-dedicated-constructor.sub.html.ini
@@ -0,0 +1,24 @@
+[worker-dedicated-constructor.sub.html]
+ [sec-fetch-site - Not sent to non-trustworthy same-site destination, no options]
+ expected: FAIL
+
+ [sec-fetch-site - Not sent to non-trustworthy cross-site destination, no options]
+ expected: FAIL
+
+ [sec-fetch-mode - Not sent to non-trustworthy same-site destination, no options]
+ expected: FAIL
+
+ [sec-fetch-mode - Not sent to non-trustworthy cross-site destination, no options]
+ expected: FAIL
+
+ [sec-fetch-dest - Not sent to non-trustworthy same-site destination, no options]
+ expected: FAIL
+
+ [sec-fetch-dest - Not sent to non-trustworthy cross-site destination, no options]
+ expected: FAIL
+
+ [sec-fetch-user - Not sent to non-trustworthy same-site destination, no options]
+ expected: FAIL
+
+ [sec-fetch-user - Not sent to non-trustworthy cross-site destination, no options]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/worker-dedicated-importscripts.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/worker-dedicated-importscripts.https.sub.html.ini
new file mode 100644
index 00000000000..adf36ed21d4
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/worker-dedicated-importscripts.https.sub.html.ini
@@ -0,0 +1,48 @@
+[worker-dedicated-importscripts.https.sub.html]
+ [sec-fetch-site - Same origin]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-site]
+ expected: FAIL
+
+ [sec-fetch-site - Same site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Cross-Site -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Origin -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same Origin]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Same-Site]
+ expected: FAIL
+
+ [sec-fetch-site - Same-Site -> Cross-Site]
+ expected: FAIL
+
+ [sec-fetch-mode]
+ expected: FAIL
+
+ [sec-fetch-dest]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/worker-dedicated-importscripts.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/worker-dedicated-importscripts.sub.html.ini
new file mode 100644
index 00000000000..906554c2f3b
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/generated/worker-dedicated-importscripts.sub.html.ini
@@ -0,0 +1,6 @@
+[worker-dedicated-importscripts.sub.html]
+ [sec-fetch-site - HTTPS upgrade]
+ expected: FAIL
+
+ [sec-fetch-site - HTTPS downgrade-upgrade]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/paint-worklet.https.html.ini b/tests/wpt/meta/fetch/metadata/paint-worklet.https.html.ini
new file mode 100644
index 00000000000..9337e313a19
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/paint-worklet.https.html.ini
@@ -0,0 +1,3 @@
+[paint-worklet.https.html]
+ [The fetch metadata for paint worklet]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.sub.html.ini b/tests/wpt/meta/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.sub.html.ini
new file mode 100644
index 00000000000..22b7f64784c
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.sub.html.ini
@@ -0,0 +1,46 @@
+[multiple-redirect-https-downgrade-upgrade.sub.html]
+ expected: TIMEOUT
+ [Https downgrade-upgrade script => No headers: sec-fetch-dest]
+ expected: FAIL
+
+ [Https downgrade-upgrade iframe: sec-fetch-dest]
+ expected: FAIL
+
+ [Https downgrade-upgrade script => No headers: sec-fetch-site]
+ expected: FAIL
+
+ [Https downgrade-upgrade object]
+ expected: NOTRUN
+
+ [Https downgrade-upgrade track]
+ expected: NOTRUN
+
+ [Https downgrade-upgrade fetch() api]
+ expected: NOTRUN
+
+ [Https downgrade-upgrade script => No headers: sec-fetch-mode]
+ expected: FAIL
+
+ [Https downgrade-upgrade top level navigation: sec-fetch-site]
+ expected: FAIL
+
+ [Https downgrade-upgrade stylesheet]
+ expected: NOTRUN
+
+ [Https downgrade-upgrade top level navigation: sec-fetch-mode]
+ expected: FAIL
+
+ [Https downgrade-upgrade iframe: sec-fetch-site]
+ expected: FAIL
+
+ [Https downgrade-upgrade embed]
+ expected: TIMEOUT
+
+ [Https downgrade-upgrade top level navigation: sec-fetch-dest]
+ expected: FAIL
+
+ [Https downgrade-upgrade preload]
+ expected: TIMEOUT
+
+ [Https downgrade-upgrade iframe: sec-fetch-mode]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/redirect/redirect-http-upgrade.sub.html.ini b/tests/wpt/meta/fetch/metadata/redirect/redirect-http-upgrade.sub.html.ini
new file mode 100644
index 00000000000..838ccf7fc7f
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/redirect/redirect-http-upgrade.sub.html.ini
@@ -0,0 +1,25 @@
+[redirect-http-upgrade.sub.html]
+ expected: TIMEOUT
+ [Http upgrade embed]
+ expected: TIMEOUT
+
+ [Http upgrade object]
+ expected: NOTRUN
+
+ [Http upgrade preload]
+ expected: TIMEOUT
+
+ [Http upgrade stylesheet]
+ expected: NOTRUN
+
+ [Http upgrade track]
+ expected: NOTRUN
+
+ [Http upgrade top level navigation: sec-fetch-dest]
+ expected: FAIL
+
+ [Http upgrade top level navigation: sec-fetch-mode]
+ expected: FAIL
+
+ [Http upgrade top level navigation: sec-fetch-site]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/redirect/redirect-https-downgrade.sub.html.ini b/tests/wpt/meta/fetch/metadata/redirect/redirect-https-downgrade.sub.html.ini
new file mode 100644
index 00000000000..af7c2782618
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/redirect/redirect-https-downgrade.sub.html.ini
@@ -0,0 +1,16 @@
+[redirect-https-downgrade.sub.html]
+ expected: TIMEOUT
+ [Https downgrade embed]
+ expected: TIMEOUT
+
+ [Https downgrade object]
+ expected: NOTRUN
+
+ [Https downgrade preload]
+ expected: TIMEOUT
+
+ [Https downgrade stylesheet]
+ expected: NOTRUN
+
+ [Https downgrade track]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/metadata/serviceworker-accessors.https.sub.html.ini b/tests/wpt/meta/fetch/metadata/serviceworker-accessors.https.sub.html.ini
new file mode 100644
index 00000000000..2ed5e869c2f
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/serviceworker-accessors.https.sub.html.ini
@@ -0,0 +1,4 @@
+[serviceworker-accessors.https.sub.html]
+ [Sec-Fetch headers in Service Worker fetch handler.]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/metadata/trailing-dot.https.sub.any.js.ini b/tests/wpt/meta/fetch/metadata/trailing-dot.https.sub.any.js.ini
new file mode 100644
index 00000000000..4605b71fcf8
--- /dev/null
+++ b/tests/wpt/meta/fetch/metadata/trailing-dot.https.sub.any.js.ini
@@ -0,0 +1,27 @@
+[trailing-dot.https.sub.any.serviceworker.html]
+ expected: ERROR
+
+[trailing-dot.https.sub.any.sharedworker.html]
+ expected: ERROR
+
+[trailing-dot.https.sub.any.worker.html]
+ [Fetching a resource from a cross-site host, spelled with a trailing dot.]
+ expected: FAIL
+
+ [Fetching a resource from the same origin, but spelled with a trailing dot.]
+ expected: FAIL
+
+ [Fetching a resource from the same site, but spelled with a trailing dot.]
+ expected: FAIL
+
+
+[trailing-dot.https.sub.any.html]
+ [Fetching a resource from a cross-site host, spelled with a trailing dot.]
+ expected: FAIL
+
+ [Fetching a resource from the same origin, but spelled with a trailing dot.]
+ expected: FAIL
+
+ [Fetching a resource from the same site, but spelled with a trailing dot.]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/meta/fetch/nosniff/parsing-nosniff.window.js.ini
new file mode 100644
index 00000000000..736ff6130a5
--- /dev/null
+++ b/tests/wpt/meta/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -0,0 +1,9 @@
+[parsing-nosniff.window.html]
+ [X-Content-Type-Options%3A%20nosniff%0B%2Cnosniff]
+ expected: FAIL
+
+ [X-Content-Type-Options%3A%20nosniff%0B]
+ expected: FAIL
+
+ [X-Content-Type-Options%3A%20nosniff%0C]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/nosniff/worker.html.ini b/tests/wpt/meta/fetch/nosniff/worker.html.ini
new file mode 100644
index 00000000000..a2f0564a334
--- /dev/null
+++ b/tests/wpt/meta/fetch/nosniff/worker.html.ini
@@ -0,0 +1,3 @@
+[worker.html]
+ [URL query: ?type=text/ecmascript;yay]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/orb/tentative/content-range.sub.any.js.ini b/tests/wpt/meta/fetch/orb/tentative/content-range.sub.any.js.ini
new file mode 100644
index 00000000000..c397469e41d
--- /dev/null
+++ b/tests/wpt/meta/fetch/orb/tentative/content-range.sub.any.js.ini
@@ -0,0 +1,8 @@
+[content-range.sub.any.html]
+ [ORB should block opaque range of image/png not starting at zero, that isn't subsequent]
+ expected: FAIL
+
+
+[content-range.sub.any.worker.html]
+ [ORB should block opaque range of image/png not starting at zero, that isn't subsequent]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/orb/tentative/img-mime-types-coverage.tentative.sub.html.ini b/tests/wpt/meta/fetch/orb/tentative/img-mime-types-coverage.tentative.sub.html.ini
new file mode 100644
index 00000000000..dd4c5b17d5a
--- /dev/null
+++ b/tests/wpt/meta/fetch/orb/tentative/img-mime-types-coverage.tentative.sub.html.ini
@@ -0,0 +1,141 @@
+[img-mime-types-coverage.tentative.sub.html]
+ [ORB should allow the response if Content-Type is: 'image/svg+xml'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'text/html'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/json'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'text/json'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/ld+json'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'text/xml'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/xml'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/xhtml+xml'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/dash+xml'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/gzip'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/msexcel'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/mspowerpoint'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/msword'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/msword-template'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/pdf'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.apple.mpegurl'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.ces-quickpoint'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.ces-quicksheet'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.ces-quickword'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.ms-excel'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.ms-excel.sheet.macroenabled.12'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.ms-powerpoint'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.ms-powerpoint.presentation.macroenabled.12'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.ms-word'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.ms-word.document.12'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.ms-word.document.macroenabled.12'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.msword'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.openxmlformats-officedocument.presentationml.presentation'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.openxmlformats-officedocument.presentationml.template'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.presentation-openxml'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.presentation-openxmlm'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.spreadsheet-openxml'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/vnd.wordprocessing-openxml'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/x-gzip'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/x-protobuf'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/x-protobuffer'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'application/zip'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'audio/mpegurl'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'multipart/byteranges'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'multipart/signed'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'text/event-stream'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'text/csv'. ]
+ expected: FAIL
+
+ [ORB should block the response if Content-Type is: 'text/vtt'. ]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/orb/tentative/known-mime-type.sub.any.js.ini b/tests/wpt/meta/fetch/orb/tentative/known-mime-type.sub.any.js.ini
new file mode 100644
index 00000000000..462b0e35384
--- /dev/null
+++ b/tests/wpt/meta/fetch/orb/tentative/known-mime-type.sub.any.js.ini
@@ -0,0 +1,20 @@
+[known-mime-type.sub.any.html]
+ [ORB should block opaque font/ttf]
+ expected: FAIL
+
+ [ORB should block opaque text/plain]
+ expected: FAIL
+
+ [ORB should block opaque application/json]
+ expected: FAIL
+
+
+[known-mime-type.sub.any.worker.html]
+ [ORB should block opaque font/ttf]
+ expected: FAIL
+
+ [ORB should block opaque text/plain]
+ expected: FAIL
+
+ [ORB should block opaque application/json]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/orb/tentative/nosniff.sub.any.js.ini b/tests/wpt/meta/fetch/orb/tentative/nosniff.sub.any.js.ini
new file mode 100644
index 00000000000..134f31556a2
--- /dev/null
+++ b/tests/wpt/meta/fetch/orb/tentative/nosniff.sub.any.js.ini
@@ -0,0 +1,20 @@
+[nosniff.sub.any.html]
+ [ORB should block opaque text/plain with nosniff]
+ expected: FAIL
+
+ [ORB should block opaque-response-blocklisted MIME type with nosniff]
+ expected: FAIL
+
+ [ORB should block opaque response with empty Content-Type and nosniff]
+ expected: FAIL
+
+
+[nosniff.sub.any.worker.html]
+ [ORB should block opaque text/plain with nosniff]
+ expected: FAIL
+
+ [ORB should block opaque-response-blocklisted MIME type with nosniff]
+ expected: FAIL
+
+ [ORB should block opaque response with empty Content-Type and nosniff]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/orb/tentative/status.sub.any.js.ini b/tests/wpt/meta/fetch/orb/tentative/status.sub.any.js.ini
new file mode 100644
index 00000000000..55c1fca1894
--- /dev/null
+++ b/tests/wpt/meta/fetch/orb/tentative/status.sub.any.js.ini
@@ -0,0 +1,14 @@
+[status.sub.any.html]
+ [ORB should block opaque-response-blocklisted MIME type with status 206]
+ expected: FAIL
+
+ [ORB should block opaque response with non-ok status]
+ expected: FAIL
+
+
+[status.sub.any.worker.html]
+ [ORB should block opaque-response-blocklisted MIME type with status 206]
+ expected: FAIL
+
+ [ORB should block opaque response with non-ok status]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/origin/assorted.window.js.ini b/tests/wpt/meta/fetch/origin/assorted.window.js.ini
new file mode 100644
index 00000000000..44e55849ecd
--- /dev/null
+++ b/tests/wpt/meta/fetch/origin/assorted.window.js.ini
@@ -0,0 +1,33 @@
+[assorted.window.html]
+ [Origin header and 308 redirect]
+ expected: FAIL
+
+ [Origin header and POST cross-origin fetch no-cors mode with Referrer-Policy no-referrer]
+ expected: FAIL
+
+ [Origin header and POST same-origin fetch no-cors mode with Referrer-Policy no-referrer]
+ expected: FAIL
+
+ [Origin header and POST cross-origin navigation with Referrer-Policy origin-when-cross-origin]
+ expected: FAIL
+
+ [Origin header and POST cross-origin navigation with Referrer-Policy unsafe-url]
+ expected: FAIL
+
+ [Origin header and POST navigation]
+ expected: FAIL
+
+ [Origin header and POST cross-origin navigation with Referrer-Policy no-referrer]
+ expected: FAIL
+
+ [Origin header and POST cross-origin navigation with Referrer-Policy same-origin]
+ expected: FAIL
+
+ [Origin header and POST cross-origin fetch no-cors mode with Referrer-Policy same-origin]
+ expected: FAIL
+
+ [Origin header and POST same-origin navigation with Referrer-Policy no-referrer]
+ expected: FAIL
+
+ [Origin header and POST cross-origin navigation with Referrer-Policy no-referrer-when-downgrade]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/fetch.https.window.js.ini b/tests/wpt/meta/fetch/private-network-access/fetch.https.window.js.ini
new file mode 100644
index 00000000000..6cbe76c8fd8
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/fetch.https.window.js.ini
@@ -0,0 +1,95 @@
+[fetch.https.window.html?include=from-public]
+ [public to local: failed preflight.]
+ expected: FAIL
+
+ [public to local: missing CORS headers on preflight response.]
+ expected: FAIL
+
+ [public to local: missing PNA header on preflight response.]
+ expected: FAIL
+
+ [public to local: missing CORS headers on final response.]
+ expected: FAIL
+
+ [public to local: success.]
+ expected: FAIL
+
+ [public to local: no-CORS mode failed preflight.]
+ expected: FAIL
+
+ [public to local: no-CORS mode missing CORS headers on preflight response.]
+ expected: FAIL
+
+ [public to local: no-CORS mode missing PNA header on preflight response.]
+ expected: FAIL
+
+ [public to private: failed preflight.]
+ expected: FAIL
+
+ [public to private: missing CORS headers on preflight response.]
+ expected: FAIL
+
+ [public to private: missing PNA header on preflight response.]
+ expected: FAIL
+
+ [public to private: missing CORS headers on final response.]
+ expected: FAIL
+
+ [public to private: success.]
+ expected: FAIL
+
+ [public to private: no-CORS mode failed preflight.]
+ expected: FAIL
+
+ [public to private: no-CORS mode missing CORS headers on preflight response.]
+ expected: FAIL
+
+ [public to private: no-CORS mode missing PNA header on preflight response.]
+ expected: FAIL
+
+
+[fetch.https.window.html?include=from-treat-as-public]
+ [treat-as-public-address to local: failed preflight.]
+ expected: FAIL
+
+ [treat-as-public-address to local: success.]
+ expected: FAIL
+
+ [treat-as-public-address to private: failed preflight.]
+ expected: FAIL
+
+ [treat-as-public-address to private: success.]
+ expected: FAIL
+
+
+[fetch.https.window.html?include=from-local]
+
+[fetch.https.window.html?include=from-private]
+ [private to local: failed preflight.]
+ expected: FAIL
+
+ [private to local: missing CORS headers on preflight response.]
+ expected: FAIL
+
+ [private to local: missing PNA header on preflight response.]
+ expected: FAIL
+
+ [private to local: missing CORS headers on final response.]
+ expected: FAIL
+
+ [private to local: success.]
+ expected: FAIL
+
+ [private to local: no-CORS mode failed preflight.]
+ expected: FAIL
+
+ [private to local: no-CORS mode missing CORS headers on preflight response.]
+ expected: FAIL
+
+ [private to local: no-CORS mode missing PNA header on preflight response.]
+ expected: FAIL
+
+
+[fetch.https.window.html?include=baseline]
+ [local to public: PUT preflight failure.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/fetch.window.js.ini b/tests/wpt/meta/fetch/private-network-access/fetch.window.js.ini
new file mode 100644
index 00000000000..7f186d41c92
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/fetch.window.js.ini
@@ -0,0 +1,24 @@
+[fetch.window.html]
+ [private to local: failure.]
+ expected: FAIL
+
+ [public to local: failure.]
+ expected: FAIL
+
+ [public to private: failure.]
+ expected: FAIL
+
+ [treat-as-public-address to local: failure.]
+ expected: FAIL
+
+ [treat-as-public-address to private: failure.]
+ expected: FAIL
+
+ [private https to local: failure.]
+ expected: FAIL
+
+ [public https to local: failure.]
+ expected: FAIL
+
+ [public https to private: failure.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/idlharness.tentative.any.js.ini b/tests/wpt/meta/fetch/private-network-access/idlharness.tentative.any.js.ini
new file mode 100644
index 00000000000..e9224102c90
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/idlharness.tentative.any.js.ini
@@ -0,0 +1,21 @@
+[idlharness.tentative.any.serviceworker.html]
+ expected: ERROR
+
+[idlharness.tentative.any.sharedworker.html]
+ expected: ERROR
+
+[idlharness.tentative.any.worker.html]
+ [WorkerGlobalScope interface: attribute addressSpace]
+ expected: FAIL
+
+ [WorkerGlobalScope interface: self must inherit property "addressSpace" with the proper type]
+ expected: FAIL
+
+
+[idlharness.tentative.any.html]
+ [Document interface: attribute addressSpace]
+ expected: FAIL
+
+ [Document interface: document must inherit property "addressSpace" with the proper type]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/private-network-access/iframe.tentative.https.window.js.ini b/tests/wpt/meta/fetch/private-network-access/iframe.tentative.https.window.js.ini
new file mode 100644
index 00000000000..5b0348afa74
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/iframe.tentative.https.window.js.ini
@@ -0,0 +1,36 @@
+[iframe.tentative.https.window.html]
+ [private to local: failed preflight.]
+ expected: FAIL
+
+ [private to local: success.]
+ expected: FAIL
+
+ [public to local: failed preflight.]
+ expected: FAIL
+
+ [public to local: success.]
+ expected: FAIL
+
+ [public to private: failed preflight.]
+ expected: FAIL
+
+ [public to private: success.]
+ expected: FAIL
+
+ [treat-as-public-address to local: failed preflight.]
+ expected: FAIL
+
+ [treat-as-public-address to local: success.]
+ expected: FAIL
+
+ [treat-as-public-address to private: failed preflight.]
+ expected: FAIL
+
+ [treat-as-public-address to private: success.]
+ expected: FAIL
+
+ [public to local, grandparent navigates: failure.]
+ expected: FAIL
+
+ [public to local, grandparent navigates: success.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/iframe.tentative.window.js.ini b/tests/wpt/meta/fetch/private-network-access/iframe.tentative.window.js.ini
new file mode 100644
index 00000000000..ca42692a9d7
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/iframe.tentative.window.js.ini
@@ -0,0 +1,15 @@
+[iframe.tentative.window.html]
+ [private to local: failure.]
+ expected: FAIL
+
+ [public to local: failure.]
+ expected: FAIL
+
+ [public to private: failure.]
+ expected: FAIL
+
+ [treat-as-public-address to local: failure.]
+ expected: FAIL
+
+ [treat-as-public-address to private: failure.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js.ini b/tests/wpt/meta/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js.ini
new file mode 100644
index 00000000000..a5ff286b7fa
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/mixed-content-fetch.tentative.https.window.js.ini
@@ -0,0 +1,138 @@
+[mixed-content-fetch.tentative.https.window.html]
+ [https-local to http-local: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-local to http-local: wrong targetAddressSpace "private".]
+ expected: FAIL
+
+ [https-local to http-local: wrong targetAddressSpace "public".]
+ expected: FAIL
+
+ [https-local to http-local: not a private network request.]
+ expected: FAIL
+
+ [https-local to http-private: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-local to http-private: wrong targetAddressSpace "local".]
+ expected: FAIL
+
+ [https-local to http-private: wrong targetAddressSpace "public".]
+ expected: FAIL
+
+ [https-local to http-private: not a private network request.]
+ expected: FAIL
+
+ [https-local to http-public: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-local to http-public: wrong targetAddressSpace "local".]
+ expected: FAIL
+
+ [https-local to http-public: wrong targetAddressSpace "private".]
+ expected: FAIL
+
+ [https-local to http-public: not a private network request.]
+ expected: FAIL
+
+ [https-private to http-local: missing targetAddressSpace.]
+ expected: FAIL
+
+ [https-private to http-local: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-private to http-local: wrong targetAddressSpace "private".]
+ expected: FAIL
+
+ [https-private to http-local: wrong targetAddressSpace "public".]
+ expected: FAIL
+
+ [https-private to http-local: failed preflight.]
+ expected: FAIL
+
+ [https-private to http-local: success.]
+ expected: FAIL
+
+ [https-private to http-private: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-private to http-private: wrong targetAddressSpace "local".]
+ expected: FAIL
+
+ [https-private to http-private: wrong targetAddressSpace "public".]
+ expected: FAIL
+
+ [https-private to http-private: not a private network request.]
+ expected: FAIL
+
+ [https-private to http-public: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-private to http-public: wrong targetAddressSpace "local".]
+ expected: FAIL
+
+ [https-private to http-public: wrong targetAddressSpace "private".]
+ expected: FAIL
+
+ [https-private to http-public: not a private network request.]
+ expected: FAIL
+
+ [https-public to http-local: missing targetAddressSpace.]
+ expected: FAIL
+
+ [https-public to http-local: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-public to http-local: wrong targetAddressSpace "private".]
+ expected: FAIL
+
+ [https-public to http-local: wrong targetAddressSpace "public".]
+ expected: FAIL
+
+ [https-public to http-local: failed preflight.]
+ expected: FAIL
+
+ [https-public to http-local: success.]
+ expected: FAIL
+
+ [https-public to http-private: missing targetAddressSpace.]
+ expected: FAIL
+
+ [https-public to http-private: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-public to http-private: wrong targetAddressSpace "local".]
+ expected: FAIL
+
+ [https-public to http-private: wrong targetAddressSpace "public".]
+ expected: FAIL
+
+ [https-public to http-private: failed preflight.]
+ expected: FAIL
+
+ [https-public to http-private: success.]
+ expected: FAIL
+
+ [https-public to http-public: wrong targetAddressSpace "unknown".]
+ expected: FAIL
+
+ [https-public to http-public: wrong targetAddressSpace "local".]
+ expected: FAIL
+
+ [https-public to http-public: wrong targetAddressSpace "private".]
+ expected: FAIL
+
+ [https-public to http-public: not a private network request.]
+ expected: FAIL
+
+ [https-treat-as-public to http-local: wrong targetAddressSpace "private".]
+ expected: FAIL
+
+ [https-treat-as-public to http-local: success.]
+ expected: FAIL
+
+ [https-treat-as-public to http-private: wrong targetAddressSpace "local".]
+ expected: FAIL
+
+ [https-treat-as-public to http-private: success.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/nested-worker.https.window.js.ini b/tests/wpt/meta/fetch/private-network-access/nested-worker.https.window.js.ini
new file mode 100644
index 00000000000..a9b78417a52
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/nested-worker.https.window.js.ini
@@ -0,0 +1,6 @@
+[nested-worker.https.window.html]
+ [treat-as-public to local: failure.]
+ expected: FAIL
+
+ [treat-as-public to private: failure.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/nested-worker.window.js.ini b/tests/wpt/meta/fetch/private-network-access/nested-worker.window.js.ini
new file mode 100644
index 00000000000..3e9038297b0
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/nested-worker.window.js.ini
@@ -0,0 +1,6 @@
+[nested-worker.window.html]
+ [treat-as-public to local: failure.]
+ expected: FAIL
+
+ [treat-as-public to private: failure.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/non-secure-context.window.js.ini b/tests/wpt/meta/fetch/private-network-access/non-secure-context.window.js.ini
new file mode 100644
index 00000000000..a7626b71b54
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/non-secure-context.window.js.ini
@@ -0,0 +1,36 @@
+[non-secure-context.window.html]
+ [Public non secure page fetches local page.]
+ expected: FAIL
+
+ [Private non-secure context cannot fetch local subresource.]
+ expected: FAIL
+
+ [Public non-secure context cannot fetch local subresource.]
+ expected: FAIL
+
+ [Public non-secure context cannot fetch private subresource.]
+ expected: FAIL
+
+ [Treat-as-public-address non-secure context cannot fetch local subresource.]
+ expected: FAIL
+
+ [Treat-as-public-address non-secure context cannot fetch private subresource.]
+ expected: FAIL
+
+ [Private HTTPS non-secure context cannot fetch local subresource.]
+ expected: FAIL
+
+ [Public HTTPS non-secure context cannot fetch local subresource.]
+ expected: FAIL
+
+ [Public HTTPS non-secure context cannot fetch private subresource.]
+ expected: FAIL
+
+ [Private non-secure context cannot open connection to ws://localhost.]
+ expected: FAIL
+
+ [Public non-secure context cannot open connection to ws://localhost.]
+ expected: FAIL
+
+ [Treat-as-public non-secure context cannot open connection to ws://localhost.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/preflight-cache.https.window.js.ini b/tests/wpt/meta/fetch/private-network-access/preflight-cache.https.window.js.ini
new file mode 100644
index 00000000000..552ad51cc01
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/preflight-cache.https.window.js.ini
@@ -0,0 +1,9 @@
+[preflight-cache.https.window.html]
+ [private to local: success.]
+ expected: FAIL
+
+ [public to local: success.]
+ expected: FAIL
+
+ [public to private: success.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/redirect.https.window.js.ini b/tests/wpt/meta/fetch/private-network-access/redirect.https.window.js.ini
new file mode 100644
index 00000000000..6c642fe834e
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/redirect.https.window.js.ini
@@ -0,0 +1,21 @@
+[redirect.https.window.html]
+ [private to private to local: failed preflight.]
+ expected: FAIL
+
+ [private to private to local: success.]
+ expected: FAIL
+
+ [private to local to private: failed preflight.]
+ expected: FAIL
+
+ [private to local to private: success.]
+ expected: FAIL
+
+ [public to private to local: failed first preflight.]
+ expected: FAIL
+
+ [public to private to local: failed second preflight.]
+ expected: FAIL
+
+ [public to private to local: success.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/service-worker-background-fetch.https.window.js.ini b/tests/wpt/meta/fetch/private-network-access/service-worker-background-fetch.https.window.js.ini
new file mode 100644
index 00000000000..8835e5da97f
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/service-worker-background-fetch.https.window.js.ini
@@ -0,0 +1,28 @@
+[service-worker-background-fetch.https.window.html]
+ expected: TIMEOUT
+ [local to local: success.]
+ expected: TIMEOUT
+
+ [private to local: success.]
+ expected: NOTRUN
+
+ [private to private: success.]
+ expected: NOTRUN
+
+ [public to local: success.]
+ expected: NOTRUN
+
+ [public to private: success.]
+ expected: NOTRUN
+
+ [public to public: success.]
+ expected: NOTRUN
+
+ [treat-as-public to local: success.]
+ expected: NOTRUN
+
+ [treat-as-public to private: success.]
+ expected: NOTRUN
+
+ [treat-as-public to public: success.]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/private-network-access/service-worker-fetch.https.window.js.ini b/tests/wpt/meta/fetch/private-network-access/service-worker-fetch.https.window.js.ini
new file mode 100644
index 00000000000..fdafb082080
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/service-worker-fetch.https.window.js.ini
@@ -0,0 +1,43 @@
+[service-worker-fetch.https.window.html]
+ expected: TIMEOUT
+ [local to local: success.]
+ expected: TIMEOUT
+
+ [private to local: failed preflight.]
+ expected: NOTRUN
+
+ [private to local: success.]
+ expected: NOTRUN
+
+ [private to private: success.]
+ expected: NOTRUN
+
+ [public to local: failed preflight.]
+ expected: NOTRUN
+
+ [public to local: success.]
+ expected: NOTRUN
+
+ [public to private: failed preflight.]
+ expected: NOTRUN
+
+ [public to private: success.]
+ expected: NOTRUN
+
+ [public to public: success.]
+ expected: NOTRUN
+
+ [treat-as-public to local: failed preflight.]
+ expected: NOTRUN
+
+ [treat-as-public to local: success.]
+ expected: NOTRUN
+
+ [treat-as-public to private: failed preflight.]
+ expected: NOTRUN
+
+ [treat-as-public to private: success.]
+ expected: NOTRUN
+
+ [treat-as-public to public: success.]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/private-network-access/service-worker-update.https.window.js.ini b/tests/wpt/meta/fetch/private-network-access/service-worker-update.https.window.js.ini
new file mode 100644
index 00000000000..3aa79df2da4
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/service-worker-update.https.window.js.ini
@@ -0,0 +1,16 @@
+[service-worker-update.https.window.html]
+ expected: TIMEOUT
+ [update public to local: failed preflight.]
+ expected: TIMEOUT
+
+ [update public to local: success.]
+ expected: NOTRUN
+
+ [update public to private: failed preflight.]
+ expected: NOTRUN
+
+ [update public to private: success.]
+ expected: NOTRUN
+
+ [update public to public: success.]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/private-network-access/service-worker.https.window.js.ini b/tests/wpt/meta/fetch/private-network-access/service-worker.https.window.js.ini
new file mode 100644
index 00000000000..4ba4f613562
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/service-worker.https.window.js.ini
@@ -0,0 +1,16 @@
+[service-worker.https.window.html]
+ expected: TIMEOUT
+ [treat-as-public to local: failed preflight.]
+ expected: TIMEOUT
+
+ [treat-as-public to local: success.]
+ expected: NOTRUN
+
+ [treat-as-public to private: failed preflight.]
+ expected: NOTRUN
+
+ [treat-as-public to private: success.]
+ expected: NOTRUN
+
+ [public to public: success.]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/private-network-access/shared-worker-fetch.https.window.js.ini b/tests/wpt/meta/fetch/private-network-access/shared-worker-fetch.https.window.js.ini
new file mode 100644
index 00000000000..22b714229e3
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/shared-worker-fetch.https.window.js.ini
@@ -0,0 +1,49 @@
+[shared-worker-fetch.https.window.html]
+ expected: TIMEOUT
+ [local to local: success.]
+ expected: TIMEOUT
+
+ [private to local: failure.]
+ expected: NOTRUN
+
+ [private to local: success.]
+ expected: NOTRUN
+
+ [private to private: success.]
+ expected: NOTRUN
+
+ [public to local: failed preflight.]
+ expected: NOTRUN
+
+ [public to local: success.]
+ expected: NOTRUN
+
+ [public to private: failed preflight.]
+ expected: NOTRUN
+
+ [public to private: success.]
+ expected: NOTRUN
+
+ [public to public: success.]
+ expected: NOTRUN
+
+ [treat-as-public to local: failure.]
+ expected: NOTRUN
+
+ [treat-as-public to private: failure.]
+ expected: NOTRUN
+
+ [treat-as-public to public: success.]
+ expected: NOTRUN
+
+ [treat-as-public to local: failed preflight.]
+ expected: NOTRUN
+
+ [treat-as-public to local: success.]
+ expected: NOTRUN
+
+ [treat-as-public to private: failed preflight.]
+ expected: NOTRUN
+
+ [treat-as-public to private: success.]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/private-network-access/shared-worker-fetch.window.js.ini b/tests/wpt/meta/fetch/private-network-access/shared-worker-fetch.window.js.ini
new file mode 100644
index 00000000000..860c6344d23
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/shared-worker-fetch.window.js.ini
@@ -0,0 +1,40 @@
+[shared-worker-fetch.window.html]
+ expected: TIMEOUT
+ [local to local: success.]
+ expected: TIMEOUT
+
+ [private to local: failure.]
+ expected: NOTRUN
+
+ [private to private: success.]
+ expected: NOTRUN
+
+ [public to local: failure.]
+ expected: NOTRUN
+
+ [public to private: failure.]
+ expected: NOTRUN
+
+ [public to public: success.]
+ expected: NOTRUN
+
+ [treat-as-public to local: failure.]
+ expected: NOTRUN
+
+ [treat-as-public to private: failure.]
+ expected: NOTRUN
+
+ [treat-as-public to public: success.]
+ expected: NOTRUN
+
+ [private https to local: failure.]
+ expected: NOTRUN
+
+ [pubiic https to local: failure.]
+ expected: NOTRUN
+
+ [public https to local: failure.]
+ expected: NOTRUN
+
+ [local https to local: failure.]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/private-network-access/shared-worker.https.window.js.ini b/tests/wpt/meta/fetch/private-network-access/shared-worker.https.window.js.ini
new file mode 100644
index 00000000000..612a764cb13
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/shared-worker.https.window.js.ini
@@ -0,0 +1,16 @@
+[shared-worker.https.window.html]
+ expected: TIMEOUT
+ [treat-as-public to local: failed preflight.]
+ expected: TIMEOUT
+
+ [treat-as-public to local: success.]
+ expected: NOTRUN
+
+ [treat-as-public to private: failed preflight.]
+ expected: NOTRUN
+
+ [treat-as-public to private: success.]
+ expected: NOTRUN
+
+ [public to public: success.]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/private-network-access/shared-worker.window.js.ini b/tests/wpt/meta/fetch/private-network-access/shared-worker.window.js.ini
new file mode 100644
index 00000000000..fc70a5d539e
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/shared-worker.window.js.ini
@@ -0,0 +1,10 @@
+[shared-worker.window.html]
+ expected: TIMEOUT
+ [treat-as-public to local: failure.]
+ expected: TIMEOUT
+
+ [treat-as-public to private: failure.]
+ expected: NOTRUN
+
+ [public to public: success.]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/fetch/private-network-access/websocket.window.js.ini b/tests/wpt/meta/fetch/private-network-access/websocket.window.js.ini
new file mode 100644
index 00000000000..fa8c34f6050
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/websocket.window.js.ini
@@ -0,0 +1,9 @@
+[websocket.window.html]
+ [private to local: websocket failure.]
+ expected: FAIL
+
+ [public to local: websocket failure.]
+ expected: FAIL
+
+ [treat-as-public to local: websocket failure.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/worker-fetch.https.window.js.ini b/tests/wpt/meta/fetch/private-network-access/worker-fetch.https.window.js.ini
new file mode 100644
index 00000000000..367df1b3834
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/worker-fetch.https.window.js.ini
@@ -0,0 +1,33 @@
+[worker-fetch.https.window.html]
+ [private to local: failed preflight.]
+ expected: FAIL
+
+ [private to local: success.]
+ expected: FAIL
+
+ [public to local: failed preflight.]
+ expected: FAIL
+
+ [public to local: success.]
+ expected: FAIL
+
+ [public to private: failed preflight.]
+ expected: FAIL
+
+ [public to private: success.]
+ expected: FAIL
+
+ [treat-as-public to local: failure.]
+ expected: FAIL
+
+ [treat-as-public to local: failed preflight.]
+ expected: FAIL
+
+ [treat-as-public to local: success.]
+ expected: FAIL
+
+ [treat-as-public to private: failed preflight.]
+ expected: FAIL
+
+ [treat-as-public to private: success.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/worker-fetch.window.js.ini b/tests/wpt/meta/fetch/private-network-access/worker-fetch.window.js.ini
new file mode 100644
index 00000000000..edec336325c
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/worker-fetch.window.js.ini
@@ -0,0 +1,3 @@
+[worker-fetch.window.html]
+ [treat-as-public to local: failure.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/worker.https.window.js.ini b/tests/wpt/meta/fetch/private-network-access/worker.https.window.js.ini
new file mode 100644
index 00000000000..e0363c7ba65
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/worker.https.window.js.ini
@@ -0,0 +1,12 @@
+[worker.https.window.html]
+ [treat-as-public to local: failed preflight.]
+ expected: FAIL
+
+ [treat-as-public to local: success.]
+ expected: FAIL
+
+ [treat-as-public to private: failed preflight.]
+ expected: FAIL
+
+ [treat-as-public to private: success.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/worker.window.js.ini b/tests/wpt/meta/fetch/private-network-access/worker.window.js.ini
new file mode 100644
index 00000000000..cc55ff5bf19
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/worker.window.js.ini
@@ -0,0 +1,6 @@
+[worker.window.html]
+ [treat-as-public to local: failure.]
+ expected: FAIL
+
+ [treat-as-public to private: failure.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/xhr.https.window.js.ini b/tests/wpt/meta/fetch/private-network-access/xhr.https.window.js.ini
new file mode 100644
index 00000000000..c2485d15927
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/xhr.https.window.js.ini
@@ -0,0 +1,36 @@
+[xhr.https.window.html?include=from-public]
+ [public to local: failed preflight.]
+ expected: FAIL
+
+ [public to local: success.]
+ expected: FAIL
+
+ [public to private: failed preflight.]
+ expected: FAIL
+
+ [public to private: success.]
+ expected: FAIL
+
+
+[xhr.https.window.html?include=from-treat-as-public]
+ [treat-as-public to local: failed preflight.]
+ expected: FAIL
+
+ [treat-as-public to local: success.]
+ expected: FAIL
+
+ [treat-as-public to private: failed preflight.]
+ expected: FAIL
+
+ [treat-as-public to private: success.]
+ expected: FAIL
+
+
+[xhr.https.window.html?include=from-local]
+
+[xhr.https.window.html?include=from-private]
+ [private to local: failed preflight.]
+ expected: FAIL
+
+ [private to local: success.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/private-network-access/xhr.window.js.ini b/tests/wpt/meta/fetch/private-network-access/xhr.window.js.ini
new file mode 100644
index 00000000000..bc1dc6d765b
--- /dev/null
+++ b/tests/wpt/meta/fetch/private-network-access/xhr.window.js.ini
@@ -0,0 +1,3 @@
+[xhr.window.html]
+ [treat-as-public-address to local: failure.]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/range/blob.any.js.ini b/tests/wpt/meta/fetch/range/blob.any.js.ini
new file mode 100644
index 00000000000..9c2a326fa0a
--- /dev/null
+++ b/tests/wpt/meta/fetch/range/blob.any.js.ini
@@ -0,0 +1,158 @@
+[blob.any.html]
+ [A simple blob range request.]
+ expected: FAIL
+
+ [A blob range request with no end.]
+ expected: FAIL
+
+ [A blob range request with no start.]
+ expected: FAIL
+
+ [A simple blob range request with whitespace.]
+ expected: FAIL
+
+ [Blob content with short content and a large range end]
+ expected: FAIL
+
+ [Blob range with whitespace before and after hyphen]
+ expected: FAIL
+
+ [Blob range with whitespace after hyphen]
+ expected: FAIL
+
+ [Blob range with whitespace around equals sign]
+ expected: FAIL
+
+ [Blob range request with multiple range values]
+ expected: FAIL
+
+ [Blob range request with multiple range values and whitespace]
+ expected: FAIL
+
+ [Blob range request with trailing comma]
+ expected: FAIL
+
+ [Blob range with no start or end]
+ expected: FAIL
+
+ [Blob range request with short range end]
+ expected: FAIL
+
+ [Blob range start should be an ASCII digit]
+ expected: FAIL
+
+ [Blob range should have a dash]
+ expected: FAIL
+
+ [Blob range end should be an ASCII digit]
+ expected: FAIL
+
+ [Blob range should include '-']
+ expected: FAIL
+
+ [Blob range should include '=']
+ expected: FAIL
+
+ [Blob range should include 'bytes=']
+ expected: FAIL
+
+ [Blob content with short content and a large range start]
+ expected: FAIL
+
+ [Blob content with short content and a range end matching content length]
+ expected: FAIL
+
+ [Blob range with no value]
+ expected: FAIL
+
+ [Blob range with incorrect range header]
+ expected: FAIL
+
+ [Blob range with incorrect range header #2]
+ expected: FAIL
+
+ [Blob range with incorrect range header #3]
+ expected: FAIL
+
+ [Blob content with short content and a range start matching the content length]
+ expected: FAIL
+
+
+[blob.any.worker.html]
+ [A simple blob range request.]
+ expected: FAIL
+
+ [A blob range request with no end.]
+ expected: FAIL
+
+ [A blob range request with no start.]
+ expected: FAIL
+
+ [A simple blob range request with whitespace.]
+ expected: FAIL
+
+ [Blob content with short content and a large range end]
+ expected: FAIL
+
+ [Blob range with whitespace before and after hyphen]
+ expected: FAIL
+
+ [Blob range with whitespace after hyphen]
+ expected: FAIL
+
+ [Blob range with whitespace around equals sign]
+ expected: FAIL
+
+ [Blob range request with multiple range values]
+ expected: FAIL
+
+ [Blob range request with multiple range values and whitespace]
+ expected: FAIL
+
+ [Blob range request with trailing comma]
+ expected: FAIL
+
+ [Blob range with no start or end]
+ expected: FAIL
+
+ [Blob range request with short range end]
+ expected: FAIL
+
+ [Blob range start should be an ASCII digit]
+ expected: FAIL
+
+ [Blob range should have a dash]
+ expected: FAIL
+
+ [Blob range end should be an ASCII digit]
+ expected: FAIL
+
+ [Blob range should include '-']
+ expected: FAIL
+
+ [Blob range should include '=']
+ expected: FAIL
+
+ [Blob range should include 'bytes=']
+ expected: FAIL
+
+ [Blob content with short content and a large range start]
+ expected: FAIL
+
+ [Blob content with short content and a range end matching content length]
+ expected: FAIL
+
+ [Blob range with no value]
+ expected: FAIL
+
+ [Blob range with incorrect range header]
+ expected: FAIL
+
+ [Blob range with incorrect range header #2]
+ expected: FAIL
+
+ [Blob range with incorrect range header #3]
+ expected: FAIL
+
+ [Blob content with short content and a range start matching the content length]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/range/data.any.js.ini b/tests/wpt/meta/fetch/range/data.any.js.ini
new file mode 100644
index 00000000000..eb6c50aef47
--- /dev/null
+++ b/tests/wpt/meta/fetch/range/data.any.js.ini
@@ -0,0 +1,14 @@
+[data.any.html]
+ [data: URL and Range header]
+ expected: FAIL
+
+ [data: URL and Range header with multiple ranges]
+ expected: FAIL
+
+
+[data.any.worker.html]
+ [data: URL and Range header]
+ expected: FAIL
+
+ [data: URL and Range header with multiple ranges]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/range/general.any.js.ini b/tests/wpt/meta/fetch/range/general.any.js.ini
new file mode 100644
index 00000000000..f142120c591
--- /dev/null
+++ b/tests/wpt/meta/fetch/range/general.any.js.ini
@@ -0,0 +1,20 @@
+[general.any.sharedworker.html]
+ expected: ERROR
+
+[general.any.html]
+ [Fetch with range header will be sent with Accept-Encoding: identity]
+ expected: FAIL
+
+ [Cross Origin Fetch with safe range header]
+ expected: FAIL
+
+
+[general.any.serviceworker.html]
+ expected: ERROR
+
+[general.any.worker.html]
+ [Fetch with range header will be sent with Accept-Encoding: identity]
+ expected: FAIL
+
+ [Cross Origin Fetch with safe range header]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/range/sw.https.window.js.ini b/tests/wpt/meta/fetch/range/sw.https.window.js.ini
new file mode 100644
index 00000000000..4628b012aa5
--- /dev/null
+++ b/tests/wpt/meta/fetch/range/sw.https.window.js.ini
@@ -0,0 +1,18 @@
+[sw.https.window.html]
+ [Defer range header filter tests to service worker]
+ expected: FAIL
+
+ [Defer range header passthrough tests to service worker]
+ expected: FAIL
+
+ [Ranged response not allowed following no-cors ranged request]
+ expected: FAIL
+
+ [Non-opaque ranged response executed]
+ expected: FAIL
+
+ [Accept-Encoding should not appear in a service worker]
+ expected: FAIL
+
+ [Opaque range preload successes and failures should be indistinguishable]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/redirect-navigate/preserve-fragment.html.ini b/tests/wpt/meta/fetch/redirect-navigate/preserve-fragment.html.ini
new file mode 100644
index 00000000000..71f705c28a8
--- /dev/null
+++ b/tests/wpt/meta/fetch/redirect-navigate/preserve-fragment.html.ini
@@ -0,0 +1,361 @@
+[preserve-fragment.html]
+ [[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 302 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 308 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 307 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 308 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 301 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Preserve fragment in multiple 301 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Preserve fragment in multiple 302 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 301 redirect]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Preserve fragment in 308 redirect]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 301 redirect]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 308 redirect]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 302 redirect]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Preserve fragment in multiple 308 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Preserve fragment in multiple 307 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 302 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Preserve fragment in multiple 302 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 301 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Preserve fragment in 302 redirect]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 303 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 308 redirect]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Preserve fragment in multiple 303 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Preserve fragment in 302 redirect]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 301 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 308 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 307 redirect]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 307 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 301 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Preserve fragment in 303 redirect]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 303 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Preserve fragment in multiple 303 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Preserve fragment in 307 redirect]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 303 redirect]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 302 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 307 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 307 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Preserve fragment in 303 redirect]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 307 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Preserve fragment in 301 redirect]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Preserve fragment in multiple 308 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 301 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 302 redirect]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 302 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 303 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 302 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Preserve fragment in 303 redirect]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 308 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 301 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Preserve fragment in 301 redirect]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Preserve fragment in multiple 302 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 307 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Preserve fragment in 303 redirect]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 301 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Preserve fragment in multiple 302 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 308 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 307 redirect]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 303 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Preserve fragment in multiple 301 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 302 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 302 redirect]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 303 redirect]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 307 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 302 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 308 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 307 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Preserve fragment in 307 redirect]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 303 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 308 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Preserve fragment in 307 redirect]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 307 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 308 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Preserve fragment in multiple 303 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Preserve fragment in multiple 308 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Preserve fragment in 302 redirect]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 302 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 303 redirect]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 301 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Preserve fragment in multiple 307 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 307 redirect]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 303 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 303 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 301 redirect]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 301 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 307 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Preserve fragment in multiple 307 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Preserve fragment in 308 redirect]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 307 redirect]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 307 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Preserve fragment in multiple 303 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 303 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Preserve fragment in multiple 301 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Preserve fragment in multiple 308 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Preserve fragment in 308 redirect]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 301 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 303 redirect]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 308 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Preserve fragment in 307 redirect]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 308 redirect]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 308 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 301 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 301 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 308 redirect]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Preserve fragment in 302 redirect]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Preserve fragment in 308 redirect]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Preserve fragment in multiple 301 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 302 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 308 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Preserve fragment in 301 redirect]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 303 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Preserve fragment in 301 redirect]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 302 redirect]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 301 redirect]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 302 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 302 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 308 redirects]
+ expected: FAIL
+
+ [[HTTP - SameOrigin\] Preserve fragment in multiple 307 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 303 redirects]
+ expected: FAIL
+
+ [[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 302 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 307 redirects]
+ expected: FAIL
+
+ [[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 303 redirects]
+ expected: FAIL
+
+ [[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 303 redirects]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/redirects/subresource-fragments.html.ini b/tests/wpt/meta/fetch/redirects/subresource-fragments.html.ini
new file mode 100644
index 00000000000..9de7007c0d3
--- /dev/null
+++ b/tests/wpt/meta/fetch/redirects/subresource-fragments.html.ini
@@ -0,0 +1,13 @@
+[subresource-fragments.html]
+ [Control]
+ expected: FAIL
+
+ [Redirect with the original URL containing a fragment]
+ expected: FAIL
+
+ [Redirect with the response Location header containing a fragment]
+ expected: FAIL
+
+ [Redirect with both the original URL and response Location header containing a fragment]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/stale-while-revalidate/fetch.any.js.ini b/tests/wpt/meta/fetch/stale-while-revalidate/fetch.any.js.ini
new file mode 100644
index 00000000000..b852a4ffa06
--- /dev/null
+++ b/tests/wpt/meta/fetch/stale-while-revalidate/fetch.any.js.ini
@@ -0,0 +1,15 @@
+[fetch.any.html]
+ [Second fetch returns same response]
+ expected: FAIL
+
+
+[fetch.any.worker.html]
+ [Second fetch returns same response]
+ expected: FAIL
+
+
+[fetch.any.serviceworker.html]
+ expected: ERROR
+
+[fetch.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/fetch/stale-while-revalidate/revalidate-not-blocked-by-csp.html.ini b/tests/wpt/meta/fetch/stale-while-revalidate/revalidate-not-blocked-by-csp.html.ini
new file mode 100644
index 00000000000..179507b09a7
--- /dev/null
+++ b/tests/wpt/meta/fetch/stale-while-revalidate/revalidate-not-blocked-by-csp.html.ini
@@ -0,0 +1,4 @@
+[revalidate-not-blocked-by-csp.html]
+ [Request revalidation aren't blocked by CSP]
+ expected: FAIL
+
diff --git a/tests/wpt/meta/fetch/stale-while-revalidate/stale-image.html.ini b/tests/wpt/meta/fetch/stale-while-revalidate/stale-image.html.ini
new file mode 100644
index 00000000000..86b30d7f0dd
--- /dev/null
+++ b/tests/wpt/meta/fetch/stale-while-revalidate/stale-image.html.ini
@@ -0,0 +1,4 @@
+[stale-image.html]
+ [Cache returns stale resource]
+ expected: FAIL
+