diff --git a/fetch/Ch59.json b/fetch/Ch59.json index a071925..95543b6 100644 --- a/fetch/Ch59.json +++ b/fetch/Ch59.json @@ -318,7 +318,7 @@ "message": "promise_test: Unhandled rejection with value: object \"TypeError: Failed to fetch\"" }, { - "name": "Fetch http://web-platform.test:64230/fetch/api/resources/top.txt with no-cors mode", + "name": "Fetch http://web-platform.test:54706/fetch/api/resources/top.txt with no-cors mode", "status": "PASS", "message": null } @@ -345,7 +345,7 @@ "message": "promise_test: Unhandled rejection with value: object \"TypeError: Failed to fetch\"" }, { - "name": "Fetch http://web-platform.test:64230/fetch/api/resources/top.txt with no-cors mode", + "name": "Fetch http://web-platform.test:54706/fetch/api/resources/top.txt with no-cors mode", "status": "PASS", "message": null } @@ -991,16 +991,50 @@ "status": "OK", "message": null }, + { + "test": "/fetch/api/basic/request-referrer-redirected-worker.html", + "subtests": [ + { + "name": "about:client referrer", + "status": "PASS", + "message": null + }, + { + "name": "url referrer", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/basic/request-referrer-worker.html", + "subtests": [ + { + "name": "about:client referrer", + "status": "PASS", + "message": null + }, + { + "name": "url referrer", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, { "test": "/fetch/api/basic/request-referrer.html", "subtests": [ { - "name": "Fetch: fetch() respects Request referrer value", + "name": "about:client referrer", "status": "PASS", "message": null }, { - "name": "Fetch: fetch() respects Request referrer value 1", + "name": "url referrer", "status": "PASS", "message": null } @@ -1434,13 +1468,13 @@ }, { "name": "Fetching data:text/plain;base64,cmVzcG9uc2UncyBib[...] is OK", - "status": "FAIL", - "message": "assert_equals: Content-Type is text/plain;charset=US-ASCII expected \"text/plain\" but got \"text/plain;charset=US-ASCII\"" + "status": "PASS", + "message": null }, { "name": "Fetching data:image/png;base64,cmVzcG9uc2UncyBib2[...] is OK", - "status": "FAIL", - "message": "assert_equals: Content-Type is image/png;charset=US-ASCII expected \"image/png\" but got \"image/png;charset=US-ASCII\"" + "status": "PASS", + "message": null }, { "name": "Fetching [POST] data:,response%27s%20body is OK", @@ -1481,13 +1515,13 @@ }, { "name": "Fetching data:text/plain;base64,cmVzcG9uc2UncyBib[...] is OK", - "status": "FAIL", - "message": "assert_equals: Content-Type is text/plain;charset=US-ASCII expected \"text/plain\" but got \"text/plain;charset=US-ASCII\"" + "status": "PASS", + "message": null }, { "name": "Fetching data:image/png;base64,cmVzcG9uc2UncyBib2[...] is OK", - "status": "FAIL", - "message": "assert_equals: Content-Type is image/png;charset=US-ASCII expected \"image/png\" but got \"image/png;charset=US-ASCII\"" + "status": "PASS", + "message": null }, { "name": "Fetching [POST] data:,response%27s%20body is OK", @@ -2101,6 +2135,40 @@ "status": "OK", "message": null }, + { + "test": "/fetch/api/cors/cors-expose-star-worker.html", + "subtests": [ + { + "name": "Basic Access-Control-Expose-Headers: * support", + "status": "FAIL", + "message": "assert_equals: expected (string) \"X\" but got (object) null" + }, + { + "name": "Cannot use * for credentialed fetches", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/cors/cors-expose-star.html", + "subtests": [ + { + "name": "Basic Access-Control-Expose-Headers: * support", + "status": "FAIL", + "message": "assert_equals: expected (string) \"X\" but got (object) null" + }, + { + "name": "Cannot use * for credentialed fetches", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, { "test": "/fetch/api/cors/cors-filtering-worker.html", "subtests": [ @@ -2945,6 +3013,100 @@ "status": "OK", "message": null }, + { + "test": "/fetch/api/cors/cors-preflight-star-worker.html", + "subtests": [ + { + "name": "CORS that succeeds with credentials: false; method: GET (allowed: get); header: X-Test,1 (allowed: x-test)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test)", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: Failed to fetch\"" + }, + { + "name": "CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *)", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: Failed to fetch\"" + }, + { + "name": "CORS that fails with credentials: true; method: OK (allowed: *); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: PUT (allowed: *); header: undefined (allowed: )", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: PUT (allowed: put); header: undefined (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: GET (allowed: get); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: GET (allowed: *); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/cors/cors-preflight-star.html", + "subtests": [ + { + "name": "CORS that succeeds with credentials: false; method: GET (allowed: get); header: X-Test,1 (allowed: x-test)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test)", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: Failed to fetch\"" + }, + { + "name": "CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *)", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: Failed to fetch\"" + }, + { + "name": "CORS that fails with credentials: true; method: OK (allowed: *); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: PUT (allowed: *); header: undefined (allowed: )", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: PUT (allowed: put); header: undefined (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: GET (allowed: get); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: GET (allowed: *); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, { "test": "/fetch/api/cors/cors-preflight-status-worker.html", "subtests": [ @@ -3301,6 +3463,11 @@ "name": "CORS [PUT] [several headers], server refuses", "status": "PASS", "message": null + }, + { + "name": "CORS [PUT] [only safe headers], server allows", + "status": "PASS", + "message": null } ], "status": "OK", @@ -3378,6 +3545,11 @@ "name": "CORS [PUT] [several headers], server refuses", "status": "PASS", "message": null + }, + { + "name": "CORS [PUT] [only safe headers], server allows", + "status": "PASS", + "message": null } ], "status": "OK", @@ -3386,6 +3558,11 @@ { "test": "/fetch/api/cors/cors-redirect-credentials-worker.html", "subtests": [ + { + "name": "Redirect 301 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 301 from same origin to remote with user and password", "status": "PASS", @@ -3446,6 +3623,11 @@ "status": "PASS", "message": null }, + { + "name": "Redirect 302 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 302 from same origin to remote with user and password", "status": "PASS", @@ -3506,6 +3688,11 @@ "status": "PASS", "message": null }, + { + "name": "Redirect 303 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 303 from same origin to remote with user and password", "status": "PASS", @@ -3566,6 +3753,11 @@ "status": "PASS", "message": null }, + { + "name": "Redirect 307 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 307 from same origin to remote with user and password", "status": "PASS", @@ -3626,6 +3818,11 @@ "status": "PASS", "message": null }, + { + "name": "Redirect 308 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 308 from same origin to remote with user and password", "status": "PASS", @@ -3693,6 +3890,11 @@ { "test": "/fetch/api/cors/cors-redirect-credentials.html", "subtests": [ + { + "name": "Redirect 301 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 301 from same origin to remote with user and password", "status": "PASS", @@ -3753,6 +3955,11 @@ "status": "PASS", "message": null }, + { + "name": "Redirect 302 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 302 from same origin to remote with user and password", "status": "PASS", @@ -3813,6 +4020,11 @@ "status": "PASS", "message": null }, + { + "name": "Redirect 303 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 303 from same origin to remote with user and password", "status": "PASS", @@ -3873,6 +4085,11 @@ "status": "PASS", "message": null }, + { + "name": "Redirect 307 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 307 from same origin to remote with user and password", "status": "PASS", @@ -3933,6 +4150,11 @@ "status": "PASS", "message": null }, + { + "name": "Redirect 308 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 308 from same origin to remote with user and password", "status": "PASS", @@ -4574,13 +4796,13 @@ "subtests": [ { "name": "Include mode: 1 cookie", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: Request include cookie(s) expected \"a=1\" but got \"X; a=1\"" }, { "name": "Include mode: 2 cookies", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: Request include cookie(s) expected \"b=2; c=3\" but got \"X; b=2; c=3\"" }, { "name": "Omit mode: discard cookies", @@ -4589,8 +4811,8 @@ }, { "name": "Omit mode: no cookie is stored", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_false: Request does not have cookie(s) expected false got true" }, { "name": "Omit mode: no cookie is sent", @@ -4599,13 +4821,13 @@ }, { "name": "Same-origin mode: 1 cookie", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: Request include cookie(s) expected \"a=1\" but got \"X; a=1\"" }, { "name": "Same-origin mode: 2 cookies", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: Request include cookie(s) expected \"b=2; c=3\" but got \"X; b=2; c=3\"" } ], "status": "OK", @@ -4616,13 +4838,13 @@ "subtests": [ { "name": "Include mode: 1 cookie", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: Request include cookie(s) expected \"a=1\" but got \"X; a=1\"" }, { "name": "Include mode: 2 cookies", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: Request include cookie(s) expected \"b=2; c=3\" but got \"X; b=2; c=3\"" }, { "name": "Omit mode: discard cookies", @@ -4631,8 +4853,8 @@ }, { "name": "Omit mode: no cookie is stored", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_false: Request does not have cookie(s) expected false got true" }, { "name": "Omit mode: no cookie is sent", @@ -4641,13 +4863,13 @@ }, { "name": "Same-origin mode: 1 cookie", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: Request include cookie(s) expected \"a=1\" but got \"X; a=1\"" }, { "name": "Same-origin mode: 2 cookies", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: Request include cookie(s) expected \"b=2; c=3\" but got \"X; b=2; c=3\"" } ], "status": "OK", @@ -5151,8 +5373,8 @@ "subtests": [ { "name": "Create headers using same name for different values", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: expected \"doubleValue1, doubleValue2\" but got \"doubleValue1,doubleValue2\"" }, { "name": "Check delete and has methods when using same name for different values", @@ -5166,8 +5388,8 @@ }, { "name": "Check append methods when called with already used name", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: expected \"singleValue, newSingleValue\" but got \"singleValue,newSingleValue\"" } ], "status": "OK", @@ -5578,8 +5800,8 @@ "subtests": [ { "name": "Fetch is blocked by CSP, got a TypeError", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" } ], "status": "OK", @@ -5598,19 +5820,19 @@ "message": null }, { - "test": "/fetch/api/policies/referrer-no-referrer-worker.html", + "test": "/fetch/api/policies/referrer-no-referrer-service-worker.https.html", "subtests": [ { - "name": "Request's referrer is empty", - "status": "PASS", - "message": null + "name": "Fetch in service worker: referrer with no-referrer policy", + "status": "FAIL", + "message": "assert_unreached: unregister should not fail: Only secure origins are allowed (see: https://goo.gl/Y0ZkNV). Reached unreachable code" } ], "status": "OK", "message": null }, { - "test": "/fetch/api/policies/referrer-no-referrer.html", + "test": "/fetch/api/policies/referrer-no-referrer-worker.html", "subtests": [ { "name": "Request's referrer is empty", @@ -5622,10 +5844,10 @@ "message": null }, { - "test": "/fetch/api/policies/referrer-origin-when-cross-origin-worker.html", + "test": "/fetch/api/policies/referrer-no-referrer.html", "subtests": [ { - "name": "Request's referrer is origin", + "name": "Request's referrer is empty", "status": "PASS", "message": null } @@ -5634,46 +5856,94 @@ "message": null }, { - "test": "/fetch/api/policies/referrer-origin-when-cross-origin.html", + "test": "/fetch/api/policies/referrer-origin-service-worker.https.html", "subtests": [ { - "name": "Request's referrer is origin", - "status": "PASS", - "message": null + "name": "Fetch in service worker: referrer with no-referrer policy", + "status": "FAIL", + "message": "assert_unreached: unregister should not fail: Only secure origins are allowed (see: https://goo.gl/Y0ZkNV). Reached unreachable code" } ], "status": "OK", "message": null }, { - "test": "/fetch/api/policies/referrer-origin-worker.html", + "test": "/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https.html", "subtests": [ { - "name": "Request's referrer is origin", - "status": "PASS", - "message": null - }, - { - "name": "Cross-origin referrer is overridden by client origin", + "name": "Fetch in service worker: referrer with origin-when-cross-origin policy", "status": "FAIL", - "message": "promise_test: Unhandled rejection with value: object \"TypeError: Failed to execute 'fetch' on 'WorkerGlobalScope': The origin of 'http://www.web-platform.test:8000/' should be same as 'http://web-platform.test:8000'\"" + "message": "assert_unreached: unregister should not fail: Only secure origins are allowed (see: https://goo.gl/Y0ZkNV). Reached unreachable code" } ], "status": "OK", "message": null }, { - "test": "/fetch/api/policies/referrer-origin.html", + "test": "/fetch/api/policies/referrer-origin-when-cross-origin-worker.html", "subtests": [ { "name": "Request's referrer is origin", - "status": "PASS", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: Failed to fetch\"" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/policies/referrer-origin-when-cross-origin.html", + "subtests": [ + { + "name": "Request's referrer is origin", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: Failed to fetch\"" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/policies/referrer-origin-worker.html", + "subtests": [ + { + "name": "Request's referrer is origin", + "status": "PASS", "message": null }, { "name": "Cross-origin referrer is overridden by client origin", "status": "FAIL", - "message": "promise_test: Unhandled rejection with value: object \"TypeError: Failed to execute 'fetch' on 'Window': The origin of 'http://www.web-platform.test:8000/' should be same as 'http://web-platform.test:8000'\"" + "message": "promise_test: Unhandled rejection with value: object \"TypeError: Failed to execute 'fetch' on 'WorkerGlobalScope': The origin of 'https://www.web-platform.test:8443/' should be same as 'http://web-platform.test:8000'\"" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/policies/referrer-origin.html", + "subtests": [ + { + "name": "Request's referrer is origin", + "status": "PASS", + "message": null + }, + { + "name": "Cross-origin referrer is overridden by client origin", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: Failed to execute 'fetch' on 'Window': The origin of 'https://www.web-platform.test:8443/' should be same as 'http://web-platform.test:8000'\"" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/policies/referrer-unsafe-url-service-worker.https.html", + "subtests": [ + { + "name": "Fetch in worker: referrer with unsafe-url policy", + "status": "FAIL", + "message": "assert_unreached: unregister should not fail: Only secure origins are allowed (see: https://goo.gl/Y0ZkNV). Reached unreachable code" } ], "status": "OK", @@ -7436,7 +7706,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7446,7 +7716,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7456,7 +7726,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Modified-Since header is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Modified-Since header is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7466,7 +7736,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Modified-Since header is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Modified-Since header is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7476,7 +7746,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-None-Match header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-None-Match header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7486,7 +7756,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-None-Match header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-None-Match header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7496,7 +7766,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-None-Match header is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-None-Match header is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7506,7 +7776,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-None-Match header is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-None-Match header is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7516,7 +7786,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7526,7 +7796,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7536,7 +7806,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Unmodified-Since header is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Unmodified-Since header is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7546,7 +7816,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Unmodified-Since header is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Unmodified-Since header is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7556,7 +7826,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Match header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Match header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7566,7 +7836,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Match header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Match header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7576,7 +7846,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Match header is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Match header is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7586,7 +7856,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Match header is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Match header is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7596,7 +7866,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Range header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Range header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7606,7 +7876,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Range header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Range header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7616,7 +7886,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Range header is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Range header is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7626,7 +7896,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Range header is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Range header is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null } @@ -7643,7 +7913,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode checks the cache for previously cached content and goes to the network for stale responses with date and stale response", + "name": "RequestCache \"default\" mode checks the cache for previously cached content and goes to the network for stale responses with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7653,7 +7923,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with date and fresh response", + "name": "RequestCache \"default\" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7663,7 +7933,7 @@ "message": null }, { - "name": "Responses with the \"Cache-Control: no-store\" header are not stored in the cache with date and stale response", + "name": "Responses with the \"Cache-Control: no-store\" header are not stored in the cache with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7673,7 +7943,7 @@ "message": null }, { - "name": "Responses with the \"Cache-Control: no-store\" header are not stored in the cache with date and fresh response", + "name": "Responses with the \"Cache-Control: no-store\" header are not stored in the cache with Last-Modified and fresh response", "status": "PASS", "message": null } @@ -7690,7 +7960,7 @@ "message": "assert_equals: expected 1 but got 2" }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for stale responses with date and stale response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for stale responses with Last-Modified and stale response", "status": "FAIL", "message": "assert_equals: expected 1 but got 2" }, @@ -7700,7 +7970,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for fresh responses with date and fresh response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7710,7 +7980,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response is not found with date and stale response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response is not found with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7720,7 +7990,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response is not found with date and fresh response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response is not found with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7730,7 +8000,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response would vary with date and stale response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response would vary with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7740,7 +8010,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response would vary with date and fresh response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response would vary with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7750,7 +8020,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with date and stale response", + "name": "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7760,7 +8030,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with date and fresh response", + "name": "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with Last-Modified and fresh response", "status": "PASS", "message": null } @@ -7777,7 +8047,7 @@ "message": null }, { - "name": "RequestCache \"no-cache\" mode revalidates stale responses found in the cache with date and stale response", + "name": "RequestCache \"no-cache\" mode revalidates stale responses found in the cache with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7787,7 +8057,7 @@ "message": "assert_equals: expected 2 but got 1" }, { - "name": "RequestCache \"no-cache\" mode revalidates fresh responses found in the cache with date and fresh response", + "name": "RequestCache \"no-cache\" mode revalidates fresh responses found in the cache with Last-Modified and fresh response", "status": "FAIL", "message": "assert_equals: expected 2 but got 1" } @@ -7801,12 +8071,12 @@ { "name": "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with Etag and stale response", "status": "FAIL", - "message": "assert_equals: expected (undefined) undefined but got (string) \"\\\"0.9032860236047338\\\"\"" + "message": "assert_equals: expected (undefined) undefined but got (string) \"\\\"0.9798601925394688\\\"\"" }, { - "name": "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with date and stale response", + "name": "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and stale response", "status": "FAIL", - "message": "assert_equals: expected (undefined) undefined but got (string) \"Mon, 06 Mar 2017 22:43:22 GMT\"" + "message": "assert_equals: expected (undefined) undefined but got (string) \"Mon, 27 Mar 2017 01:22:55 GMT\"" }, { "name": "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with Etag and fresh response", @@ -7814,19 +8084,19 @@ "message": "assert_equals: expected 2 but got 1" }, { - "name": "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with date and fresh response", + "name": "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and fresh response", "status": "FAIL", "message": "assert_equals: expected 2 but got 1" }, { "name": "RequestCache \"no-store\" mode does not store the response in the cache with Etag and stale response", "status": "FAIL", - "message": "assert_equals: expected (undefined) undefined but got (string) \"\\\"0.7691601680828748\\\"\"" + "message": "assert_equals: expected (undefined) undefined but got (string) \"\\\"0.027939778372147783\\\"\"" }, { - "name": "RequestCache \"no-store\" mode does not store the response in the cache with date and stale response", + "name": "RequestCache \"no-store\" mode does not store the response in the cache with Last-Modified and stale response", "status": "FAIL", - "message": "assert_equals: expected (undefined) undefined but got (string) \"Mon, 06 Mar 2017 22:43:22 GMT\"" + "message": "assert_equals: expected (undefined) undefined but got (string) \"Mon, 27 Mar 2017 01:22:55 GMT\"" }, { "name": "RequestCache \"no-store\" mode does not store the response in the cache with Etag and fresh response", @@ -7834,7 +8104,7 @@ "message": "assert_equals: expected 2 but got 1" }, { - "name": "RequestCache \"no-store\" mode does not store the response in the cache with date and fresh response", + "name": "RequestCache \"no-store\" mode does not store the response in the cache with Last-Modified and fresh response", "status": "FAIL", "message": "assert_equals: expected 2 but got 1" } @@ -7851,7 +8121,7 @@ "message": "assert_equals: expected 1 but got 2" }, { - "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and avoids revalidation for stale responses with date and stale response", + "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and avoids revalidation for stale responses with Last-Modified and stale response", "status": "FAIL", "message": "assert_equals: expected 1 but got 2" }, @@ -7861,7 +8131,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and avoids revalidation for fresh responses with date and fresh response", + "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and avoids revalidation for fresh responses with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7871,7 +8141,7 @@ "message": "assert_true: fetch should have been an error expected true got false" }, { - "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and does not go to the network if a cached response is not found with date and fresh response", + "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and does not go to the network if a cached response is not found with Last-Modified and fresh response", "status": "FAIL", "message": "assert_true: fetch should have been an error expected true got false" }, @@ -7881,7 +8151,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" (with \"same-origin\") uses cached same-origin redirects to same-origin content with date and fresh response", + "name": "RequestCache \"only-if-cached\" (with \"same-origin\") uses cached same-origin redirects to same-origin content with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7891,7 +8161,7 @@ "message": "assert_equals: expected 2 but got 4" }, { - "name": "RequestCache \"only-if-cached\" (with \"same-origin\") uses cached same-origin redirects to same-origin content with date and stale response", + "name": "RequestCache \"only-if-cached\" (with \"same-origin\") uses cached same-origin redirects to same-origin content with Last-Modified and stale response", "status": "FAIL", "message": "assert_equals: expected 2 but got 4" }, @@ -7901,7 +8171,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" (with \"same-origin\") does not follow redirects across origins and rejects with date and fresh response", + "name": "RequestCache \"only-if-cached\" (with \"same-origin\") does not follow redirects across origins and rejects with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7911,7 +8181,7 @@ "message": "assert_equals: expected 2 but got 3" }, { - "name": "RequestCache \"only-if-cached\" (with \"same-origin\") does not follow redirects across origins and rejects with date and stale response", + "name": "RequestCache \"only-if-cached\" (with \"same-origin\") does not follow redirects across origins and rejects with Last-Modified and stale response", "status": "FAIL", "message": "assert_equals: expected 2 but got 3" } @@ -7925,12 +8195,12 @@ { "name": "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with Etag and stale response", "status": "FAIL", - "message": "assert_equals: expected (undefined) undefined but got (string) \"\\\"0.4468185601212482\\\"\"" + "message": "assert_equals: expected (undefined) undefined but got (string) \"\\\"0.692292124443092\\\"\"" }, { - "name": "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with date and stale response", + "name": "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and stale response", "status": "FAIL", - "message": "assert_equals: expected (undefined) undefined but got (string) \"Mon, 06 Mar 2017 22:43:22 GMT\"" + "message": "assert_equals: expected (undefined) undefined but got (string) \"Mon, 27 Mar 2017 01:22:55 GMT\"" }, { "name": "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with Etag and fresh response", @@ -7938,7 +8208,7 @@ "message": "assert_equals: expected 2 but got 1" }, { - "name": "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with date and fresh response", + "name": "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and fresh response", "status": "FAIL", "message": "assert_equals: expected 2 but got 1" }, @@ -7948,7 +8218,7 @@ "message": null }, { - "name": "RequestCache \"reload\" mode does store the response in the cache with date and stale response", + "name": "RequestCache \"reload\" mode does store the response in the cache with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7958,19 +8228,19 @@ "message": null }, { - "name": "RequestCache \"reload\" mode does store the response in the cache with date and fresh response", + "name": "RequestCache \"reload\" mode does store the response in the cache with Last-Modified and fresh response", "status": "PASS", "message": null }, { "name": "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Etag and stale response", "status": "FAIL", - "message": "assert_equals: expected (undefined) undefined but got (string) \"\\\"0.7287841686146426\\\"\"" + "message": "assert_equals: expected (undefined) undefined but got (string) \"\\\"0.9622037587041985\\\"\"" }, { - "name": "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with date and stale response", + "name": "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Last-Modified and stale response", "status": "FAIL", - "message": "assert_equals: expected (undefined) undefined but got (string) \"Mon, 06 Mar 2017 22:43:22 GMT\"" + "message": "assert_equals: expected (undefined) undefined but got (string) \"Mon, 27 Mar 2017 01:22:55 GMT\"" }, { "name": "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Etag and fresh response", @@ -7978,7 +8248,7 @@ "message": "assert_equals: expected 2 but got 1" }, { - "name": "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with date and fresh response", + "name": "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Last-Modified and fresh response", "status": "FAIL", "message": "assert_equals: expected 2 but got 1" } @@ -9937,6 +10207,11 @@ "status": "PASS", "message": null }, + { + "name": "Response interface: attribute trailer", + "status": "FAIL", + "message": "assert_true: The prototype object must have a property \"trailer\" expected true got false" + }, { "name": "Response interface: operation clone()", "status": "PASS", @@ -10033,42 +10308,47 @@ "message": null }, { - "name": "Response interface: new Response() must inherit property \"clone\" with the proper type (8)", + "name": "Response interface: new Response() must inherit property \"trailer\" with the proper type (8)", + "status": "FAIL", + "message": "assert_inherits: property \"trailer\" not found in prototype chain" + }, + { + "name": "Response interface: new Response() must inherit property \"clone\" with the proper type (9)", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"body\" with the proper type (9)", + "name": "Response interface: new Response() must inherit property \"body\" with the proper type (10)", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"bodyUsed\" with the proper type (10)", + "name": "Response interface: new Response() must inherit property \"bodyUsed\" with the proper type (11)", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"arrayBuffer\" with the proper type (11)", + "name": "Response interface: new Response() must inherit property \"arrayBuffer\" with the proper type (12)", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"blob\" with the proper type (12)", + "name": "Response interface: new Response() must inherit property \"blob\" with the proper type (13)", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"formData\" with the proper type (13)", + "name": "Response interface: new Response() must inherit property \"formData\" with the proper type (14)", "status": "FAIL", "message": "assert_inherits: property \"formData\" not found in prototype chain" }, { - "name": "Response interface: new Response() must inherit property \"json\" with the proper type (14)", + "name": "Response interface: new Response() must inherit property \"json\" with the proper type (15)", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"text\" with the proper type (15)", + "name": "Response interface: new Response() must inherit property \"text\" with the proper type (16)", "status": "PASS", "message": null } @@ -10374,6 +10654,589 @@ "status": "OK", "message": null }, + { + "test": "/fetch/api/response/response-trailer.html", + "subtests": [ + { + "name": "trailer() test", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: Cannot read property 'then' of undefined\"" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/304-update.html", + "subtests": [ + { + "name": "HTTP cache updates returned headers from a Last-Modified 304.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache updates stored headers from a Last-Modified 304.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache updates returned headers from a ETag 304.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache updates stored headers from a ETag 304.", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/cc-request.html", + "subtests": [ + { + "name": "HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=0.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=1.", + "status": "FAIL", + "message": "assert_equals: Response used expected 2 but got 1" + }, + { + "name": "HTTP cache doesn't use fresh response with Age header when request contains Cache-Control: max-age that is greater than remaining freshness.", + "status": "FAIL", + "message": "assert_equals: Response used expected 2 but got 1" + }, + { + "name": "HTTP cache does use aged stale response when request contains Cache-Control: max-stale that permits its use.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache does reuse stale response with Age header when request contains Cache-Control: max-stale that permits its use.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache doesn't reuse fresh response when request contains Cache-Control: min-fresh that wants it fresher.", + "status": "FAIL", + "message": "assert_equals: Response used expected 2 but got 1" + }, + { + "name": "HTTP cache doesn't reuse fresh response with Age header when request contains Cache-Control: min-fresh that wants it fresher.", + "status": "FAIL", + "message": "assert_equals: Response used expected 2 but got 1" + }, + { + "name": "HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-cache.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache validates fresh response with Last-Modified when request contains Cache-Control: no-cache.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache validates fresh response with ETag when request contains Cache-Control: no-cache.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-store.", + "status": "FAIL", + "message": "assert_equals: Response used expected 2 but got 1" + }, + { + "name": "HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached.", + "status": "FAIL", + "message": "assert_equals: Response status expected 504 but got 200" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/freshness.html", + "subtests": [ + { + "name": "HTTP cache reuses a response with a future Expires.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not reuse a response with a past Expires.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not reuse a response with a present Expires.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not reuse a response with an invalid Expires.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses a response with positive Cache-Control: max-age.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not reuse a response with Cache-Control: max-age=0.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses a response with positive Cache-Control: max-age and a past Expires.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses a response with positive Cache-Control: max-age and an invalid Expires.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not reuse a response with Cache-Control: max-age=0 and a future Expires.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not prefer Cache-Control: s-maxage over Cache-Control: max-age.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not reuse a response when the Age header is greater than its freshness lifetime.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not store a response with Cache-Control: no-store.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not store a response with Cache-Control: no-store, even with max-age and Expires.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use, even with max-age and Expires.", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/heuristic.html", + "subtests": [ + { + "name": "HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache does not reuse an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is not present.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses a 200 OK response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses a 203 Non-Authoritative Information response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses a 204 No Content response with Last-Modified based upon heuristic freshness.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache reuses a 404 Not Found response with Last-Modified based upon heuristic freshness.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache reuses a 405 Method Not Allowed response with Last-Modified based upon heuristic freshness.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache reuses a 410 Gone response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses a 414 URI Too Long response with Last-Modified based upon heuristic freshness.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache reuses a 501 Not Implemented response with Last-Modified based upon heuristic freshness.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache does not use a 201 Created response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not use a 202 Accepted response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not use a 403 Forbidden response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not use a 502 Bad Gateway response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not use a 503 Service Unavailable response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not use a 504 Gateway Timeout response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/invalidate.html", + "subtests": [ + { + "name": "HTTP cache invalidates after a successful response from a POST", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not invalidate after a failed response from an unsafe request", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache invalidates after a successful response from a PUT", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache invalidates after a successful response from a DELETE", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache invalidates after a successful response from an unknown method", + "status": "FAIL", + "message": "assert_equals: Response used expected 3 but got 1" + }, + { + "name": "HTTP cache invalidates Location URL after a successful response from a POST", + "status": "FAIL", + "message": "assert_equals: Response used expected 3 but got 1" + }, + { + "name": "HTTP cache does not invalidate Location URL after a failed response from an unsafe request", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache invalidates Location URL after a successful response from a PUT", + "status": "FAIL", + "message": "assert_equals: Response used expected 3 but got 1" + }, + { + "name": "HTTP cache invalidates Location URL after a successful response from a DELETE", + "status": "FAIL", + "message": "assert_equals: Response used expected 3 but got 1" + }, + { + "name": "HTTP cache invalidates Location URL after a successful response from an unknown method", + "status": "FAIL", + "message": "assert_equals: Response used expected 3 but got 1" + }, + { + "name": "HTTP cache invalidates Content-Location URL after a successful response from a POST", + "status": "FAIL", + "message": "assert_equals: Response used expected 3 but got 1" + }, + { + "name": "HTTP cache does not invalidate Content-Location URL after a failed response from an unsafe request", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache invalidates Content-Location URL after a successful response from a PUT", + "status": "FAIL", + "message": "assert_equals: Response used expected 3 but got 1" + }, + { + "name": "HTTP cache invalidates Content-Location URL after a successful response from a DELETE", + "status": "FAIL", + "message": "assert_equals: Response used expected 3 but got 1" + }, + { + "name": "HTTP cache invalidates Content-Location URL after a successful response from an unknown method", + "status": "FAIL", + "message": "assert_equals: Response used expected 3 but got 1" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/partial.html", + "subtests": [ + { + "name": "HTTP cache stores partial content and reuses it.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache stores complete response and serves smaller ranges from it.", + "status": "FAIL", + "message": "assert_equals: Response status expected 200 but got 206" + }, + { + "name": "HTTP cache stores partial response and serves smaller ranges from it.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache stores partial content and completes it.", + "status": "FAIL", + "message": "assert_equals: expected (string) \"bytes=5-\" but got (undefined) undefined" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/status.html", + "subtests": [ + { + "name": "HTTP cache goes to the network if it has a stale 200 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 200 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache goes to the network if it has a stale 203 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 203 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache goes to the network if it has a stale 204 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 204 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache goes to the network if it has a stale 299 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 299 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache goes to the network if it has a stale 400 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 400 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache goes to the network if it has a stale 404 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 404 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache goes to the network if it has a stale 410 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 410 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache goes to the network if it has a stale 499 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 499 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache goes to the network if it has a stale 500 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 500 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache goes to the network if it has a stale 502 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 502 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache goes to the network if it has a stale 503 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 503 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache goes to the network if it has a stale 504 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 504 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache goes to the network if it has a stale 599 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 599 response.", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/vary.html", + "subtests": [ + { + "name": "HTTP cache reuses Vary response when request matches.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't use Vary response when request doesn't match.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't use Vary response when request omits variant header.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't invalidate existing Vary response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 3 but got 3" + }, + { + "name": "HTTP cache doesn't pay attention to headers not listed in Vary.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses two-way Vary response when request matches.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't use two-way Vary response when request doesn't match.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't use two-way Vary response when request omits variant header.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses three-way Vary response when request matches.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't use three-way Vary response when request doesn't match.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't use three-way Vary response when request omits variant header.", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, { "test": "/fetch/nosniff/image.html", "subtests": [ diff --git a/fetch/FF55.json b/fetch/FF55.json index c4e422c..644c81c 100644 --- a/fetch/FF55.json +++ b/fetch/FF55.json @@ -318,7 +318,7 @@ "message": "promise_test: Unhandled rejection with value: object \"TypeError: NetworkError when attempting to fetch resource.\"" }, { - "name": "Fetch http://web-platform.test:63121/fetch/api/resources/top.txt with no-cors mode", + "name": "Fetch http://web-platform.test:54706/fetch/api/resources/top.txt with no-cors mode", "status": "PASS", "message": null } @@ -345,7 +345,7 @@ "message": "promise_test: Unhandled rejection with value: object \"TypeError: NetworkError when attempting to fetch resource.\"" }, { - "name": "Fetch http://web-platform.test:63121/fetch/api/resources/top.txt with no-cors mode", + "name": "Fetch http://web-platform.test:54706/fetch/api/resources/top.txt with no-cors mode", "status": "PASS", "message": null } @@ -991,16 +991,50 @@ "status": "OK", "message": null }, + { + "test": "/fetch/api/basic/request-referrer-redirected-worker.html", + "subtests": [ + { + "name": "about:client referrer", + "status": "PASS", + "message": null + }, + { + "name": "url referrer", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/basic/request-referrer-worker.html", + "subtests": [ + { + "name": "about:client referrer", + "status": "PASS", + "message": null + }, + { + "name": "url referrer", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, { "test": "/fetch/api/basic/request-referrer.html", "subtests": [ { - "name": "Fetch: fetch() respects Request referrer value", + "name": "about:client referrer", "status": "PASS", "message": null }, { - "name": "Fetch: fetch() respects Request referrer value 1", + "name": "url referrer", "status": "PASS", "message": null } @@ -2101,6 +2135,40 @@ "status": "OK", "message": null }, + { + "test": "/fetch/api/cors/cors-expose-star-worker.html", + "subtests": [ + { + "name": "Basic Access-Control-Expose-Headers: * support", + "status": "FAIL", + "message": "assert_equals: expected (string) \"X\" but got (object) null" + }, + { + "name": "Cannot use * for credentialed fetches", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/cors/cors-expose-star.html", + "subtests": [ + { + "name": "Basic Access-Control-Expose-Headers: * support", + "status": "FAIL", + "message": "assert_equals: expected (string) \"X\" but got (object) null" + }, + { + "name": "Cannot use * for credentialed fetches", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, { "test": "/fetch/api/cors/cors-filtering-worker.html", "subtests": [ @@ -2945,6 +3013,100 @@ "status": "OK", "message": null }, + { + "test": "/fetch/api/cors/cors-preflight-star-worker.html", + "subtests": [ + { + "name": "CORS that succeeds with credentials: false; method: GET (allowed: get); header: X-Test,1 (allowed: x-test)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test)", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: NetworkError when attempting to fetch resource.\"" + }, + { + "name": "CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *)", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: NetworkError when attempting to fetch resource.\"" + }, + { + "name": "CORS that fails with credentials: true; method: OK (allowed: *); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: PUT (allowed: *); header: undefined (allowed: )", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: PUT (allowed: put); header: undefined (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: GET (allowed: get); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: GET (allowed: *); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/cors/cors-preflight-star.html", + "subtests": [ + { + "name": "CORS that succeeds with credentials: false; method: GET (allowed: get); header: X-Test,1 (allowed: x-test)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test)", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: NetworkError when attempting to fetch resource.\"" + }, + { + "name": "CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *)", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: NetworkError when attempting to fetch resource.\"" + }, + { + "name": "CORS that fails with credentials: true; method: OK (allowed: *); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: PUT (allowed: *); header: undefined (allowed: )", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: PUT (allowed: put); header: undefined (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: GET (allowed: get); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: GET (allowed: *); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, { "test": "/fetch/api/cors/cors-preflight-status-worker.html", "subtests": [ @@ -3301,6 +3463,11 @@ "name": "CORS [PUT] [several headers], server refuses", "status": "PASS", "message": null + }, + { + "name": "CORS [PUT] [only safe headers], server allows", + "status": "PASS", + "message": null } ], "status": "OK", @@ -3378,6 +3545,11 @@ "name": "CORS [PUT] [several headers], server refuses", "status": "PASS", "message": null + }, + { + "name": "CORS [PUT] [only safe headers], server allows", + "status": "PASS", + "message": null } ], "status": "OK", @@ -3386,6 +3558,11 @@ { "test": "/fetch/api/cors/cors-redirect-credentials-worker.html", "subtests": [ + { + "name": "Redirect 301 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 301 from same origin to remote with user and password", "status": "PASS", @@ -3446,6 +3623,11 @@ "status": "PASS", "message": null }, + { + "name": "Redirect 302 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 302 from same origin to remote with user and password", "status": "PASS", @@ -3506,6 +3688,11 @@ "status": "PASS", "message": null }, + { + "name": "Redirect 303 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 303 from same origin to remote with user and password", "status": "PASS", @@ -3566,6 +3753,11 @@ "status": "PASS", "message": null }, + { + "name": "Redirect 307 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 307 from same origin to remote with user and password", "status": "PASS", @@ -3626,6 +3818,11 @@ "status": "PASS", "message": null }, + { + "name": "Redirect 308 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 308 from same origin to remote with user and password", "status": "PASS", @@ -3693,6 +3890,11 @@ { "test": "/fetch/api/cors/cors-redirect-credentials.html", "subtests": [ + { + "name": "Redirect 301 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 301 from same origin to remote with user and password", "status": "PASS", @@ -3753,6 +3955,11 @@ "status": "PASS", "message": null }, + { + "name": "Redirect 302 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 302 from same origin to remote with user and password", "status": "PASS", @@ -3813,6 +4020,11 @@ "status": "PASS", "message": null }, + { + "name": "Redirect 303 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 303 from same origin to remote with user and password", "status": "PASS", @@ -3873,6 +4085,11 @@ "status": "PASS", "message": null }, + { + "name": "Redirect 307 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 307 from same origin to remote with user and password", "status": "PASS", @@ -3933,6 +4150,11 @@ "status": "PASS", "message": null }, + { + "name": "Redirect 308 from same origin to remote without user and password", + "status": "PASS", + "message": null + }, { "name": "Redirect 308 from same origin to remote with user and password", "status": "PASS", @@ -4574,13 +4796,13 @@ "subtests": [ { "name": "Include mode: 1 cookie", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: Request include cookie(s) expected \"a=1\" but got \"X; a=1\"" }, { "name": "Include mode: 2 cookies", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: Request include cookie(s) expected \"b=2; c=3\" but got \"X; b=2; c=3\"" }, { "name": "Omit mode: discard cookies", @@ -4589,8 +4811,8 @@ }, { "name": "Omit mode: no cookie is stored", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_false: Request does not have cookie(s) expected false got true" }, { "name": "Omit mode: no cookie is sent", @@ -4599,13 +4821,13 @@ }, { "name": "Same-origin mode: 1 cookie", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: Request include cookie(s) expected \"a=1\" but got \"X; a=1\"" }, { "name": "Same-origin mode: 2 cookies", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: Request include cookie(s) expected \"b=2; c=3\" but got \"X; b=2; c=3\"" } ], "status": "OK", @@ -4616,13 +4838,13 @@ "subtests": [ { "name": "Include mode: 1 cookie", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: Request include cookie(s) expected \"a=1\" but got \"X; a=1\"" }, { "name": "Include mode: 2 cookies", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: Request include cookie(s) expected \"b=2; c=3\" but got \"X; b=2; c=3\"" }, { "name": "Omit mode: discard cookies", @@ -4631,8 +4853,8 @@ }, { "name": "Omit mode: no cookie is stored", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_false: Request does not have cookie(s) expected false got true" }, { "name": "Omit mode: no cookie is sent", @@ -4641,13 +4863,13 @@ }, { "name": "Same-origin mode: 1 cookie", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: Request include cookie(s) expected \"a=1\" but got \"X; a=1\"" }, { "name": "Same-origin mode: 2 cookies", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: Request include cookie(s) expected \"b=2; c=3\" but got \"X; b=2; c=3\"" } ], "status": "OK", @@ -5151,8 +5373,8 @@ "subtests": [ { "name": "Create headers using same name for different values", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: expected \"doubleValue1, doubleValue2\" but got \"doubleValue1,doubleValue2\"" }, { "name": "Check delete and has methods when using same name for different values", @@ -5166,8 +5388,8 @@ }, { "name": "Check append methods when called with already used name", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_equals: expected \"singleValue, newSingleValue\" but got \"singleValue,newSingleValue\"" } ], "status": "OK", @@ -5597,6 +5819,18 @@ "status": "OK", "message": null }, + { + "test": "/fetch/api/policies/referrer-no-referrer-service-worker.https.html", + "subtests": [ + { + "name": "Fetch in service worker: referrer with no-referrer policy", + "status": "FAIL", + "message": "assert_unreached: unregister and register should not fail: The operation is insecure. Reached unreachable code" + } + ], + "status": "OK", + "message": null + }, { "test": "/fetch/api/policies/referrer-no-referrer-worker.html", "subtests": [ @@ -5621,13 +5855,37 @@ "status": "OK", "message": null }, + { + "test": "/fetch/api/policies/referrer-origin-service-worker.https.html", + "subtests": [ + { + "name": "Fetch in service worker: referrer with no-referrer policy", + "status": "FAIL", + "message": "assert_unreached: unregister and register should not fail: The operation is insecure. Reached unreachable code" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https.html", + "subtests": [ + { + "name": "Fetch in service worker: referrer with origin-when-cross-origin policy", + "status": "FAIL", + "message": "assert_unreached: unregister and register should not fail: The operation is insecure. Reached unreachable code" + } + ], + "status": "OK", + "message": null + }, { "test": "/fetch/api/policies/referrer-origin-when-cross-origin-worker.html", "subtests": [ { "name": "Request's referrer is origin", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: NetworkError when attempting to fetch resource.\"" } ], "status": "OK", @@ -5638,8 +5896,8 @@ "subtests": [ { "name": "Request's referrer is origin", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: NetworkError when attempting to fetch resource.\"" } ], "status": "OK", @@ -5680,19 +5938,31 @@ "message": null }, { - "test": "/fetch/api/policies/referrer-unsafe-url-worker.html", + "test": "/fetch/api/policies/referrer-unsafe-url-service-worker.https.html", "subtests": [ { - "name": "Request's referrer is the full url of current document/worker", - "status": "PASS", - "message": null + "name": "Fetch in worker: referrer with unsafe-url policy", + "status": "FAIL", + "message": "assert_unreached: unregister and register should not fail: The operation is insecure. Reached unreachable code" } ], "status": "OK", "message": null }, { - "test": "/fetch/api/policies/referrer-unsafe-url.html", + "test": "/fetch/api/policies/referrer-unsafe-url-worker.html", + "subtests": [ + { + "name": "Request's referrer is the full url of current document/worker", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/policies/referrer-unsafe-url.html", "subtests": [ { "name": "Request's referrer is the full url of current document/worker", @@ -7436,7 +7706,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7446,7 +7716,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7456,7 +7726,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Modified-Since header is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Modified-Since header is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7466,7 +7736,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Modified-Since header is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Modified-Since header is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7476,7 +7746,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-None-Match header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-None-Match header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7486,7 +7756,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-None-Match header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-None-Match header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7496,7 +7766,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-None-Match header is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-None-Match header is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7506,7 +7776,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-None-Match header is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-None-Match header is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7516,7 +7786,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7526,7 +7796,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7536,7 +7806,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Unmodified-Since header is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Unmodified-Since header is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7546,7 +7816,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Unmodified-Since header is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Unmodified-Since header is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7556,7 +7826,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Match header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Match header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7566,7 +7836,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Match header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Match header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7576,7 +7846,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Match header is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Match header is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7586,7 +7856,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Match header is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Match header is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7596,7 +7866,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Range header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Range header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7606,7 +7876,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Range header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Range header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7616,7 +7886,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Range header is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Range header is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7626,7 +7896,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Range header is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Range header is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null } @@ -7643,7 +7913,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode checks the cache for previously cached content and goes to the network for stale responses with date and stale response", + "name": "RequestCache \"default\" mode checks the cache for previously cached content and goes to the network for stale responses with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7653,7 +7923,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with date and fresh response", + "name": "RequestCache \"default\" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7663,7 +7933,7 @@ "message": null }, { - "name": "Responses with the \"Cache-Control: no-store\" header are not stored in the cache with date and stale response", + "name": "Responses with the \"Cache-Control: no-store\" header are not stored in the cache with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7673,7 +7943,7 @@ "message": null }, { - "name": "Responses with the \"Cache-Control: no-store\" header are not stored in the cache with date and fresh response", + "name": "Responses with the \"Cache-Control: no-store\" header are not stored in the cache with Last-Modified and fresh response", "status": "PASS", "message": null } @@ -7690,7 +7960,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for stale responses with date and stale response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for stale responses with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7700,7 +7970,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for fresh responses with date and fresh response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7710,7 +7980,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response is not found with date and stale response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response is not found with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7720,7 +7990,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response is not found with date and fresh response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response is not found with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7730,7 +8000,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response would vary with date and stale response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response would vary with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7740,7 +8010,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response would vary with date and fresh response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response would vary with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7750,7 +8020,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with date and stale response", + "name": "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7760,7 +8030,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with date and fresh response", + "name": "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with Last-Modified and fresh response", "status": "PASS", "message": null } @@ -7777,7 +8047,7 @@ "message": null }, { - "name": "RequestCache \"no-cache\" mode revalidates stale responses found in the cache with date and stale response", + "name": "RequestCache \"no-cache\" mode revalidates stale responses found in the cache with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7787,7 +8057,7 @@ "message": null }, { - "name": "RequestCache \"no-cache\" mode revalidates fresh responses found in the cache with date and fresh response", + "name": "RequestCache \"no-cache\" mode revalidates fresh responses found in the cache with Last-Modified and fresh response", "status": "PASS", "message": null } @@ -7804,7 +8074,7 @@ "message": null }, { - "name": "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with date and stale response", + "name": "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7814,7 +8084,7 @@ "message": null }, { - "name": "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with date and fresh response", + "name": "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7824,7 +8094,7 @@ "message": null }, { - "name": "RequestCache \"no-store\" mode does not store the response in the cache with date and stale response", + "name": "RequestCache \"no-store\" mode does not store the response in the cache with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7834,7 +8104,7 @@ "message": null }, { - "name": "RequestCache \"no-store\" mode does not store the response in the cache with date and fresh response", + "name": "RequestCache \"no-store\" mode does not store the response in the cache with Last-Modified and fresh response", "status": "PASS", "message": null } @@ -7851,7 +8121,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and avoids revalidation for stale responses with date and stale response", + "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and avoids revalidation for stale responses with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7861,7 +8131,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and avoids revalidation for fresh responses with date and fresh response", + "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and avoids revalidation for fresh responses with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7871,7 +8141,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and does not go to the network if a cached response is not found with date and fresh response", + "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and does not go to the network if a cached response is not found with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7881,7 +8151,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" (with \"same-origin\") uses cached same-origin redirects to same-origin content with date and fresh response", + "name": "RequestCache \"only-if-cached\" (with \"same-origin\") uses cached same-origin redirects to same-origin content with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7891,7 +8161,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" (with \"same-origin\") uses cached same-origin redirects to same-origin content with date and stale response", + "name": "RequestCache \"only-if-cached\" (with \"same-origin\") uses cached same-origin redirects to same-origin content with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7901,7 +8171,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" (with \"same-origin\") does not follow redirects across origins and rejects with date and fresh response", + "name": "RequestCache \"only-if-cached\" (with \"same-origin\") does not follow redirects across origins and rejects with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7911,7 +8181,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" (with \"same-origin\") does not follow redirects across origins and rejects with date and stale response", + "name": "RequestCache \"only-if-cached\" (with \"same-origin\") does not follow redirects across origins and rejects with Last-Modified and stale response", "status": "PASS", "message": null } @@ -7928,7 +8198,7 @@ "message": null }, { - "name": "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with date and stale response", + "name": "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7938,7 +8208,7 @@ "message": null }, { - "name": "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with date and fresh response", + "name": "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7948,7 +8218,7 @@ "message": null }, { - "name": "RequestCache \"reload\" mode does store the response in the cache with date and stale response", + "name": "RequestCache \"reload\" mode does store the response in the cache with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7958,7 +8228,7 @@ "message": null }, { - "name": "RequestCache \"reload\" mode does store the response in the cache with date and fresh response", + "name": "RequestCache \"reload\" mode does store the response in the cache with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7968,7 +8238,7 @@ "message": null }, { - "name": "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with date and stale response", + "name": "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7978,7 +8248,7 @@ "message": null }, { - "name": "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with date and fresh response", + "name": "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Last-Modified and fresh response", "status": "PASS", "message": null } @@ -8059,7 +8329,7 @@ { "name": "Consume empty FormData request body as text", "status": "FAIL", - "message": "assert_equals: Resolved value should be empty expected 0 but got 61" + "message": "assert_equals: Resolved value should be empty expected 0 but got 60" }, { "name": "Consume empty ArrayBuffer request body as text", @@ -9547,7 +9817,7 @@ { "name": "Consume empty FormData response body as text", "status": "FAIL", - "message": "assert_equals: Resolved value should be empty expected 0 but got 62" + "message": "assert_equals: Resolved value should be empty expected 0 but got 63" }, { "name": "Consume empty ArrayBuffer response body as text", @@ -9937,6 +10207,11 @@ "status": "PASS", "message": null }, + { + "name": "Response interface: attribute trailer", + "status": "FAIL", + "message": "assert_true: The prototype object must have a property \"trailer\" expected true got false" + }, { "name": "Response interface: operation clone()", "status": "PASS", @@ -10033,42 +10308,47 @@ "message": null }, { - "name": "Response interface: new Response() must inherit property \"clone\" with the proper type (8)", + "name": "Response interface: new Response() must inherit property \"trailer\" with the proper type (8)", + "status": "FAIL", + "message": "assert_inherits: property \"trailer\" not found in prototype chain" + }, + { + "name": "Response interface: new Response() must inherit property \"clone\" with the proper type (9)", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"body\" with the proper type (9)", + "name": "Response interface: new Response() must inherit property \"body\" with the proper type (10)", "status": "FAIL", "message": "assert_inherits: property \"body\" not found in prototype chain" }, { - "name": "Response interface: new Response() must inherit property \"bodyUsed\" with the proper type (10)", + "name": "Response interface: new Response() must inherit property \"bodyUsed\" with the proper type (11)", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"arrayBuffer\" with the proper type (11)", + "name": "Response interface: new Response() must inherit property \"arrayBuffer\" with the proper type (12)", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"blob\" with the proper type (12)", + "name": "Response interface: new Response() must inherit property \"blob\" with the proper type (13)", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"formData\" with the proper type (13)", + "name": "Response interface: new Response() must inherit property \"formData\" with the proper type (14)", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"json\" with the proper type (14)", + "name": "Response interface: new Response() must inherit property \"json\" with the proper type (15)", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"text\" with the proper type (15)", + "name": "Response interface: new Response() must inherit property \"text\" with the proper type (16)", "status": "PASS", "message": null } @@ -10374,6 +10654,589 @@ "status": "OK", "message": null }, + { + "test": "/fetch/api/response/response-trailer.html", + "subtests": [ + { + "name": "trailer() test", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: res.trailer is undefined\"" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/304-update.html", + "subtests": [ + { + "name": "HTTP cache updates returned headers from a Last-Modified 304.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache updates stored headers from a Last-Modified 304.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache updates returned headers from a ETag 304.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache updates stored headers from a ETag 304.", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/cc-request.html", + "subtests": [ + { + "name": "HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=0.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=1.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't use fresh response with Age header when request contains Cache-Control: max-age that is greater than remaining freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does use aged stale response when request contains Cache-Control: max-stale that permits its use.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does reuse stale response with Age header when request contains Cache-Control: max-stale that permits its use.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't reuse fresh response when request contains Cache-Control: min-fresh that wants it fresher.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't reuse fresh response with Age header when request contains Cache-Control: min-fresh that wants it fresher.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-cache.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache validates fresh response with Last-Modified when request contains Cache-Control: no-cache.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache validates fresh response with ETag when request contains Cache-Control: no-cache.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-store.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached.", + "status": "FAIL", + "message": "assert_equals: Response status expected 504 but got 200" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/freshness.html", + "subtests": [ + { + "name": "HTTP cache reuses a response with a future Expires.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not reuse a response with a past Expires.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not reuse a response with a present Expires.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not reuse a response with an invalid Expires.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses a response with positive Cache-Control: max-age.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not reuse a response with Cache-Control: max-age=0.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses a response with positive Cache-Control: max-age and a past Expires.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses a response with positive Cache-Control: max-age and an invalid Expires.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not reuse a response with Cache-Control: max-age=0 and a future Expires.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not prefer Cache-Control: s-maxage over Cache-Control: max-age.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not reuse a response when the Age header is greater than its freshness lifetime.", + "status": "FAIL", + "message": "assert_equals: Response used expected 2 but got 1" + }, + { + "name": "HTTP cache does not store a response with Cache-Control: no-store.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not store a response with Cache-Control: no-store, even with max-age and Expires.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use, even with max-age and Expires.", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/heuristic.html", + "subtests": [ + { + "name": "HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache does not reuse an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is not present.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses a 200 OK response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses a 203 Non-Authoritative Information response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses a 204 No Content response with Last-Modified based upon heuristic freshness.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache reuses a 404 Not Found response with Last-Modified based upon heuristic freshness.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache reuses a 405 Method Not Allowed response with Last-Modified based upon heuristic freshness.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache reuses a 410 Gone response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses a 414 URI Too Long response with Last-Modified based upon heuristic freshness.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache reuses a 501 Not Implemented response with Last-Modified based upon heuristic freshness.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache does not use a 201 Created response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not use a 202 Accepted response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not use a 403 Forbidden response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not use a 502 Bad Gateway response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not use a 503 Service Unavailable response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not use a 504 Gateway Timeout response with Last-Modified based upon heuristic freshness.", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/invalidate.html", + "subtests": [ + { + "name": "HTTP cache invalidates after a successful response from a POST", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not invalidate after a failed response from an unsafe request", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 3 but got 3" + }, + { + "name": "HTTP cache invalidates after a successful response from a PUT", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache invalidates after a successful response from a DELETE", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache invalidates after a successful response from an unknown method", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache invalidates Location URL after a successful response from a POST", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not invalidate Location URL after a failed response from an unsafe request", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 3 but got 3" + }, + { + "name": "HTTP cache invalidates Location URL after a successful response from a PUT", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache invalidates Location URL after a successful response from a DELETE", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache invalidates Location URL after a successful response from an unknown method", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache invalidates Content-Location URL after a successful response from a POST", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache does not invalidate Content-Location URL after a failed response from an unsafe request", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 3 but got 3" + }, + { + "name": "HTTP cache invalidates Content-Location URL after a successful response from a PUT", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache invalidates Content-Location URL after a successful response from a DELETE", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache invalidates Content-Location URL after a successful response from an unknown method", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/partial.html", + "subtests": [ + { + "name": "HTTP cache stores partial content and reuses it.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache stores complete response and serves smaller ranges from it.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache stores partial response and serves smaller ranges from it.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache stores partial content and completes it.", + "status": "FAIL", + "message": "assert_equals: expected (string) \"bytes=5-\" but got (undefined) undefined" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/status.html", + "subtests": [ + { + "name": "HTTP cache goes to the network if it has a stale 200 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 200 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache goes to the network if it has a stale 203 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 203 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache goes to the network if it has a stale 204 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 204 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache goes to the network if it has a stale 299 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 299 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache goes to the network if it has a stale 400 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 400 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache goes to the network if it has a stale 404 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 404 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache goes to the network if it has a stale 410 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 410 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache goes to the network if it has a stale 499 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 499 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache goes to the network if it has a stale 500 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 500 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache goes to the network if it has a stale 502 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 502 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache goes to the network if it has a stale 503 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 503 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache goes to the network if it has a stale 504 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 504 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache goes to the network if it has a stale 599 response.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 599 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/vary.html", + "subtests": [ + { + "name": "HTTP cache reuses Vary response when request matches.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't use Vary response when request doesn't match.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't use Vary response when request omits variant header.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't invalidate existing Vary response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 3 but got 3" + }, + { + "name": "HTTP cache doesn't pay attention to headers not listed in Vary.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses two-way Vary response when request matches.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't use two-way Vary response when request doesn't match.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't use two-way Vary response when request omits variant header.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache reuses three-way Vary response when request matches.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't use three-way Vary response when request doesn't match.", + "status": "PASS", + "message": null + }, + { + "name": "HTTP cache doesn't use three-way Vary response when request omits variant header.", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, { "test": "/fetch/nosniff/image.html", "subtests": [ diff --git a/fetch/Sa10.json b/fetch/Sa10.json index 3f7cc19..98fe978 100644 --- a/fetch/Sa10.json +++ b/fetch/Sa10.json @@ -252,7 +252,7 @@ "message": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\"" }, { - "name": "Fetch http://web-platform.test:58389/fetch/api/resources/top.txt with no-cors mode", + "name": "Fetch http://web-platform.test:54706/fetch/api/resources/top.txt with no-cors mode", "status": "PASS", "message": null } @@ -279,7 +279,7 @@ "message": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\"" }, { - "name": "Fetch http://web-platform.test:58389/fetch/api/resources/top.txt with no-cors mode", + "name": "Fetch http://web-platform.test:54706/fetch/api/resources/top.txt with no-cors mode", "status": "PASS", "message": null } @@ -987,16 +987,50 @@ "status": "OK", "message": null }, + { + "test": "/fetch/api/basic/request-referrer-redirected-worker.html", + "subtests": [ + { + "name": "about:client referrer", + "status": "PASS", + "message": null + }, + { + "name": "url referrer", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/basic/request-referrer-worker.html", + "subtests": [ + { + "name": "about:client referrer", + "status": "PASS", + "message": null + }, + { + "name": "url referrer", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, { "test": "/fetch/api/basic/request-referrer.html", "subtests": [ { - "name": "Fetch: fetch() respects Request referrer value", + "name": "about:client referrer", "status": "PASS", "message": null }, { - "name": "Fetch: fetch() respects Request referrer value 1", + "name": "url referrer", "status": "PASS", "message": null } @@ -2097,6 +2131,40 @@ "status": "OK", "message": null }, + { + "test": "/fetch/api/cors/cors-expose-star-worker.html", + "subtests": [ + { + "name": "Basic Access-Control-Expose-Headers: * support", + "status": "FAIL", + "message": "assert_equals: expected (string) \"X\" but got (object) null" + }, + { + "name": "Cannot use * for credentialed fetches", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/cors/cors-expose-star.html", + "subtests": [ + { + "name": "Basic Access-Control-Expose-Headers: * support", + "status": "FAIL", + "message": "assert_equals: expected (string) \"X\" but got (object) null" + }, + { + "name": "Cannot use * for credentialed fetches", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, { "test": "/fetch/api/cors/cors-filtering-worker.html", "subtests": [ @@ -2941,6 +3009,100 @@ "status": "OK", "message": null }, + { + "test": "/fetch/api/cors/cors-preflight-star-worker.html", + "subtests": [ + { + "name": "CORS that succeeds with credentials: false; method: GET (allowed: get); header: X-Test,1 (allowed: x-test)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test)", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\"" + }, + { + "name": "CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *)", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\"" + }, + { + "name": "CORS that fails with credentials: true; method: OK (allowed: *); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: PUT (allowed: *); header: undefined (allowed: )", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: PUT (allowed: put); header: undefined (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: GET (allowed: get); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: GET (allowed: *); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/cors/cors-preflight-star.html", + "subtests": [ + { + "name": "CORS that succeeds with credentials: false; method: GET (allowed: get); header: X-Test,1 (allowed: x-test)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test)", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\"" + }, + { + "name": "CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *)", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\"" + }, + { + "name": "CORS that fails with credentials: true; method: OK (allowed: *); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: PUT (allowed: *); header: undefined (allowed: )", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: PUT (allowed: put); header: undefined (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: GET (allowed: get); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + }, + { + "name": "CORS that fails with credentials: true; method: GET (allowed: *); header: X-Test,1 (allowed: *)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, { "test": "/fetch/api/cors/cors-preflight-status-worker.html", "subtests": [ @@ -3297,6 +3459,11 @@ "name": "CORS [PUT] [several headers], server refuses", "status": "PASS", "message": null + }, + { + "name": "CORS [PUT] [only safe headers], server allows", + "status": "PASS", + "message": null } ], "status": "OK", @@ -3374,6 +3541,11 @@ "name": "CORS [PUT] [several headers], server refuses", "status": "PASS", "message": null + }, + { + "name": "CORS [PUT] [only safe headers], server allows", + "status": "PASS", + "message": null } ], "status": "OK", @@ -3383,304 +3555,329 @@ "test": "/fetch/api/cors/cors-redirect-credentials-worker.html", "subtests": [ { - "name": "Redirect 301 from same origin to remote with user and password", + "name": "Redirect 301 from same origin to remote without user and password", "status": "PASS", "message": null }, + { + "name": "Redirect 301 from same origin to remote with user and password", + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" + }, { "name": "Redirect 301 from same origin to remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from same origin to remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to same origin with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to same origin with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to same origin with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to same remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to same remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to same remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to another remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to another remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to another remote with password", + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" + }, + { + "name": "Redirect 302 from same origin to remote without user and password", "status": "PASS", "message": null }, { "name": "Redirect 302 from same origin to remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from same origin to remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from same origin to remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to same origin with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to same origin with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to same origin with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to same remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to same remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to same remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to another remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to another remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to another remote with password", + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" + }, + { + "name": "Redirect 303 from same origin to remote without user and password", "status": "PASS", "message": null }, { "name": "Redirect 303 from same origin to remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from same origin to remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from same origin to remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to same origin with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to same origin with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to same origin with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to same remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to same remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to same remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to another remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to another remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to another remote with password", + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" + }, + { + "name": "Redirect 307 from same origin to remote without user and password", "status": "PASS", "message": null }, { "name": "Redirect 307 from same origin to remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from same origin to remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from same origin to remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to same origin with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to same origin with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to same origin with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to same remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to same remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to same remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to another remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to another remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to another remote with password", + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" + }, + { + "name": "Redirect 308 from same origin to remote without user and password", "status": "PASS", "message": null }, { "name": "Redirect 308 from same origin to remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from same origin to remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from same origin to remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to same origin with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to same origin with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to same origin with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to same remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to same remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to same remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to another remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to another remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to another remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" } ], "status": "OK", @@ -3690,304 +3887,329 @@ "test": "/fetch/api/cors/cors-redirect-credentials.html", "subtests": [ { - "name": "Redirect 301 from same origin to remote with user and password", + "name": "Redirect 301 from same origin to remote without user and password", "status": "PASS", "message": null }, + { + "name": "Redirect 301 from same origin to remote with user and password", + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" + }, { "name": "Redirect 301 from same origin to remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from same origin to remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to same origin with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to same origin with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to same origin with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to same remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to same remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to same remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to another remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to another remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 301 from remote to another remote with password", + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" + }, + { + "name": "Redirect 302 from same origin to remote without user and password", "status": "PASS", "message": null }, { "name": "Redirect 302 from same origin to remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from same origin to remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from same origin to remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to same origin with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to same origin with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to same origin with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to same remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to same remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to same remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to another remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to another remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 302 from remote to another remote with password", + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" + }, + { + "name": "Redirect 303 from same origin to remote without user and password", "status": "PASS", "message": null }, { "name": "Redirect 303 from same origin to remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from same origin to remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from same origin to remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to same origin with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to same origin with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to same origin with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to same remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to same remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to same remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to another remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to another remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 303 from remote to another remote with password", + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" + }, + { + "name": "Redirect 307 from same origin to remote without user and password", "status": "PASS", "message": null }, { "name": "Redirect 307 from same origin to remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from same origin to remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from same origin to remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to same origin with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to same origin with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to same origin with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to same remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to same remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to same remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to another remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to another remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 307 from remote to another remote with password", + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" + }, + { + "name": "Redirect 308 from same origin to remote without user and password", "status": "PASS", "message": null }, { "name": "Redirect 308 from same origin to remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from same origin to remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from same origin to remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to same origin with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to same origin with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to same origin with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to same remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to same remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to same remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to another remote with user and password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to another remote with user", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" }, { "name": "Redirect 308 from remote to another remote with password", - "status": "PASS", - "message": null + "status": "FAIL", + "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" } ], "status": "OK", @@ -5593,6 +5815,18 @@ "status": "OK", "message": null }, + { + "test": "/fetch/api/policies/referrer-no-referrer-service-worker.https.html", + "subtests": [ + { + "name": "Fetch in service worker: referrer with no-referrer policy", + "status": "FAIL", + "message": "undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')" + } + ], + "status": "OK", + "message": null + }, { "test": "/fetch/api/policies/referrer-no-referrer-worker.html", "subtests": [ @@ -5617,13 +5851,37 @@ "status": "OK", "message": null }, + { + "test": "/fetch/api/policies/referrer-origin-service-worker.https.html", + "subtests": [ + { + "name": "Fetch in service worker: referrer with no-referrer policy", + "status": "FAIL", + "message": "undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https.html", + "subtests": [ + { + "name": "Fetch in service worker: referrer with origin-when-cross-origin policy", + "status": "FAIL", + "message": "undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')" + } + ], + "status": "OK", + "message": null + }, { "test": "/fetch/api/policies/referrer-origin-when-cross-origin-worker.html", "subtests": [ { "name": "Request's referrer is origin", "status": "FAIL", - "message": "assert_equals: request's referrer is http://web-platform.test:8000/ expected \"http://web-platform.test:8000/\" but got \"http://web-platform.test:8000/fetch/api/policies/referrer-origin-when-cross-origin.js?pipe=sub\"" + "message": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\"" } ], "status": "OK", @@ -5635,7 +5893,7 @@ { "name": "Request's referrer is origin", "status": "FAIL", - "message": "assert_equals: request's referrer is http://web-platform.test:8000/ expected \"http://web-platform.test:8000/\" but got \"http://web-platform.test:8000/fetch/api/policies/referrer-origin-when-cross-origin.html\"" + "message": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\"" } ], "status": "OK", @@ -5675,6 +5933,18 @@ "status": "OK", "message": null }, + { + "test": "/fetch/api/policies/referrer-unsafe-url-service-worker.https.html", + "subtests": [ + { + "name": "Fetch in worker: referrer with unsafe-url policy", + "status": "FAIL", + "message": "undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')" + } + ], + "status": "OK", + "message": null + }, { "test": "/fetch/api/policies/referrer-unsafe-url-worker.html", "subtests": [ @@ -5709,8 +5979,8 @@ }, { "name": "Redirect 301 21 times", - "status": "FAIL", - "message": "assert_unreached: Should have rejected: undefined Reached unreachable code" + "status": "PASS", + "message": null }, { "name": "Redirect 302 20 times", @@ -7432,7 +7702,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7442,7 +7712,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7452,7 +7722,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Modified-Since header is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Modified-Since header is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7462,7 +7732,7 @@ "message": "assert_equals: expected 2 but got 1" }, { - "name": "RequestCache \"default\" mode with an If-Modified-Since header is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Modified-Since header is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7472,7 +7742,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-None-Match header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-None-Match header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7482,7 +7752,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-None-Match header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-None-Match header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7492,7 +7762,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-None-Match header is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-None-Match header is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7502,7 +7772,7 @@ "message": "assert_equals: expected 2 but got 1" }, { - "name": "RequestCache \"default\" mode with an If-None-Match header is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-None-Match header is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "FAIL", "message": "assert_equals: expected 2 but got 1" }, @@ -7512,7 +7782,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7522,7 +7792,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7532,7 +7802,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Unmodified-Since header is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Unmodified-Since header is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7542,7 +7812,7 @@ "message": "assert_equals: expected 2 but got 1" }, { - "name": "RequestCache \"default\" mode with an If-Unmodified-Since header is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Unmodified-Since header is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "FAIL", "message": "assert_equals: expected 2 but got 1" }, @@ -7552,7 +7822,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Match header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Match header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7562,7 +7832,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Match header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Match header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7572,7 +7842,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Match header is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Match header is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7582,7 +7852,7 @@ "message": "assert_equals: expected 2 but got 1" }, { - "name": "RequestCache \"default\" mode with an If-Match header is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Match header is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "FAIL", "message": "assert_equals: expected 2 but got 1" }, @@ -7592,7 +7862,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Range header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Range header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7602,7 +7872,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Range header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Range header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7612,7 +7882,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode with an If-Range header is treated similarly to \"no-store\" with date and stale response", + "name": "RequestCache \"default\" mode with an If-Range header is treated similarly to \"no-store\" with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7622,7 +7892,7 @@ "message": "assert_equals: expected 2 but got 1" }, { - "name": "RequestCache \"default\" mode with an If-Range header is treated similarly to \"no-store\" with date and fresh response", + "name": "RequestCache \"default\" mode with an If-Range header is treated similarly to \"no-store\" with Last-Modified and fresh response", "status": "FAIL", "message": "assert_equals: expected 2 but got 1" } @@ -7639,7 +7909,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode checks the cache for previously cached content and goes to the network for stale responses with date and stale response", + "name": "RequestCache \"default\" mode checks the cache for previously cached content and goes to the network for stale responses with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7649,7 +7919,7 @@ "message": null }, { - "name": "RequestCache \"default\" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with date and fresh response", + "name": "RequestCache \"default\" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7659,7 +7929,7 @@ "message": null }, { - "name": "Responses with the \"Cache-Control: no-store\" header are not stored in the cache with date and stale response", + "name": "Responses with the \"Cache-Control: no-store\" header are not stored in the cache with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7669,7 +7939,7 @@ "message": null }, { - "name": "Responses with the \"Cache-Control: no-store\" header are not stored in the cache with date and fresh response", + "name": "Responses with the \"Cache-Control: no-store\" header are not stored in the cache with Last-Modified and fresh response", "status": "PASS", "message": null } @@ -7686,7 +7956,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for stale responses with date and stale response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for stale responses with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7696,7 +7966,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for fresh responses with date and fresh response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7706,7 +7976,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response is not found with date and stale response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response is not found with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7716,7 +7986,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response is not found with date and fresh response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response is not found with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7726,7 +7996,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response would vary with date and stale response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response would vary with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7736,7 +8006,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response would vary with date and fresh response", + "name": "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response would vary with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7746,7 +8016,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with date and stale response", + "name": "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7756,7 +8026,7 @@ "message": null }, { - "name": "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with date and fresh response", + "name": "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with Last-Modified and fresh response", "status": "PASS", "message": null } @@ -7773,7 +8043,7 @@ "message": null }, { - "name": "RequestCache \"no-cache\" mode revalidates stale responses found in the cache with date and stale response", + "name": "RequestCache \"no-cache\" mode revalidates stale responses found in the cache with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7783,7 +8053,7 @@ "message": null }, { - "name": "RequestCache \"no-cache\" mode revalidates fresh responses found in the cache with date and fresh response", + "name": "RequestCache \"no-cache\" mode revalidates fresh responses found in the cache with Last-Modified and fresh response", "status": "PASS", "message": null } @@ -7800,7 +8070,7 @@ "message": null }, { - "name": "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with date and stale response", + "name": "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7810,19 +8080,19 @@ "message": null }, { - "name": "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with date and fresh response", + "name": "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and fresh response", "status": "PASS", "message": null }, { "name": "RequestCache \"no-store\" mode does not store the response in the cache with Etag and stale response", "status": "FAIL", - "message": "assert_equals: expected (undefined) undefined but got (string) \"\\\"0.3784021714879814\\\"\"" + "message": "assert_equals: expected (undefined) undefined but got (string) \"\\\"0.6432901883400495\\\"\"" }, { - "name": "RequestCache \"no-store\" mode does not store the response in the cache with date and stale response", + "name": "RequestCache \"no-store\" mode does not store the response in the cache with Last-Modified and stale response", "status": "FAIL", - "message": "assert_equals: expected (undefined) undefined but got (string) \"Mon, 06 Mar 2017 11:52:32 GMT\"" + "message": "assert_equals: expected (undefined) undefined but got (string) \"Mon, 27 Mar 2017 01:30:37 GMT\"" }, { "name": "RequestCache \"no-store\" mode does not store the response in the cache with Etag and fresh response", @@ -7830,7 +8100,7 @@ "message": "assert_equals: expected 2 but got 1" }, { - "name": "RequestCache \"no-store\" mode does not store the response in the cache with date and fresh response", + "name": "RequestCache \"no-store\" mode does not store the response in the cache with Last-Modified and fresh response", "status": "FAIL", "message": "assert_equals: expected 2 but got 1" } @@ -7847,7 +8117,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and avoids revalidation for stale responses with date and stale response", + "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and avoids revalidation for stale responses with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7857,7 +8127,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and avoids revalidation for fresh responses with date and fresh response", + "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and avoids revalidation for fresh responses with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7867,7 +8137,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and does not go to the network if a cached response is not found with date and fresh response", + "name": "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and does not go to the network if a cached response is not found with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7877,7 +8147,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" (with \"same-origin\") uses cached same-origin redirects to same-origin content with date and fresh response", + "name": "RequestCache \"only-if-cached\" (with \"same-origin\") uses cached same-origin redirects to same-origin content with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7887,7 +8157,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" (with \"same-origin\") uses cached same-origin redirects to same-origin content with date and stale response", + "name": "RequestCache \"only-if-cached\" (with \"same-origin\") uses cached same-origin redirects to same-origin content with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7897,7 +8167,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" (with \"same-origin\") does not follow redirects across origins and rejects with date and fresh response", + "name": "RequestCache \"only-if-cached\" (with \"same-origin\") does not follow redirects across origins and rejects with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7907,7 +8177,7 @@ "message": null }, { - "name": "RequestCache \"only-if-cached\" (with \"same-origin\") does not follow redirects across origins and rejects with date and stale response", + "name": "RequestCache \"only-if-cached\" (with \"same-origin\") does not follow redirects across origins and rejects with Last-Modified and stale response", "status": "PASS", "message": null } @@ -7924,7 +8194,7 @@ "message": null }, { - "name": "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with date and stale response", + "name": "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7934,7 +8204,7 @@ "message": null }, { - "name": "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with date and fresh response", + "name": "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7944,7 +8214,7 @@ "message": null }, { - "name": "RequestCache \"reload\" mode does store the response in the cache with date and stale response", + "name": "RequestCache \"reload\" mode does store the response in the cache with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7954,7 +8224,7 @@ "message": null }, { - "name": "RequestCache \"reload\" mode does store the response in the cache with date and fresh response", + "name": "RequestCache \"reload\" mode does store the response in the cache with Last-Modified and fresh response", "status": "PASS", "message": null }, @@ -7964,7 +8234,7 @@ "message": null }, { - "name": "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with date and stale response", + "name": "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Last-Modified and stale response", "status": "PASS", "message": null }, @@ -7974,7 +8244,7 @@ "message": null }, { - "name": "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with date and fresh response", + "name": "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Last-Modified and fresh response", "status": "PASS", "message": null } @@ -9852,37 +10122,591 @@ "message": null }, { - "name": "Throws RangeError when responseInit's status is 600", + "name": "Throws RangeError when responseInit's status is 600", + "status": "PASS", + "message": null + }, + { + "name": "Throws RangeError when responseInit's status is 1000", + "status": "PASS", + "message": null + }, + { + "name": "Throws TypeError when responseInit's statusText is \n", + "status": "PASS", + "message": null + }, + { + "name": "Throws TypeError when responseInit's statusText is Ā", + "status": "PASS", + "message": null + }, + { + "name": "Throws TypeError when building a response with body and a body status of 204", + "status": "PASS", + "message": null + }, + { + "name": "Throws TypeError when building a response with body and a body status of 205", + "status": "PASS", + "message": null + }, + { + "name": "Throws TypeError when building a response with body and a body status of 304", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/response/response-idl.html", + "subtests": [ + { + "name": "Response interface: existence and properties of interface object", + "status": "PASS", + "message": null + }, + { + "name": "Response interface object length", + "status": "PASS", + "message": null + }, + { + "name": "Response interface object name", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: existence and properties of interface prototype object", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: existence and properties of interface prototype object's \"constructor\" property", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: operation error()", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: operation redirect(USVString,unsigned short)", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: attribute type", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: attribute url", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: attribute status", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: attribute ok", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: attribute statusText", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: attribute headers", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: attribute trailer", + "status": "FAIL", + "message": "assert_true: The prototype object must have a property \"trailer\" expected true got false" + }, + { + "name": "Response interface: operation clone()", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: attribute body", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: attribute bodyUsed", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: operation arrayBuffer()", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: operation blob()", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: operation formData()", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: operation json()", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: operation text()", + "status": "PASS", + "message": null + }, + { + "name": "Response must be primary interface of new Response()", + "status": "PASS", + "message": null + }, + { + "name": "Stringification of new Response()", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: new Response() must inherit property \"error\" with the proper type (0)", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: new Response() must inherit property \"redirect\" with the proper type (1)", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: calling redirect(USVString,unsigned short) on new Response() with too few arguments must throw TypeError", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: new Response() must inherit property \"type\" with the proper type (2)", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: new Response() must inherit property \"url\" with the proper type (3)", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: new Response() must inherit property \"status\" with the proper type (4)", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: new Response() must inherit property \"ok\" with the proper type (5)", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: new Response() must inherit property \"statusText\" with the proper type (6)", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: new Response() must inherit property \"headers\" with the proper type (7)", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: new Response() must inherit property \"trailer\" with the proper type (8)", + "status": "FAIL", + "message": "assert_inherits: property \"trailer\" not found in prototype chain" + }, + { + "name": "Response interface: new Response() must inherit property \"clone\" with the proper type (9)", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: new Response() must inherit property \"body\" with the proper type (10)", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: new Response() must inherit property \"bodyUsed\" with the proper type (11)", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: new Response() must inherit property \"arrayBuffer\" with the proper type (12)", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: new Response() must inherit property \"blob\" with the proper type (13)", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: new Response() must inherit property \"formData\" with the proper type (14)", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: new Response() must inherit property \"json\" with the proper type (15)", + "status": "PASS", + "message": null + }, + { + "name": "Response interface: new Response() must inherit property \"text\" with the proper type (16)", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/response/response-init-001.html", + "subtests": [ + { + "name": "Check default value for type attribute", + "status": "PASS", + "message": null + }, + { + "name": "Check default value for url attribute", + "status": "PASS", + "message": null + }, + { + "name": "Check default value for ok attribute", + "status": "PASS", + "message": null + }, + { + "name": "Check default value for status attribute", + "status": "PASS", + "message": null + }, + { + "name": "Check default value for statusText attribute", + "status": "PASS", + "message": null + }, + { + "name": "Check default value for body attribute", + "status": "PASS", + "message": null + }, + { + "name": "Check status init values and associated getter", + "status": "PASS", + "message": null + }, + { + "name": "Check statusText init values and associated getter", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/response/response-init-002.html", + "subtests": [ + { + "name": "Initialize Response with headers values", + "status": "PASS", + "message": null + }, + { + "name": "Initialize Response's body with application/octet-binary", + "status": "PASS", + "message": null + }, + { + "name": "Initialize Response's body with multipart/form-data", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: undefined" + }, + { + "name": "Initialize Response's body with application/x-www-form-urlencoded;charset=UTF-8", + "status": "PASS", + "message": null + }, + { + "name": "Initialize Response's body with text/plain;charset=UTF-8", + "status": "PASS", + "message": null + }, + { + "name": "Read Response's body as readableStream", + "status": "PASS", + "message": null + }, + { + "name": "Testing empty Response Content-Type header", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/response/response-static-error.html", + "subtests": [ + { + "name": "Check response returned by static method error()", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/response/response-static-redirect.html", + "subtests": [ + { + "name": "Check default redirect response", + "status": "PASS", + "message": null + }, + { + "name": "Check response returned by static method redirect(), status = 301", + "status": "PASS", + "message": null + }, + { + "name": "Check response returned by static method redirect(), status = 302", + "status": "PASS", + "message": null + }, + { + "name": "Check response returned by static method redirect(), status = 303", + "status": "PASS", + "message": null + }, + { + "name": "Check response returned by static method redirect(), status = 307", + "status": "PASS", + "message": null + }, + { + "name": "Check response returned by static method redirect(), status = 308", + "status": "PASS", + "message": null + }, + { + "name": "Check error returned when giving invalid url to redirect()", + "status": "PASS", + "message": null + }, + { + "name": "Check error returned when giving invalid status to redirect(), status = 200", + "status": "PASS", + "message": null + }, + { + "name": "Check error returned when giving invalid status to redirect(), status = 309", + "status": "PASS", + "message": null + }, + { + "name": "Check error returned when giving invalid status to redirect(), status = 400", + "status": "PASS", + "message": null + }, + { + "name": "Check error returned when giving invalid status to redirect(), status = 500", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/response/response-stream-disturbed-1.html", + "subtests": [ + { + "name": "Getting blob after getting the Response body - not disturbed, not locked", + "status": "PASS", + "message": null + }, + { + "name": "Getting text after getting the Response body - not disturbed, not locked", + "status": "PASS", + "message": null + }, + { + "name": "Getting json after getting the Response body - not disturbed, not locked", + "status": "PASS", + "message": null + }, + { + "name": "Getting arrayBuffer after getting the Response body - not disturbed, not locked", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/response/response-stream-disturbed-2.html", + "subtests": [ + { + "name": "Getting blob after getting a locked Response body", + "status": "PASS", + "message": null + }, + { + "name": "Getting text after getting a locked Response body", + "status": "PASS", + "message": null + }, + { + "name": "Getting json after getting a locked Response body", + "status": "PASS", + "message": null + }, + { + "name": "Getting arrayBuffer after getting a locked Response body", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/response/response-stream-disturbed-3.html", + "subtests": [ + { + "name": "Getting blob after reading the Response body", + "status": "PASS", + "message": null + }, + { + "name": "Getting text after reading the Response body", + "status": "PASS", + "message": null + }, + { + "name": "Getting json after reading the Response body", + "status": "PASS", + "message": null + }, + { + "name": "Getting arrayBuffer after reading the Response body", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/response/response-stream-disturbed-4.html", + "subtests": [ + { + "name": "Getting blob after cancelling the Response body", + "status": "PASS", + "message": null + }, + { + "name": "Getting text after cancelling the Response body", + "status": "PASS", + "message": null + }, + { + "name": "Getting json after cancelling the Response body", + "status": "PASS", + "message": null + }, + { + "name": "Getting arrayBuffer after cancelling the Response body", + "status": "PASS", + "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/response/response-stream-disturbed-5.html", + "subtests": [ + { + "name": "Getting a body reader after consuming as blob", + "status": "PASS", + "message": null + }, + { + "name": "Getting a body reader after consuming as text", "status": "PASS", "message": null }, { - "name": "Throws RangeError when responseInit's status is 1000", + "name": "Getting a body reader after consuming as json", "status": "PASS", "message": null }, { - "name": "Throws TypeError when responseInit's statusText is \n", + "name": "Getting a body reader after consuming as arrayBuffer", "status": "PASS", "message": null - }, + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/api/response/response-trailer.html", + "subtests": [ { - "name": "Throws TypeError when responseInit's statusText is Ā", + "name": "trailer() test", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: undefined is not an object (evaluating 'res.trailer.then')\"" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/304-update.html", + "subtests": [ + { + "name": "HTTP cache updates returned headers from a Last-Modified 304.", "status": "PASS", "message": null }, { - "name": "Throws TypeError when building a response with body and a body status of 204", + "name": "HTTP cache updates stored headers from a Last-Modified 304.", "status": "PASS", "message": null }, { - "name": "Throws TypeError when building a response with body and a body status of 205", + "name": "HTTP cache updates returned headers from a ETag 304.", "status": "PASS", "message": null }, { - "name": "Throws TypeError when building a response with body and a body status of 304", + "name": "HTTP cache updates stored headers from a ETag 304.", "status": "PASS", "message": null } @@ -9891,205 +10715,234 @@ "message": null }, { - "test": "/fetch/api/response/response-idl.html", + "test": "/fetch/http-cache/cc-request.html", "subtests": [ { - "name": "Response interface: existence and properties of interface object", + "name": "HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=0.", "status": "PASS", "message": null }, { - "name": "Response interface object length", - "status": "PASS", - "message": null + "name": "HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=1.", + "status": "FAIL", + "message": "assert_equals: Response used expected 2 but got 1" }, { - "name": "Response interface object name", - "status": "PASS", - "message": null + "name": "HTTP cache doesn't use fresh response with Age header when request contains Cache-Control: max-age that is greater than remaining freshness.", + "status": "FAIL", + "message": "assert_equals: Response used expected 2 but got 1" }, { - "name": "Response interface: existence and properties of interface prototype object", + "name": "HTTP cache does use aged stale response when request contains Cache-Control: max-stale that permits its use.", "status": "PASS", "message": null }, { - "name": "Response interface: existence and properties of interface prototype object's \"constructor\" property", + "name": "HTTP cache does reuse stale response with Age header when request contains Cache-Control: max-stale that permits its use.", "status": "PASS", "message": null }, { - "name": "Response interface: operation error()", - "status": "PASS", - "message": null + "name": "HTTP cache doesn't reuse fresh response when request contains Cache-Control: min-fresh that wants it fresher.", + "status": "FAIL", + "message": "assert_equals: Response used expected 2 but got 1" }, { - "name": "Response interface: operation redirect(USVString,unsigned short)", - "status": "PASS", - "message": null + "name": "HTTP cache doesn't reuse fresh response with Age header when request contains Cache-Control: min-fresh that wants it fresher.", + "status": "FAIL", + "message": "assert_equals: Response used expected 2 but got 1" }, { - "name": "Response interface: attribute type", + "name": "HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-cache.", "status": "PASS", "message": null }, { - "name": "Response interface: attribute url", + "name": "HTTP cache validates fresh response with Last-Modified when request contains Cache-Control: no-cache.", "status": "PASS", "message": null }, { - "name": "Response interface: attribute status", + "name": "HTTP cache validates fresh response with ETag when request contains Cache-Control: no-cache.", "status": "PASS", "message": null }, { - "name": "Response interface: attribute ok", + "name": "HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-store.", + "status": "FAIL", + "message": "assert_equals: Response used expected 2 but got 1" + }, + { + "name": "HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached.", + "status": "FAIL", + "message": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\"" + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/freshness.html", + "subtests": [ + { + "name": "HTTP cache reuses a response with a future Expires.", "status": "PASS", "message": null }, { - "name": "Response interface: attribute statusText", + "name": "HTTP cache does not reuse a response with a past Expires.", "status": "PASS", "message": null }, { - "name": "Response interface: attribute headers", + "name": "HTTP cache does not reuse a response with a present Expires.", "status": "PASS", "message": null }, { - "name": "Response interface: operation clone()", + "name": "HTTP cache does not reuse a response with an invalid Expires.", "status": "PASS", "message": null }, { - "name": "Response interface: attribute body", + "name": "HTTP cache reuses a response with positive Cache-Control: max-age.", "status": "PASS", "message": null }, { - "name": "Response interface: attribute bodyUsed", + "name": "HTTP cache does not reuse a response with Cache-Control: max-age=0.", "status": "PASS", "message": null }, { - "name": "Response interface: operation arrayBuffer()", + "name": "HTTP cache reuses a response with positive Cache-Control: max-age and a past Expires.", "status": "PASS", "message": null }, { - "name": "Response interface: operation blob()", + "name": "HTTP cache reuses a response with positive Cache-Control: max-age and an invalid Expires.", "status": "PASS", "message": null }, { - "name": "Response interface: operation formData()", + "name": "HTTP cache does not reuse a response with Cache-Control: max-age=0 and a future Expires.", "status": "PASS", "message": null }, { - "name": "Response interface: operation json()", + "name": "HTTP cache does not prefer Cache-Control: s-maxage over Cache-Control: max-age.", "status": "PASS", "message": null }, { - "name": "Response interface: operation text()", + "name": "HTTP cache does not reuse a response when the Age header is greater than its freshness lifetime.", "status": "PASS", "message": null }, { - "name": "Response must be primary interface of new Response()", + "name": "HTTP cache does not store a response with Cache-Control: no-store.", "status": "PASS", "message": null }, { - "name": "Stringification of new Response()", + "name": "HTTP cache does not store a response with Cache-Control: no-store, even with max-age and Expires.", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"error\" with the proper type (0)", + "name": "HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use.", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"redirect\" with the proper type (1)", + "name": "HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use, even with max-age and Expires.", "status": "PASS", "message": null + } + ], + "status": "OK", + "message": null + }, + { + "test": "/fetch/http-cache/heuristic.html", + "subtests": [ + { + "name": "HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" }, { - "name": "Response interface: calling redirect(USVString,unsigned short) on new Response() with too few arguments must throw TypeError", + "name": "HTTP cache does not reuse an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is not present.", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"type\" with the proper type (2)", + "name": "HTTP cache reuses a 200 OK response with Last-Modified based upon heuristic freshness.", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"url\" with the proper type (3)", + "name": "HTTP cache reuses a 203 Non-Authoritative Information response with Last-Modified based upon heuristic freshness.", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"status\" with the proper type (4)", + "name": "HTTP cache reuses a 204 No Content response with Last-Modified based upon heuristic freshness.", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"ok\" with the proper type (5)", + "name": "HTTP cache reuses a 404 Not Found response with Last-Modified based upon heuristic freshness.", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"statusText\" with the proper type (6)", + "name": "HTTP cache reuses a 405 Method Not Allowed response with Last-Modified based upon heuristic freshness.", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"headers\" with the proper type (7)", + "name": "HTTP cache reuses a 410 Gone response with Last-Modified based upon heuristic freshness.", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"clone\" with the proper type (8)", + "name": "HTTP cache reuses a 414 URI Too Long response with Last-Modified based upon heuristic freshness.", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"body\" with the proper type (9)", + "name": "HTTP cache reuses a 501 Not Implemented response with Last-Modified based upon heuristic freshness.", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"bodyUsed\" with the proper type (10)", + "name": "HTTP cache does not use a 201 Created response with Last-Modified based upon heuristic freshness.", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"arrayBuffer\" with the proper type (11)", + "name": "HTTP cache does not use a 202 Accepted response with Last-Modified based upon heuristic freshness.", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"blob\" with the proper type (12)", + "name": "HTTP cache does not use a 403 Forbidden response with Last-Modified based upon heuristic freshness.", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"formData\" with the proper type (13)", + "name": "HTTP cache does not use a 502 Bad Gateway response with Last-Modified based upon heuristic freshness.", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"json\" with the proper type (14)", + "name": "HTTP cache does not use a 503 Service Unavailable response with Last-Modified based upon heuristic freshness.", "status": "PASS", "message": null }, { - "name": "Response interface: new Response() must inherit property \"text\" with the proper type (15)", + "name": "HTTP cache does not use a 504 Gateway Timeout response with Last-Modified based upon heuristic freshness.", "status": "PASS", "message": null } @@ -10098,296 +10951,306 @@ "message": null }, { - "test": "/fetch/api/response/response-init-001.html", + "test": "/fetch/http-cache/invalidate.html", "subtests": [ { - "name": "Check default value for type attribute", + "name": "HTTP cache invalidates after a successful response from a POST", "status": "PASS", "message": null }, { - "name": "Check default value for url attribute", - "status": "PASS", - "message": null + "name": "HTTP cache does not invalidate after a failed response from an unsafe request", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 3 but got 3" }, { - "name": "Check default value for ok attribute", + "name": "HTTP cache invalidates after a successful response from a PUT", "status": "PASS", "message": null }, { - "name": "Check default value for status attribute", + "name": "HTTP cache invalidates after a successful response from a DELETE", "status": "PASS", "message": null }, { - "name": "Check default value for statusText attribute", + "name": "HTTP cache invalidates after a successful response from an unknown method", "status": "PASS", "message": null }, { - "name": "Check default value for body attribute", - "status": "PASS", - "message": null + "name": "HTTP cache invalidates Location URL after a successful response from a POST", + "status": "FAIL", + "message": "assert_equals: Response used expected 3 but got 1" }, { - "name": "Check status init values and associated getter", + "name": "HTTP cache does not invalidate Location URL after a failed response from an unsafe request", "status": "PASS", "message": null }, { - "name": "Check statusText init values and associated getter", - "status": "PASS", - "message": null - } - ], - "status": "OK", - "message": null - }, - { - "test": "/fetch/api/response/response-init-002.html", - "subtests": [ + "name": "HTTP cache invalidates Location URL after a successful response from a PUT", + "status": "FAIL", + "message": "assert_equals: Response used expected 3 but got 1" + }, { - "name": "Initialize Response with headers values", - "status": "PASS", - "message": null + "name": "HTTP cache invalidates Location URL after a successful response from a DELETE", + "status": "FAIL", + "message": "assert_equals: Response used expected 3 but got 1" }, { - "name": "Initialize Response's body with application/octet-binary", - "status": "PASS", - "message": null + "name": "HTTP cache invalidates Location URL after a successful response from an unknown method", + "status": "FAIL", + "message": "assert_equals: Response used expected 3 but got 1" }, { - "name": "Initialize Response's body with multipart/form-data", + "name": "HTTP cache invalidates Content-Location URL after a successful response from a POST", "status": "FAIL", - "message": "promise_test: Unhandled rejection with value: undefined" + "message": "assert_equals: Response used expected 3 but got 1" }, { - "name": "Initialize Response's body with application/x-www-form-urlencoded;charset=UTF-8", + "name": "HTTP cache does not invalidate Content-Location URL after a failed response from an unsafe request", "status": "PASS", "message": null }, { - "name": "Initialize Response's body with text/plain;charset=UTF-8", - "status": "PASS", - "message": null + "name": "HTTP cache invalidates Content-Location URL after a successful response from a PUT", + "status": "FAIL", + "message": "assert_equals: Response used expected 3 but got 1" }, { - "name": "Read Response's body as readableStream", - "status": "PASS", - "message": null + "name": "HTTP cache invalidates Content-Location URL after a successful response from a DELETE", + "status": "FAIL", + "message": "assert_equals: Response used expected 3 but got 1" }, { - "name": "Testing empty Response Content-Type header", - "status": "PASS", - "message": null + "name": "HTTP cache invalidates Content-Location URL after a successful response from an unknown method", + "status": "FAIL", + "message": "assert_equals: Response used expected 3 but got 1" } ], "status": "OK", "message": null }, { - "test": "/fetch/api/response/response-static-error.html", + "test": "/fetch/http-cache/partial.html", "subtests": [ { - "name": "Check response returned by static method error()", - "status": "PASS", - "message": null + "name": "HTTP cache stores partial content and reuses it.", + "status": "FAIL", + "message": "assert_equals: Response body expected \"cc61e73b-fff7-457e-a1f6-b2392ae2bb4e\" but got \"01234\"" + }, + { + "name": "HTTP cache stores complete response and serves smaller ranges from it.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache stores partial response and serves smaller ranges from it.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache stores partial content and completes it.", + "status": "FAIL", + "message": "assert_equals: expected (string) \"bytes=5-\" but got (undefined) undefined" } ], "status": "OK", "message": null }, { - "test": "/fetch/api/response/response-static-redirect.html", + "test": "/fetch/http-cache/status.html", "subtests": [ { - "name": "Check default redirect response", + "name": "HTTP cache goes to the network if it has a stale 200 response.", "status": "PASS", "message": null }, { - "name": "Check response returned by static method redirect(), status = 301", + "name": "HTTP cache avoids going to the network if it has a fresh 200 response.", "status": "PASS", "message": null }, { - "name": "Check response returned by static method redirect(), status = 302", + "name": "HTTP cache goes to the network if it has a stale 203 response.", "status": "PASS", "message": null }, { - "name": "Check response returned by static method redirect(), status = 303", + "name": "HTTP cache avoids going to the network if it has a fresh 203 response.", "status": "PASS", "message": null }, { - "name": "Check response returned by static method redirect(), status = 307", + "name": "HTTP cache goes to the network if it has a stale 204 response.", "status": "PASS", "message": null }, { - "name": "Check response returned by static method redirect(), status = 308", + "name": "HTTP cache avoids going to the network if it has a fresh 204 response.", "status": "PASS", "message": null }, { - "name": "Check error returned when giving invalid url to redirect()", + "name": "HTTP cache goes to the network if it has a stale 299 response.", "status": "PASS", "message": null }, { - "name": "Check error returned when giving invalid status to redirect(), status = 200", - "status": "PASS", - "message": null + "name": "HTTP cache avoids going to the network if it has a fresh 299 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" }, { - "name": "Check error returned when giving invalid status to redirect(), status = 309", + "name": "HTTP cache goes to the network if it has a stale 400 response.", "status": "PASS", "message": null }, { - "name": "Check error returned when giving invalid status to redirect(), status = 400", + "name": "HTTP cache avoids going to the network if it has a fresh 400 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache goes to the network if it has a stale 404 response.", "status": "PASS", "message": null }, { - "name": "Check error returned when giving invalid status to redirect(), status = 500", + "name": "HTTP cache avoids going to the network if it has a fresh 404 response.", "status": "PASS", "message": null - } - ], - "status": "OK", - "message": null - }, - { - "test": "/fetch/api/response/response-stream-disturbed-1.html", - "subtests": [ + }, { - "name": "Getting blob after getting the Response body - not disturbed, not locked", + "name": "HTTP cache goes to the network if it has a stale 410 response.", "status": "PASS", "message": null }, { - "name": "Getting text after getting the Response body - not disturbed, not locked", + "name": "HTTP cache avoids going to the network if it has a fresh 410 response.", "status": "PASS", "message": null }, { - "name": "Getting json after getting the Response body - not disturbed, not locked", + "name": "HTTP cache goes to the network if it has a stale 499 response.", "status": "PASS", "message": null }, { - "name": "Getting arrayBuffer after getting the Response body - not disturbed, not locked", + "name": "HTTP cache avoids going to the network if it has a fresh 499 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache goes to the network if it has a stale 500 response.", "status": "PASS", "message": null - } - ], - "status": "OK", - "message": null - }, - { - "test": "/fetch/api/response/response-stream-disturbed-2.html", - "subtests": [ + }, { - "name": "Getting blob after getting a locked Response body", + "name": "HTTP cache avoids going to the network if it has a fresh 500 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache goes to the network if it has a stale 502 response.", "status": "PASS", "message": null }, { - "name": "Getting text after getting a locked Response body", + "name": "HTTP cache avoids going to the network if it has a fresh 502 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache goes to the network if it has a stale 503 response.", "status": "PASS", "message": null }, { - "name": "Getting json after getting a locked Response body", + "name": "HTTP cache avoids going to the network if it has a fresh 503 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache goes to the network if it has a stale 504 response.", "status": "PASS", "message": null }, { - "name": "Getting arrayBuffer after getting a locked Response body", + "name": "HTTP cache avoids going to the network if it has a fresh 504 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" + }, + { + "name": "HTTP cache goes to the network if it has a stale 599 response.", "status": "PASS", "message": null + }, + { + "name": "HTTP cache avoids going to the network if it has a fresh 599 response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 2 but got 2" } ], "status": "OK", "message": null }, { - "test": "/fetch/api/response/response-stream-disturbed-3.html", + "test": "/fetch/http-cache/vary.html", "subtests": [ { - "name": "Getting blob after reading the Response body", + "name": "HTTP cache reuses Vary response when request matches.", "status": "PASS", "message": null }, { - "name": "Getting text after reading the Response body", + "name": "HTTP cache doesn't use Vary response when request doesn't match.", "status": "PASS", "message": null }, { - "name": "Getting json after reading the Response body", + "name": "HTTP cache doesn't use Vary response when request omits variant header.", "status": "PASS", "message": null }, { - "name": "Getting arrayBuffer after reading the Response body", - "status": "PASS", - "message": null - } - ], - "status": "OK", - "message": null - }, - { - "test": "/fetch/api/response/response-stream-disturbed-4.html", - "subtests": [ - { - "name": "Getting blob after cancelling the Response body", - "status": "PASS", - "message": null + "name": "HTTP cache doesn't invalidate existing Vary response.", + "status": "FAIL", + "message": "assert_less_than: Response used expected a number less than 3 but got 3" }, { - "name": "Getting text after cancelling the Response body", + "name": "HTTP cache doesn't pay attention to headers not listed in Vary.", "status": "PASS", "message": null }, { - "name": "Getting json after cancelling the Response body", + "name": "HTTP cache reuses two-way Vary response when request matches.", "status": "PASS", "message": null }, { - "name": "Getting arrayBuffer after cancelling the Response body", + "name": "HTTP cache doesn't use two-way Vary response when request doesn't match.", "status": "PASS", "message": null - } - ], - "status": "OK", - "message": null - }, - { - "test": "/fetch/api/response/response-stream-disturbed-5.html", - "subtests": [ + }, { - "name": "Getting a body reader after consuming as blob", + "name": "HTTP cache doesn't use two-way Vary response when request omits variant header.", "status": "PASS", "message": null }, { - "name": "Getting a body reader after consuming as text", + "name": "HTTP cache reuses three-way Vary response when request matches.", "status": "PASS", "message": null }, { - "name": "Getting a body reader after consuming as json", + "name": "HTTP cache doesn't use three-way Vary response when request doesn't match.", "status": "PASS", "message": null }, { - "name": "Getting a body reader after consuming as arrayBuffer", + "name": "HTTP cache doesn't use three-way Vary response when request omits variant header.", "status": "PASS", "message": null } diff --git a/fetch/all.html b/fetch/all.html index a4d9af1..bffd1c2 100644 --- a/fetch/all.html +++ b/fetch/all.html @@ -11,7 +11,7 @@

All Results

-

Test files: 144; Total subtests: 1914

+

Test files: 163; Total subtests: 2062

Test Files

  1. /fetch/api/basic/accept-header-worker.html
  2. /fetch/api/basic/accept-header.html
  3. @@ -32,131 +32,150 @@

    Test Files

  4. /fetch/api/basic/request-head.html
  5. /fetch/api/basic/request-headers-worker.html
  6. /fetch/api/basic/request-headers.html
  7. -
  8. /fetch/api/basic/request-referrer.html
  9. -
  10. /fetch/api/basic/request-upload-worker.html
  11. -
  12. /fetch/api/basic/request-upload.html
  13. -
  14. /fetch/api/basic/response-url-worker.html
  15. -
  16. /fetch/api/basic/response-url.html
  17. -
  18. /fetch/api/basic/scheme-about-worker.html
  19. -
  20. /fetch/api/basic/scheme-about.html
  21. -
  22. /fetch/api/basic/scheme-blob-worker.html
  23. -
  24. /fetch/api/basic/scheme-blob.html
  25. -
  26. /fetch/api/basic/scheme-data-worker.html
  27. -
  28. /fetch/api/basic/scheme-data.html
  29. -
  30. /fetch/api/basic/scheme-others-worker.html
  31. -
  32. /fetch/api/basic/scheme-others.html
  33. -
  34. /fetch/api/basic/stream-response-worker.html
  35. -
  36. /fetch/api/basic/stream-response.html
  37. -
  38. /fetch/api/basic/text-utf8.html
  39. -
  40. /fetch/api/cors/cors-basic-worker.html
  41. -
  42. /fetch/api/cors/cors-basic.html
  43. -
  44. /fetch/api/cors/cors-cookies-worker.html
  45. -
  46. /fetch/api/cors/cors-cookies.html
  47. -
  48. /fetch/api/cors/cors-filtering-worker.html
  49. -
  50. /fetch/api/cors/cors-filtering.html
  51. -
  52. /fetch/api/cors/cors-multiple-origins-worker.html
  53. -
  54. /fetch/api/cors/cors-multiple-origins.html
  55. -
  56. /fetch/api/cors/cors-no-preflight-worker.html
  57. -
  58. /fetch/api/cors/cors-no-preflight.html
  59. -
  60. /fetch/api/cors/cors-origin-worker.html
  61. -
  62. /fetch/api/cors/cors-origin.html
  63. -
  64. /fetch/api/cors/cors-preflight-redirect-worker.html
  65. -
  66. /fetch/api/cors/cors-preflight-redirect.html
  67. -
  68. /fetch/api/cors/cors-preflight-referrer-worker.html
  69. -
  70. /fetch/api/cors/cors-preflight-referrer.html
  71. -
  72. /fetch/api/cors/cors-preflight-status-worker.html
  73. -
  74. /fetch/api/cors/cors-preflight-status.html
  75. -
  76. /fetch/api/cors/cors-preflight-worker.html
  77. -
  78. /fetch/api/cors/cors-preflight.html
  79. -
  80. /fetch/api/cors/cors-redirect-credentials-worker.html
  81. -
  82. /fetch/api/cors/cors-redirect-credentials.html
  83. -
  84. /fetch/api/cors/cors-redirect-preflight-worker.html
  85. -
  86. /fetch/api/cors/cors-redirect-preflight.html
  87. -
  88. /fetch/api/cors/cors-redirect-worker.html
  89. -
  90. /fetch/api/cors/cors-redirect.html
  91. -
  92. /fetch/api/credentials/authentication-basic-worker.html
  93. -
  94. /fetch/api/credentials/authentication-basic.html
  95. -
  96. /fetch/api/credentials/cookies-worker.html
  97. -
  98. /fetch/api/credentials/cookies.html
  99. -
  100. /fetch/api/headers/header-values-normalize.html
  101. -
  102. /fetch/api/headers/header-values.html
  103. -
  104. /fetch/api/headers/headers-basic.html
  105. -
  106. /fetch/api/headers/headers-casing.html
  107. -
  108. /fetch/api/headers/headers-combine.html
  109. -
  110. /fetch/api/headers/headers-errors.html
  111. -
  112. /fetch/api/headers/headers-idl.html
  113. -
  114. /fetch/api/headers/headers-normalize.html
  115. -
  116. /fetch/api/headers/headers-record.html
  117. -
  118. /fetch/api/headers/headers-structure.html
  119. -
  120. /fetch/api/policies/csp-blocked-worker.html
  121. -
  122. /fetch/api/policies/csp-blocked.html
  123. -
  124. /fetch/api/policies/referrer-no-referrer-worker.html
  125. -
  126. /fetch/api/policies/referrer-no-referrer.html
  127. -
  128. /fetch/api/policies/referrer-origin-when-cross-origin-worker.html
  129. -
  130. /fetch/api/policies/referrer-origin-when-cross-origin.html
  131. -
  132. /fetch/api/policies/referrer-origin-worker.html
  133. -
  134. /fetch/api/policies/referrer-origin.html
  135. -
  136. /fetch/api/policies/referrer-unsafe-url-worker.html
  137. -
  138. /fetch/api/policies/referrer-unsafe-url.html
  139. -
  140. /fetch/api/redirect/redirect-count-worker.html
  141. -
  142. /fetch/api/redirect/redirect-count.html
  143. -
  144. /fetch/api/redirect/redirect-location-worker.html
  145. -
  146. /fetch/api/redirect/redirect-location.html
  147. -
  148. /fetch/api/redirect/redirect-method-worker.html
  149. -
  150. /fetch/api/redirect/redirect-method.html
  151. -
  152. /fetch/api/redirect/redirect-mode-worker.html
  153. -
  154. /fetch/api/redirect/redirect-mode.html
  155. -
  156. /fetch/api/redirect/redirect-origin-worker.html
  157. -
  158. /fetch/api/redirect/redirect-origin.html
  159. -
  160. /fetch/api/redirect/redirect-referrer-worker.html
  161. -
  162. /fetch/api/redirect/redirect-referrer.html
  163. -
  164. /fetch/api/redirect/redirect-schemes.html
  165. -
  166. /fetch/api/redirect/redirect-to-dataurl-worker.html
  167. -
  168. /fetch/api/redirect/redirect-to-dataurl.html
  169. -
  170. /fetch/api/request/multi-globals/url-parsing.html
  171. -
  172. /fetch/api/request/request-bad-port.html
  173. -
  174. /fetch/api/request/request-cache-default-conditional.html
  175. -
  176. /fetch/api/request/request-cache-default.html
  177. -
  178. /fetch/api/request/request-cache-force-cache.html
  179. -
  180. /fetch/api/request/request-cache-no-cache.html
  181. -
  182. /fetch/api/request/request-cache-no-store.html
  183. -
  184. /fetch/api/request/request-cache-only-if-cached.html
  185. -
  186. /fetch/api/request/request-cache-reload.html
  187. -
  188. /fetch/api/request/request-clone.sub.html
  189. -
  190. /fetch/api/request/request-consume-empty.html
  191. -
  192. /fetch/api/request/request-consume.html
  193. -
  194. /fetch/api/request/request-disturbed.html
  195. -
  196. /fetch/api/request/request-error.html
  197. -
  198. /fetch/api/request/request-headers.html
  199. -
  200. /fetch/api/request/request-idl.html
  201. -
  202. /fetch/api/request/request-init-001.sub.html
  203. -
  204. /fetch/api/request/request-init-002.html
  205. -
  206. /fetch/api/request/request-init-003.sub.html
  207. -
  208. /fetch/api/request/request-keepalive-quota.html
  209. -
  210. /fetch/api/request/request-structure.html
  211. -
  212. /fetch/api/response/multi-globals/url-parsing.html
  213. -
  214. /fetch/api/response/response-cancel-stream.html
  215. -
  216. /fetch/api/response/response-clone.html
  217. -
  218. /fetch/api/response/response-consume-empty.html
  219. -
  220. /fetch/api/response/response-consume-stream.html
  221. -
  222. /fetch/api/response/response-consume.html
  223. -
  224. /fetch/api/response/response-error.html
  225. -
  226. /fetch/api/response/response-idl.html
  227. -
  228. /fetch/api/response/response-init-001.html
  229. -
  230. /fetch/api/response/response-init-002.html
  231. -
  232. /fetch/api/response/response-static-error.html
  233. -
  234. /fetch/api/response/response-static-redirect.html
  235. -
  236. /fetch/api/response/response-stream-disturbed-1.html
  237. -
  238. /fetch/api/response/response-stream-disturbed-2.html
  239. -
  240. /fetch/api/response/response-stream-disturbed-3.html
  241. -
  242. /fetch/api/response/response-stream-disturbed-4.html
  243. -
  244. /fetch/api/response/response-stream-disturbed-5.html
  245. -
  246. /fetch/nosniff/image.html
  247. -
  248. /fetch/nosniff/importscripts.html
  249. -
  250. /fetch/nosniff/parsing-nosniff.html
  251. -
  252. /fetch/nosniff/script.html
  253. -
  254. /fetch/nosniff/stylesheet.html
  255. -
  256. /fetch/nosniff/worker.html
  257. +
  258. /fetch/api/basic/request-referrer-redirected-worker.html
  259. +
  260. /fetch/api/basic/request-referrer-worker.html
  261. +
  262. /fetch/api/basic/request-referrer.html
  263. +
  264. /fetch/api/basic/request-upload-worker.html
  265. +
  266. /fetch/api/basic/request-upload.html
  267. +
  268. /fetch/api/basic/response-url-worker.html
  269. +
  270. /fetch/api/basic/response-url.html
  271. +
  272. /fetch/api/basic/scheme-about-worker.html
  273. +
  274. /fetch/api/basic/scheme-about.html
  275. +
  276. /fetch/api/basic/scheme-blob-worker.html
  277. +
  278. /fetch/api/basic/scheme-blob.html
  279. +
  280. /fetch/api/basic/scheme-data-worker.html
  281. +
  282. /fetch/api/basic/scheme-data.html
  283. +
  284. /fetch/api/basic/scheme-others-worker.html
  285. +
  286. /fetch/api/basic/scheme-others.html
  287. +
  288. /fetch/api/basic/stream-response-worker.html
  289. +
  290. /fetch/api/basic/stream-response.html
  291. +
  292. /fetch/api/basic/text-utf8.html
  293. +
  294. /fetch/api/cors/cors-basic-worker.html
  295. +
  296. /fetch/api/cors/cors-basic.html
  297. +
  298. /fetch/api/cors/cors-cookies-worker.html
  299. +
  300. /fetch/api/cors/cors-cookies.html
  301. +
  302. /fetch/api/cors/cors-expose-star-worker.html
  303. +
  304. /fetch/api/cors/cors-expose-star.html
  305. +
  306. /fetch/api/cors/cors-filtering-worker.html
  307. +
  308. /fetch/api/cors/cors-filtering.html
  309. +
  310. /fetch/api/cors/cors-multiple-origins-worker.html
  311. +
  312. /fetch/api/cors/cors-multiple-origins.html
  313. +
  314. /fetch/api/cors/cors-no-preflight-worker.html
  315. +
  316. /fetch/api/cors/cors-no-preflight.html
  317. +
  318. /fetch/api/cors/cors-origin-worker.html
  319. +
  320. /fetch/api/cors/cors-origin.html
  321. +
  322. /fetch/api/cors/cors-preflight-redirect-worker.html
  323. +
  324. /fetch/api/cors/cors-preflight-redirect.html
  325. +
  326. /fetch/api/cors/cors-preflight-referrer-worker.html
  327. +
  328. /fetch/api/cors/cors-preflight-referrer.html
  329. +
  330. /fetch/api/cors/cors-preflight-star-worker.html
  331. +
  332. /fetch/api/cors/cors-preflight-star.html
  333. +
  334. /fetch/api/cors/cors-preflight-status-worker.html
  335. +
  336. /fetch/api/cors/cors-preflight-status.html
  337. +
  338. /fetch/api/cors/cors-preflight-worker.html
  339. +
  340. /fetch/api/cors/cors-preflight.html
  341. +
  342. /fetch/api/cors/cors-redirect-credentials-worker.html
  343. +
  344. /fetch/api/cors/cors-redirect-credentials.html
  345. +
  346. /fetch/api/cors/cors-redirect-preflight-worker.html
  347. +
  348. /fetch/api/cors/cors-redirect-preflight.html
  349. +
  350. /fetch/api/cors/cors-redirect-worker.html
  351. +
  352. /fetch/api/cors/cors-redirect.html
  353. +
  354. /fetch/api/credentials/authentication-basic-worker.html
  355. +
  356. /fetch/api/credentials/authentication-basic.html
  357. +
  358. /fetch/api/credentials/cookies-worker.html
  359. +
  360. /fetch/api/credentials/cookies.html
  361. +
  362. /fetch/api/headers/header-values-normalize.html
  363. +
  364. /fetch/api/headers/header-values.html
  365. +
  366. /fetch/api/headers/headers-basic.html
  367. +
  368. /fetch/api/headers/headers-casing.html
  369. +
  370. /fetch/api/headers/headers-combine.html
  371. +
  372. /fetch/api/headers/headers-errors.html
  373. +
  374. /fetch/api/headers/headers-idl.html
  375. +
  376. /fetch/api/headers/headers-normalize.html
  377. +
  378. /fetch/api/headers/headers-record.html
  379. +
  380. /fetch/api/headers/headers-structure.html
  381. +
  382. /fetch/api/policies/csp-blocked-worker.html
  383. +
  384. /fetch/api/policies/csp-blocked.html
  385. +
  386. /fetch/api/policies/referrer-no-referrer-service-worker.https.html
  387. +
  388. /fetch/api/policies/referrer-no-referrer-worker.html
  389. +
  390. /fetch/api/policies/referrer-no-referrer.html
  391. +
  392. /fetch/api/policies/referrer-origin-service-worker.https.html
  393. +
  394. /fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https.html
  395. +
  396. /fetch/api/policies/referrer-origin-when-cross-origin-worker.html
  397. +
  398. /fetch/api/policies/referrer-origin-when-cross-origin.html
  399. +
  400. /fetch/api/policies/referrer-origin-worker.html
  401. +
  402. /fetch/api/policies/referrer-origin.html
  403. +
  404. /fetch/api/policies/referrer-unsafe-url-service-worker.https.html
  405. +
  406. /fetch/api/policies/referrer-unsafe-url-worker.html
  407. +
  408. /fetch/api/policies/referrer-unsafe-url.html
  409. +
  410. /fetch/api/redirect/redirect-count-worker.html
  411. +
  412. /fetch/api/redirect/redirect-count.html
  413. +
  414. /fetch/api/redirect/redirect-location-worker.html
  415. +
  416. /fetch/api/redirect/redirect-location.html
  417. +
  418. /fetch/api/redirect/redirect-method-worker.html
  419. +
  420. /fetch/api/redirect/redirect-method.html
  421. +
  422. /fetch/api/redirect/redirect-mode-worker.html
  423. +
  424. /fetch/api/redirect/redirect-mode.html
  425. +
  426. /fetch/api/redirect/redirect-origin-worker.html
  427. +
  428. /fetch/api/redirect/redirect-origin.html
  429. +
  430. /fetch/api/redirect/redirect-referrer-worker.html
  431. +
  432. /fetch/api/redirect/redirect-referrer.html
  433. +
  434. /fetch/api/redirect/redirect-schemes.html
  435. +
  436. /fetch/api/redirect/redirect-to-dataurl-worker.html
  437. +
  438. /fetch/api/redirect/redirect-to-dataurl.html
  439. +
  440. /fetch/api/request/multi-globals/url-parsing.html
  441. +
  442. /fetch/api/request/request-bad-port.html
  443. +
  444. /fetch/api/request/request-cache-default-conditional.html
  445. +
  446. /fetch/api/request/request-cache-default.html
  447. +
  448. /fetch/api/request/request-cache-force-cache.html
  449. +
  450. /fetch/api/request/request-cache-no-cache.html
  451. +
  452. /fetch/api/request/request-cache-no-store.html
  453. +
  454. /fetch/api/request/request-cache-only-if-cached.html
  455. +
  456. /fetch/api/request/request-cache-reload.html
  457. +
  458. /fetch/api/request/request-clone.sub.html
  459. +
  460. /fetch/api/request/request-consume-empty.html
  461. +
  462. /fetch/api/request/request-consume.html
  463. +
  464. /fetch/api/request/request-disturbed.html
  465. +
  466. /fetch/api/request/request-error.html
  467. +
  468. /fetch/api/request/request-headers.html
  469. +
  470. /fetch/api/request/request-idl.html
  471. +
  472. /fetch/api/request/request-init-001.sub.html
  473. +
  474. /fetch/api/request/request-init-002.html
  475. +
  476. /fetch/api/request/request-init-003.sub.html
  477. +
  478. /fetch/api/request/request-keepalive-quota.html
  479. +
  480. /fetch/api/request/request-structure.html
  481. +
  482. /fetch/api/response/multi-globals/url-parsing.html
  483. +
  484. /fetch/api/response/response-cancel-stream.html
  485. +
  486. /fetch/api/response/response-clone.html
  487. +
  488. /fetch/api/response/response-consume-empty.html
  489. +
  490. /fetch/api/response/response-consume-stream.html
  491. +
  492. /fetch/api/response/response-consume.html
  493. +
  494. /fetch/api/response/response-error.html
  495. +
  496. /fetch/api/response/response-idl.html
  497. +
  498. /fetch/api/response/response-init-001.html
  499. +
  500. /fetch/api/response/response-init-002.html
  501. +
  502. /fetch/api/response/response-static-error.html
  503. +
  504. /fetch/api/response/response-static-redirect.html
  505. +
  506. /fetch/api/response/response-stream-disturbed-1.html
  507. +
  508. /fetch/api/response/response-stream-disturbed-2.html
  509. +
  510. /fetch/api/response/response-stream-disturbed-3.html
  511. +
  512. /fetch/api/response/response-stream-disturbed-4.html
  513. +
  514. /fetch/api/response/response-stream-disturbed-5.html
  515. +
  516. /fetch/api/response/response-trailer.html
  517. +
  518. /fetch/http-cache/304-update.html
  519. +
  520. /fetch/http-cache/cc-request.html
  521. +
  522. /fetch/http-cache/freshness.html
  523. +
  524. /fetch/http-cache/heuristic.html
  525. +
  526. /fetch/http-cache/invalidate.html
  527. +
  528. /fetch/http-cache/partial.html
  529. +
  530. /fetch/http-cache/status.html
  531. +
  532. /fetch/http-cache/vary.html
  533. +
  534. /fetch/nosniff/image.html
  535. +
  536. /fetch/nosniff/importscripts.html
  537. +
  538. /fetch/nosniff/parsing-nosniff.html
  539. +
  540. /fetch/nosniff/script.html
  541. +
  542. /fetch/nosniff/stylesheet.html
  543. +
  544. /fetch/nosniff/worker.html
@@ -221,10 +240,12 @@

Test Files

+ + @@ -349,10 +370,16 @@

Test Files

- - - - + + + + + + + + + + @@ -370,7 +397,7 @@

Test Files

- + @@ -388,31 +415,31 @@

Test Files

- + - + - + - + - + @@ -421,7 +448,7 @@

Test Files

- + @@ -430,25 +457,25 @@

Test Files

- + - - + + - + - - + + - + @@ -465,7 +492,7 @@

Test Files

- + @@ -482,11 +509,11 @@

Test Files

- + - + - + @@ -517,7 +544,7 @@

Test Files

- + @@ -533,7 +560,7 @@

Test Files

- + @@ -549,21 +576,27 @@

Test Files

- + - + - + + + + + + + @@ -582,7 +615,7 @@

Test Files

- + @@ -601,21 +634,21 @@

Test Files

- + - + - + @@ -631,7 +664,7 @@

Test Files

- + @@ -647,7 +680,7 @@

Test Files

- + @@ -665,7 +698,7 @@

Test Files

- + @@ -683,7 +716,7 @@

Test Files

- + @@ -694,7 +727,7 @@

Test Files

- + @@ -705,7 +738,7 @@

Test Files

- + @@ -716,7 +749,7 @@

Test Files

- + @@ -727,7 +760,25 @@

Test Files

- + + + + + + + + + + + + + + + + + + + @@ -755,7 +806,7 @@

Test Files

- + @@ -783,7 +834,7 @@

Test Files

- + @@ -798,7 +849,8 @@

Test Files

- + + @@ -813,129 +865,140 @@

Test Files

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -966,7 +1029,7 @@

Test Files

- + @@ -997,7 +1060,7 @@

Test Files

- + @@ -1018,7 +1081,7 @@

Test Files

- + @@ -1039,31 +1102,31 @@

Test Files

- + - + - - - + + + - + - - - - - + + + + + - + - - - + + + @@ -1126,7 +1189,7 @@

Test Files

- + @@ -1135,7 +1198,7 @@

Test Files

- + @@ -1155,17 +1218,17 @@

Test Files

- + - - + + - - + + @@ -1184,7 +1247,7 @@

Test Files

- + @@ -1218,11 +1281,11 @@

Test Files

- + - + @@ -1234,7 +1297,7 @@

Test Files

- + @@ -1243,31 +1306,39 @@

Test Files

- - - + + + - + + + - + - - - - - + + + + + + + + + - + - + + + - + - + - + @@ -1276,7 +1347,7 @@

Test Files

- + @@ -1287,7 +1358,7 @@

Test Files

- + @@ -1318,7 +1389,7 @@

Test Files

- + @@ -1349,7 +1420,7 @@

Test Files

- + @@ -1363,7 +1434,7 @@

Test Files

- + @@ -1377,7 +1448,7 @@

Test Files

- + @@ -1393,7 +1464,7 @@

Test Files

- + @@ -1409,7 +1480,7 @@

Test Files

- + @@ -1430,7 +1501,7 @@

Test Files

- + @@ -1451,7 +1522,7 @@

Test Files

- + @@ -1484,7 +1555,7 @@

Test Files

- + @@ -1517,28 +1588,28 @@

Test Files

- + - + - + - + - + @@ -1603,119 +1674,119 @@

Test Files

- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - - + + - + - + - + - + - + - + - + - - + + - + - - + + - + - + - + - - + + - + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + @@ -1728,7 +1799,7 @@

Test Files

- + @@ -1767,7 +1838,7 @@

Test Files

- + @@ -1776,7 +1847,7 @@

Test Files

- + @@ -1798,7 +1869,7 @@

Test Files

- + @@ -1855,7 +1926,7 @@

Test Files

- + @@ -1903,7 +1974,7 @@

Test Files

- + @@ -1939,7 +2010,7 @@

Test Files

- + @@ -1947,19 +2018,19 @@

Test Files

- + - + - + @@ -1979,16 +2050,16 @@

Test Files

- + - + - + @@ -2007,7 +2078,7 @@

Test Files

- + @@ -2020,7 +2091,7 @@

Test Files

- + @@ -2030,7 +2101,7 @@

Test Files

- + @@ -2070,7 +2141,7 @@

Test Files

- + @@ -2082,7 +2153,7 @@

Test Files

- + @@ -2096,6 +2167,7 @@

Test Files

+ @@ -2115,15 +2187,16 @@

Test Files

- - - - - - - - - + + + + + + + + + + @@ -2132,7 +2205,7 @@

Test Files

- + @@ -2140,9 +2213,9 @@

Test Files

- + - + @@ -2154,32 +2227,145 @@

Test Files

- + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2187,16 +2373,16 @@

Test Files

- + - + - + @@ -2204,14 +2390,14 @@

Test Files

- + - + diff --git a/fetch/complete-fails.html b/fetch/complete-fails.html index 89ca7e4..ac38a23 100644 --- a/fetch/complete-fails.html +++ b/fetch/complete-fails.html @@ -11,89 +11,109 @@

Complete Failures

-

Completely failed files: 47; Completely failed subtests: 133; Failure level: 133/1914 (6.95%)

+

Completely failed files: 68; Completely failed subtests: 155; Failure level: 155/2062 (7.52%)

Test Files

-
  1. /fetch/api/basic/mode-no-cors-worker.html (1/3, 33.33%, 0.05% of total)
  2. -
  3. /fetch/api/basic/mode-no-cors.html (1/3, 33.33%, 0.05% of total)
  4. -
  5. /fetch/api/basic/request-upload-worker.html (6/17, 35.29%, 0.31% of total)
  6. -
  7. /fetch/api/basic/request-upload.html (6/17, 35.29%, 0.31% of total)
  8. -
  9. /fetch/api/cors/cors-basic-worker.html (4/15, 26.67%, 0.21% of total)
  10. -
  11. /fetch/api/cors/cors-basic.html (4/15, 26.67%, 0.21% of total)
  12. -
  13. /fetch/api/cors/cors-multiple-origins-worker.html (5/6, 83.33%, 0.26% of total)
  14. -
  15. /fetch/api/cors/cors-multiple-origins.html (5/6, 83.33%, 0.26% of total)
  16. -
  17. /fetch/api/cors/cors-no-preflight-worker.html (2/15, 13.33%, 0.10% of total)
  18. -
  19. /fetch/api/cors/cors-no-preflight.html (2/15, 13.33%, 0.10% of total)
  20. -
  21. /fetch/api/cors/cors-origin-worker.html (2/17, 11.76%, 0.10% of total)
  22. -
  23. /fetch/api/cors/cors-origin.html (2/17, 11.76%, 0.10% of total)
  24. -
  25. /fetch/api/cors/cors-preflight-redirect-worker.html (10/10, 100.00%, 0.52% of total)
  26. -
  27. /fetch/api/cors/cors-preflight-redirect.html (10/10, 100.00%, 0.52% of total)
  28. -
  29. /fetch/api/cors/cors-preflight-status-worker.html (27/27, 100.00%, 1.41% of total)
  30. -
  31. /fetch/api/cors/cors-preflight-status.html (27/27, 100.00%, 1.41% of total)
  32. -
  33. /fetch/api/headers/headers-basic.html (1/19, 5.26%, 0.05% of total)
  34. -
  35. /fetch/api/request/request-consume-empty.html (2/12, 16.67%, 0.10% of total)
  36. -
  37. /fetch/api/request/request-disturbed.html (3/8, 37.50%, 0.16% of total)
  38. -
  39. /fetch/api/request/request-idl.html (2/47, 4.26%, 0.10% of total)
  40. -
  41. /fetch/api/request/request-init-003.sub.html (1/4, 25.00%, 0.05% of total)
  42. -
  43. /fetch/api/request/request-keepalive-quota.html (2/6, 33.33%, 0.10% of total)
  44. -
  45. /fetch/api/response/response-consume-empty.html (2/12, 16.67%, 0.10% of total)
  46. -
  47. /fetch/api/response/response-consume-stream.html (2/9, 22.22%, 0.10% of total)
  48. -
  49. /fetch/api/response/response-consume.html (4/39, 10.26%, 0.21% of total)
  50. +
    1. /fetch/api/basic/mode-no-cors-worker.html (1/4, 25.00%, 0.05% of total)
    2. +
    3. /fetch/api/basic/mode-no-cors.html (1/4, 25.00%, 0.05% of total)
    4. +
    5. /fetch/api/basic/request-upload-worker.html (6/17, 35.29%, 0.29% of total)
    6. +
    7. /fetch/api/basic/request-upload.html (6/17, 35.29%, 0.29% of total)
    8. +
    9. /fetch/api/cors/cors-basic-worker.html (4/15, 26.67%, 0.19% of total)
    10. +
    11. /fetch/api/cors/cors-basic.html (4/15, 26.67%, 0.19% of total)
    12. +
    13. /fetch/api/cors/cors-expose-star-worker.html (1/2, 50.00%, 0.05% of total)
    14. +
    15. /fetch/api/cors/cors-expose-star.html (1/2, 50.00%, 0.05% of total)
    16. +
    17. /fetch/api/cors/cors-multiple-origins-worker.html (5/6, 83.33%, 0.24% of total)
    18. +
    19. /fetch/api/cors/cors-multiple-origins.html (5/6, 83.33%, 0.24% of total)
    20. +
    21. /fetch/api/cors/cors-no-preflight-worker.html (2/15, 13.33%, 0.10% of total)
    22. +
    23. /fetch/api/cors/cors-no-preflight.html (2/15, 13.33%, 0.10% of total)
    24. +
    25. /fetch/api/cors/cors-origin-worker.html (2/17, 11.76%, 0.10% of total)
    26. +
    27. /fetch/api/cors/cors-origin.html (2/17, 11.76%, 0.10% of total)
    28. +
    29. /fetch/api/cors/cors-preflight-redirect-worker.html (10/10, 100.00%, 0.48% of total)
    30. +
    31. /fetch/api/cors/cors-preflight-redirect.html (10/10, 100.00%, 0.48% of total)
    32. +
    33. /fetch/api/cors/cors-preflight-star-worker.html (2/8, 25.00%, 0.10% of total)
    34. +
    35. /fetch/api/cors/cors-preflight-star.html (2/8, 25.00%, 0.10% of total)
    36. +
    37. /fetch/api/cors/cors-preflight-status-worker.html (27/27, 100.00%, 1.31% of total)
    38. +
    39. /fetch/api/cors/cors-preflight-status.html (27/27, 100.00%, 1.31% of total)
    40. +
    41. /fetch/api/headers/headers-basic.html (1/19, 5.26%, 0.05% of total)
    42. +
    43. /fetch/api/policies/referrer-no-referrer-service-worker.https.html (1/1, 100.00%, 0.05% of total)
    44. +
    45. /fetch/api/policies/referrer-origin-service-worker.https.html (1/1, 100.00%, 0.05% of total)
    46. +
    47. /fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https.html (1/1, 100.00%, 0.05% of total)
    48. +
    49. /fetch/api/policies/referrer-origin-when-cross-origin-worker.html (1/1, 100.00%, 0.05% of total)
    50. +
    51. /fetch/api/policies/referrer-origin-when-cross-origin.html (1/1, 100.00%, 0.05% of total)
    52. +
    53. /fetch/api/policies/referrer-unsafe-url-service-worker.https.html (1/1, 100.00%, 0.05% of total)
    54. +
    55. /fetch/api/request/request-consume-empty.html (2/12, 16.67%, 0.10% of total)
    56. +
    57. /fetch/api/request/request-disturbed.html (3/8, 37.50%, 0.15% of total)
    58. +
    59. /fetch/api/request/request-idl.html (2/47, 4.26%, 0.10% of total)
    60. +
    61. /fetch/api/request/request-init-003.sub.html (1/4, 25.00%, 0.05% of total)
    62. +
    63. /fetch/api/request/request-keepalive-quota.html (2/6, 33.33%, 0.10% of total)
    64. +
    65. /fetch/api/response/response-consume-empty.html (2/12, 16.67%, 0.10% of total)
    66. +
    67. /fetch/api/response/response-consume-stream.html (2/9, 22.22%, 0.10% of total)
    68. +
    69. /fetch/api/response/response-consume.html (4/39, 10.26%, 0.19% of total)
    70. +
    71. /fetch/api/response/response-idl.html (2/42, 4.76%, 0.10% of total)
    72. +
    73. /fetch/api/response/response-trailer.html (1/1, 100.00%, 0.05% of total)
    74. +
    75. /fetch/http-cache/cc-request.html (1/12, 8.33%, 0.05% of total)
    76. +
    77. /fetch/http-cache/heuristic.html (1/16, 6.25%, 0.05% of total)
    78. +
    79. /fetch/http-cache/partial.html (4/4, 100.00%, 0.19% of total)
    80. +
    81. /fetch/http-cache/vary.html (1/11, 9.09%, 0.05% of total)
TestCh59FF55Sa10
Fetch ../resources/top.txt with no-cors modePASSPASSPASS
Fetch http://web-platform.test:8000/fetch/api/resources/top.txt with no-cors modePASSPASSPASS
Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with no-cors modeFAILFAILFAIL
Fetch http://web-platform.test:54706/fetch/api/resources/top.txt with no-cors modePASSPASSPASS
/fetch/api/basic/mode-no-cors.htmlOKOKOK
Fetch ../resources/top.txt with no-cors modePASSPASSPASS
Fetch http://web-platform.test:8000/fetch/api/resources/top.txt with no-cors modePASSPASSPASS
Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with no-cors modeFAILFAILFAIL
Fetch http://web-platform.test:54706/fetch/api/resources/top.txt with no-cors modePASSPASSPASS
/fetch/api/basic/mode-same-origin-worker.htmlOKOKOK
Fetch ../resources/top.txt with same-origin modePASSPASSPASS
Fetch http://web-platform.test:8000/fetch/api/resources/top.txt with same-origin modePASSPASSPASS
Fetch with PUT and mode "same-origin" needs an Origin headerPASSPASSPASS
Fetch with TacO and mode "same-origin" needs an Origin headerPASSPASSPASS
Fetch with TacO and mode "cors" needs an Origin headerPASSPASSPASS
/fetch/api/basic/request-referrer.htmlOKOKOK
Fetch: fetch() respects Request referrer valuePASSPASSPASS
Fetch: fetch() respects Request referrer value 1PASSPASSPASS
/fetch/api/basic/request-upload-worker.htmlOKOKOK
/fetch/api/basic/request-referrer-redirected-worker.htmlOKOKOK
about:client referrerPASSPASSPASS
url referrerPASSPASSPASS
/fetch/api/basic/request-referrer-worker.htmlOKOKOK
about:client referrerPASSPASSPASS
url referrerPASSPASSPASS
/fetch/api/basic/request-referrer.htmlOKOKOK
about:client referrerPASSPASSPASS
url referrerPASSPASSPASS
/fetch/api/basic/request-upload-worker.htmlOKOKOK
Fetch with PUT with bodyPASSPASSPASS
Fetch with POST with text bodyPASSPASSPASS
Fetch with POST with URLSearchParams bodyPASSPASSPASS
Fetch with POST with ReadableStream containing numberFAILFAILFAIL
Fetch with POST with ReadableStream containing ArrayBufferFAILFAILFAIL
Fetch with POST with ReadableStream containing BlobFAILFAILFAIL
/fetch/api/basic/request-upload.htmlOKOKOK
/fetch/api/basic/request-upload.htmlOKOKOK
Fetch with PUT with bodyPASSPASSPASS
Fetch with POST with text bodyPASSPASSPASS
Fetch with POST with URLSearchParams bodyPASSPASSPASS
Fetch with POST with ReadableStream containing numberFAILFAILFAIL
Fetch with POST with ReadableStream containing ArrayBufferFAILFAILFAIL
Fetch with POST with ReadableStream containing BlobFAILFAILFAIL
/fetch/api/basic/response-url-worker.htmlOKOKOK
/fetch/api/basic/response-url-worker.htmlOKOKOK
Testing response url getter with http://web-platform.test:8000/adaPASSPASSPASS
Testing response url getter with http://web-platform.test:8000/#PASSPASSPASS
Testing response url getter with http://web-platform.test:8000/#adaPASSPASSPASS
Testing response url getter with http://web-platform.test:8000#adaPASSPASSPASS
/fetch/api/basic/response-url.htmlOKOKOK
/fetch/api/basic/response-url.htmlOKOKOK
Testing response url getter with http://web-platform.test:8000/adaPASSPASSPASS
Testing response url getter with http://web-platform.test:8000/#PASSPASSPASS
Testing response url getter with http://web-platform.test:8000/#adaPASSPASSPASS
Testing response url getter with http://web-platform.test:8000#adaPASSPASSPASS
/fetch/api/basic/scheme-about-worker.htmlOKOKOK
/fetch/api/basic/scheme-about-worker.htmlOKOKOK
Fetching about:blank (GET) is OKFAILPASSFAIL
Fetching about:blank (PUT) is OKFAILPASSFAIL
Fetching about:blank (POST) is OKFAILPASSFAIL
Fetching about:invalid.com is KOPASSPASSPASS
Fetching about:config is KOPASSPASSPASS
Fetching about:unicorn is KOPASSPASSPASS
/fetch/api/basic/scheme-about.htmlOKOKOK
/fetch/api/basic/scheme-about.htmlOKOKOK
Fetching about:blank (GET) is OKFAILPASSFAIL
Fetching about:blank (PUT) is OKFAILPASSFAIL
Fetching about:blank (POST) is OKFAILPASSFAIL
Fetching about:invalid.com is KOPASSPASSPASS
Fetching about:config is KOPASSPASSPASS
Fetching about:unicorn is KOPASSPASSPASS
/fetch/api/basic/scheme-blob-worker.htmlOKOKOK
/fetch/api/basic/scheme-blob-worker.htmlOKOKOK
Fetching [GET] URL.createObjectURL(blob) is OKPASSPASSPASS
Fetching [GET] blob:http://www.web-platform.test:8000/ is KOPASSPASSPASS
Fetching [POST] URL.createObjectURL(blob) is KOPASSPASSPASS
Fetching [PUT] URL.createObjectURL(blob) is KOPASSPASSPASS
Fetching [DELETE] URL.createObjectURL(blob) is KOPASSPASSPASS
Fetching [INVALID] URL.createObjectURL(blob) is KOPASSPASSPASS
/fetch/api/basic/scheme-blob.htmlOKOKOK
/fetch/api/basic/scheme-blob.htmlOKOKOK
Fetching [GET] URL.createObjectURL(blob) is OKPASSPASSPASS
Fetching [GET] blob:http://www.web-platform.test:8000/ is KOPASSPASSPASS
Fetching [POST] URL.createObjectURL(blob) is KOPASSPASSPASS
Fetching [PUT] URL.createObjectURL(blob) is KOPASSPASSPASS
Fetching [DELETE] URL.createObjectURL(blob) is KOPASSPASSPASS
Fetching [INVALID] URL.createObjectURL(blob) is KOPASSPASSPASS
/fetch/api/basic/scheme-data-worker.htmlOKOKOK
/fetch/api/basic/scheme-data-worker.htmlOKOKOK
Fetching data:,response%27s%20body is OKPASSPASSPASS
Fetching data:,response%27s%20body is OK (same-origin)PASSPASSPASS
Fetching data:,response%27s%20body is OK (cors)PASSPASSPASS
Fetching data:text/plain;base64,cmVzcG9uc2UncyBib[...] is OKFAILPASSPASS
Fetching data:image/png;base64,cmVzcG9uc2UncyBib2[...] is OKFAILPASSPASS
Fetching data:text/plain;base64,cmVzcG9uc2UncyBib[...] is OKPASSPASSPASS
Fetching data:image/png;base64,cmVzcG9uc2UncyBib2[...] is OKPASSPASSPASS
Fetching [POST] data:,response%27s%20body is OKPASSPASSPASS
Fetching [HEAD] data:,response%27s%20body is OKPASSPASSPASS
Fetching [GET] data:notAdataUrl.com is KOPASSPASSFAIL
/fetch/api/basic/scheme-data.htmlOKOKOK
/fetch/api/basic/scheme-data.htmlOKOKOK
Fetching data:,response%27s%20body is OKPASSPASSPASS
Fetching data:,response%27s%20body is OK (same-origin)PASSPASSPASS
Fetching data:,response%27s%20body is OK (cors)PASSPASSPASS
Fetching data:text/plain;base64,cmVzcG9uc2UncyBib[...] is OKFAILPASSPASS
Fetching data:image/png;base64,cmVzcG9uc2UncyBib2[...] is OKFAILPASSPASS
Fetching data:text/plain;base64,cmVzcG9uc2UncyBib[...] is OKPASSPASSPASS
Fetching data:image/png;base64,cmVzcG9uc2UncyBib2[...] is OKPASSPASSPASS
Fetching [POST] data:,response%27s%20body is OKPASSPASSPASS
Fetching [HEAD] data:,response%27s%20body is OKPASSPASSPASS
Fetching [GET] data:notAdataUrl.com is KOPASSPASSFAIL
/fetch/api/basic/scheme-others-worker.htmlOKOKOK
/fetch/api/basic/scheme-others-worker.htmlOKOKOK
Fetching aaa://web-platform.test:8000/ is KOPASSPASSPASS
Fetching cap://web-platform.test:8000/ is KOPASSPASSPASS
Fetching cid://web-platform.test:8000/ is KOPASSPASSPASS
Fetching pop://web-platform.test:8000/ is KOPASSPASSPASS
Fetching rtsp://web-platform.test:8000/ is KOPASSPASSPASS
Fetching snmp://web-platform.test:8000/ is KOPASSPASSPASS
/fetch/api/basic/scheme-others.htmlOKOKOK
/fetch/api/basic/scheme-others.htmlOKOKOK
Fetching aaa://web-platform.test:8000/ is KOPASSPASSPASS
Fetching cap://web-platform.test:8000/ is KOPASSPASSPASS
Fetching cid://web-platform.test:8000/ is KOPASSPASSPASS
Fetching pop://web-platform.test:8000/ is KOPASSPASSPASS
Fetching rtsp://web-platform.test:8000/ is KOPASSPASSPASS
Fetching snmp://web-platform.test:8000/ is KOPASSPASSPASS
/fetch/api/basic/stream-response-worker.htmlOKOKOK
/fetch/api/basic/stream-response-worker.htmlOKOKOK
Stream response's bodyPASSFAILPASS
/fetch/api/basic/stream-response.htmlOKOKOK
/fetch/api/basic/stream-response.htmlOKOKOK
Stream response's bodyPASSFAILPASS
/fetch/api/basic/text-utf8.htmlOKOKOK
/fetch/api/basic/text-utf8.htmlOKOKOK
UTF-8 with BOM with Request.text()PASSPASSPASS
UTF-8 with BOM with Response.text()PASSPASSPASS
UTF-8 with BOM with fetched data (UTF-8 charset)PASSPASSPASS
UTF-16 without BOM decoded as UTF-8 with fetched data (UTF-16 charset)PASSPASSPASS
UTF-16 without BOM decoded as UTF-8 (Response object)PASSPASSPASS
UTF-16 without BOM decoded as UTF-8 (Request object)PASSPASSPASS
/fetch/api/cors/cors-basic-worker.htmlOKOKOK
/fetch/api/cors/cors-basic-worker.htmlOKOKOK
Same domain different port [no-cors mode]PASSPASSPASS
Same domain different port [server forbid CORS]PASSPASSPASS
Same domain different port [cors mode]PASSPASSPASS
Cross domain different protocol [no-cors mode]FAILFAILFAIL
Cross domain different protocol [server forbid CORS]PASSPASSPASS
Cross domain different protocol [cors mode]FAILFAILFAIL
/fetch/api/cors/cors-basic.htmlOKOKOK
/fetch/api/cors/cors-basic.htmlOKOKOK
Same domain different port [no-cors mode]PASSPASSPASS
Same domain different port [server forbid CORS]PASSPASSPASS
Same domain different port [cors mode]PASSPASSPASS
Cross domain different protocol [no-cors mode]FAILFAILFAIL
Cross domain different protocol [server forbid CORS]PASSPASSPASS
Cross domain different protocol [cors mode]FAILFAILFAIL
/fetch/api/cors/cors-cookies-worker.htmlOKOKOK
/fetch/api/cors/cors-cookies-worker.htmlOKOKOK
Omit mode: no cookie sentPASSPASSPASS
Include mode: 1 cookiePASSPASSPASS
Include mode: local cookies are not sent with remote requestPASSPASSPASS
Include mode: remote cookies are not sent with local requestPASSPASSPASS
Same-origin mode: cookies are discarded in cors requestPASSPASSPASS
Include mode: remote cookies are not sent with other remote requestPASSPASSPASS
/fetch/api/cors/cors-cookies.htmlOKOKOK
/fetch/api/cors/cors-cookies.htmlOKOKOK
Omit mode: no cookie sentPASSPASSPASS
Include mode: 1 cookiePASSPASSPASS
Include mode: local cookies are not sent with remote requestPASSPASSPASS
Include mode: remote cookies are not sent with local requestPASSPASSPASS
Same-origin mode: cookies are discarded in cors requestPASSPASSPASS
Include mode: remote cookies are not sent with other remote requestPASSPASSPASS
/fetch/api/cors/cors-filtering-worker.htmlOKOKOK
/fetch/api/cors/cors-expose-star-worker.htmlOKOKOK
Basic Access-Control-Expose-Headers: * supportFAILFAILFAIL
Cannot use * for credentialed fetchesPASSPASSPASS
/fetch/api/cors/cors-expose-star.htmlOKOKOK
Basic Access-Control-Expose-Headers: * supportFAILFAILFAIL
Cannot use * for credentialed fetchesPASSPASSPASS
/fetch/api/cors/cors-filtering-worker.htmlOKOKOK
CORS filter on Cache-Control headerPASSPASSPASS
CORS filter on Content-Language headerPASSPASSPASS
CORS filter on Content-Type headerPASSPASSPASS
CORS filter on Content-Length header, header is exposedPASSPASSPASS
CORS filter on Set-Cookie header, header is exposedPASSPASSPASS
CORS filter on Set-Cookie2 header, header is exposedPASSPASSPASS
/fetch/api/cors/cors-filtering.htmlOKOKOK
/fetch/api/cors/cors-filtering.htmlOKOKOK
CORS filter on Cache-Control headerPASSPASSPASS
CORS filter on Content-Language headerPASSPASSPASS
CORS filter on Content-Type headerPASSPASSPASS
CORS filter on Content-Length header, header is exposedPASSPASSPASS
CORS filter on Set-Cookie header, header is exposedPASSPASSPASS
CORS filter on Set-Cookie2 header, header is exposedPASSPASSPASS
/fetch/api/cors/cors-multiple-origins-worker.htmlOKOKOK
/fetch/api/cors/cors-multiple-origins-worker.htmlOKOKOK
3 origins allowed, match the 3rd (http://web-platform.test:8000)FAILFAILFAIL
3 origins allowed, match the 3rd ("*")FAILFAILFAIL
3 origins allowed, match twice (http://web-platform.test:8000)FAILFAILFAIL
3 origins allowed, match twice ("*")FAILFAILFAIL
3 origins allowed, match twice ("*" and http://web-platform.test:8000)FAILFAILFAIL
3 origins allowed, no matchPASSPASSPASS
/fetch/api/cors/cors-multiple-origins.htmlOKOKOK
/fetch/api/cors/cors-multiple-origins.htmlOKOKOK
3 origins allowed, match the 3rd (http://web-platform.test:8000)FAILFAILFAIL
3 origins allowed, match the 3rd ("*")FAILFAILFAIL
3 origins allowed, match twice (http://web-platform.test:8000)FAILFAILFAIL
3 origins allowed, match twice ("*")FAILFAILFAIL
3 origins allowed, match twice ("*" and http://web-platform.test:8000)FAILFAILFAIL
3 origins allowed, no matchPASSPASSPASS
/fetch/api/cors/cors-no-preflight-worker.htmlOKOKOK
/fetch/api/cors/cors-no-preflight-worker.htmlOKOKOK
Cross domain basic usage [GET]PASSPASSPASS
Same domain different port [GET]PASSPASSPASS
Cross domain different port [GET]PASSPASSPASS
Cross domain [GET] [Content-Type: text/plain]PASSPASSPASS
Cross domain [GET] [Content-Type: text/plain;charset=utf-8]PASSPASSPASS
Cross domain [GET] [Content-Type: Text/Plain;charset=utf-8]PASSPASSPASS
/fetch/api/cors/cors-no-preflight.htmlOKOKOK
/fetch/api/cors/cors-no-preflight.htmlOKOKOK
Cross domain basic usage [GET]PASSPASSPASS
Same domain different port [GET]PASSPASSPASS
Cross domain different port [GET]PASSPASSPASS
Cross domain [GET] [Content-Type: text/plain]PASSPASSPASS
Cross domain [GET] [Content-Type: text/plain;charset=utf-8]PASSPASSPASS
Cross domain [GET] [Content-Type: Text/Plain;charset=utf-8]PASSPASSPASS
/fetch/api/cors/cors-origin-worker.htmlOKOKOK
/fetch/api/cors/cors-origin-worker.htmlOKOKOK
Cross domain different subdomain [origin OK]PASSPASSPASS
Cross domain different subdomain [origin KO]PASSPASSPASS
Same domain different port [origin OK]PASSPASSPASS
CORS preflight [PUT] [origin OK]PASSPASSPASS
CORS preflight [PUT] [origin KO]PASSPASSPASS
Allowed origin: "" [origin KO]PASSPASSPASS
/fetch/api/cors/cors-origin.htmlOKOKOK
/fetch/api/cors/cors-origin.htmlOKOKOK
Cross domain different subdomain [origin OK]PASSPASSPASS
Cross domain different subdomain [origin KO]PASSPASSPASS
Same domain different port [origin OK]PASSPASSPASS
CORS preflight [PUT] [origin OK]PASSPASSPASS
CORS preflight [PUT] [origin KO]PASSPASSPASS
Allowed origin: "" [origin KO]PASSPASSPASS
/fetch/api/cors/cors-preflight-redirect-worker.htmlOKOKOK
/fetch/api/cors/cors-preflight-redirect-worker.htmlOKOKOK
Redirection 301 on preflight failedFAILFAILFAIL
Redirection 301 after preflight failedFAILFAILFAIL
Redirection 302 on preflight failedFAILFAILFAIL
Redirection 307 after preflight failedFAILFAILFAIL
Redirection 308 on preflight failedFAILFAILFAIL
Redirection 308 after preflight failedFAILFAILFAIL
/fetch/api/cors/cors-preflight-redirect.htmlOKOKOK
/fetch/api/cors/cors-preflight-redirect.htmlOKOKOK
Redirection 301 on preflight failedFAILFAILFAIL
Redirection 301 after preflight failedFAILFAILFAIL
Redirection 302 on preflight failedFAILFAILFAIL
Redirection 307 after preflight failedFAILFAILFAIL
Redirection 308 on preflight failedFAILFAILFAIL
Redirection 308 after preflight failedFAILFAILFAIL
/fetch/api/cors/cors-preflight-referrer-worker.htmlOKOKOK
/fetch/api/cors/cors-preflight-referrer-worker.htmlOKOKOK
Referrer policy: no-referrer and referrer: defaultFAILPASSPASS
Referrer policy: no-referrer and referrer: 'myreferrer'FAILPASSPASS
Referrer policy: "" and referrer: defaultFAILFAILPASS
Referrer policy: origin-when-cross-origin and referrer: 'myreferrer'FAILFAILPASS
Referrer policy: unsafe-url and referrer: defaultFAILFAILPASS
Referrer policy: unsafe-url and referrer: 'myreferrer'FAILFAILPASS
/fetch/api/cors/cors-preflight-referrer.htmlOKOKOK
/fetch/api/cors/cors-preflight-referrer.htmlOKOKOK
Referrer policy: no-referrer and referrer: defaultFAILPASSPASS
Referrer policy: no-referrer and referrer: 'myreferrer'FAILPASSPASS
Referrer policy: "" and referrer: defaultPASSFAILPASS
Referrer policy: origin-when-cross-origin and referrer: 'myreferrer'FAILFAILPASS
Referrer policy: unsafe-url and referrer: defaultPASSFAILPASS
Referrer policy: unsafe-url and referrer: 'myreferrer'FAILFAILPASS
/fetch/api/cors/cors-preflight-status-worker.htmlOKOKOK
/fetch/api/cors/cors-preflight-star-worker.htmlOKOKOK
CORS that succeeds with credentials: false; method: GET (allowed: get); header: X-Test,1 (allowed: x-test)PASSPASSPASS
CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test)FAILFAILFAIL
CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *)FAILFAILFAIL
CORS that fails with credentials: true; method: OK (allowed: *); header: X-Test,1 (allowed: *)PASSPASSPASS
CORS that fails with credentials: true; method: PUT (allowed: *); header: undefined (allowed: )PASSPASSPASS
CORS that fails with credentials: true; method: PUT (allowed: put); header: undefined (allowed: *)PASSPASSPASS
CORS that fails with credentials: true; method: GET (allowed: get); header: X-Test,1 (allowed: *)PASSPASSPASS
CORS that fails with credentials: true; method: GET (allowed: *); header: X-Test,1 (allowed: *)PASSPASSPASS
/fetch/api/cors/cors-preflight-star.htmlOKOKOK
CORS that succeeds with credentials: false; method: GET (allowed: get); header: X-Test,1 (allowed: x-test)PASSPASSPASS
CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test)FAILFAILFAIL
CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *)FAILFAILFAIL
CORS that fails with credentials: true; method: OK (allowed: *); header: X-Test,1 (allowed: *)PASSPASSPASS
CORS that fails with credentials: true; method: PUT (allowed: *); header: undefined (allowed: )PASSPASSPASS
CORS that fails with credentials: true; method: PUT (allowed: put); header: undefined (allowed: *)PASSPASSPASS
CORS that fails with credentials: true; method: GET (allowed: get); header: X-Test,1 (allowed: *)PASSPASSPASS
CORS that fails with credentials: true; method: GET (allowed: *); header: X-Test,1 (allowed: *)PASSPASSPASS
/fetch/api/cors/cors-preflight-status-worker.htmlOKOKOK
Preflight answered with status 200FAILFAILFAIL
Preflight answered with status 201FAILFAILFAIL
Preflight answered with status 202FAILFAILFAIL
Preflight answered with status 503FAILFAILFAIL
Preflight answered with status 504FAILFAILFAIL
Preflight answered with status 505FAILFAILFAIL
/fetch/api/cors/cors-preflight-status.htmlOKOKOK
/fetch/api/cors/cors-preflight-status.htmlOKOKOK
Preflight answered with status 200FAILFAILFAIL
Preflight answered with status 201FAILFAILFAIL
Preflight answered with status 202FAILFAILFAIL
Preflight answered with status 503FAILFAILFAIL
Preflight answered with status 504FAILFAILFAIL
Preflight answered with status 505FAILFAILFAIL
/fetch/api/cors/cors-preflight-worker.htmlOKOKOK
/fetch/api/cors/cors-preflight-worker.htmlOKOKOK
CORS [DELETE], server allowsPASSPASSPASS
CORS [DELETE], server refusesPASSPASSPASS
CORS [PUT], server allowsPASSPASSPASS
CORS [GET] [several headers], server refusesPASSPASSPASS
CORS [PUT] [several headers], server allowsPASSPASSPASS
CORS [PUT] [several headers], server refusesPASSPASSPASS
/fetch/api/cors/cors-preflight.htmlOKOKOK
CORS [PUT] [only safe headers], server allowsPASSPASSPASS
/fetch/api/cors/cors-preflight.htmlOKOKOK
CORS [DELETE], server allowsPASSPASSPASS
CORS [DELETE], server refusesPASSPASSPASS
CORS [PUT], server allowsPASSPASSPASS
CORS [GET] [several headers], server refusesPASSPASSPASS
CORS [PUT] [several headers], server allowsPASSPASSPASS
CORS [PUT] [several headers], server refusesPASSPASSPASS
/fetch/api/cors/cors-redirect-credentials-worker.htmlOKOKOK
Redirect 301 from same origin to remote with user and passwordPASSPASSPASS
Redirect 301 from same origin to remote with userPASSPASSPASS
Redirect 301 from same origin to remote with passwordPASSPASSPASS
Redirect 301 from remote to same origin with user and passwordPASSPASSPASS
Redirect 301 from remote to same origin with userPASSPASSPASS
Redirect 301 from remote to same origin with passwordPASSPASSPASS
Redirect 301 from remote to same remote with user and passwordPASSPASSPASS
Redirect 301 from remote to same remote with userPASSPASSPASS
Redirect 301 from remote to same remote with passwordPASSPASSPASS
Redirect 301 from remote to another remote with user and passwordPASSPASSPASS
Redirect 301 from remote to another remote with userPASSPASSPASS
Redirect 301 from remote to another remote with passwordPASSPASSPASS
Redirect 302 from same origin to remote with user and passwordPASSPASSPASS
Redirect 302 from same origin to remote with userPASSPASSPASS
Redirect 302 from same origin to remote with passwordPASSPASSPASS
Redirect 302 from remote to same origin with user and passwordPASSPASSPASS
Redirect 302 from remote to same origin with userPASSPASSPASS
Redirect 302 from remote to same origin with passwordPASSPASSPASS
Redirect 302 from remote to same remote with user and passwordPASSPASSPASS
Redirect 302 from remote to same remote with userPASSPASSPASS
Redirect 302 from remote to same remote with passwordPASSPASSPASS
Redirect 302 from remote to another remote with user and passwordPASSPASSPASS
Redirect 302 from remote to another remote with userPASSPASSPASS
Redirect 302 from remote to another remote with passwordPASSPASSPASS
Redirect 303 from same origin to remote with user and passwordPASSPASSPASS
Redirect 303 from same origin to remote with userPASSPASSPASS
Redirect 303 from same origin to remote with passwordPASSPASSPASS
Redirect 303 from remote to same origin with user and passwordPASSPASSPASS
Redirect 303 from remote to same origin with userPASSPASSPASS
Redirect 303 from remote to same origin with passwordPASSPASSPASS
Redirect 303 from remote to same remote with user and passwordPASSPASSPASS
Redirect 303 from remote to same remote with userPASSPASSPASS
Redirect 303 from remote to same remote with passwordPASSPASSPASS
Redirect 303 from remote to another remote with user and passwordPASSPASSPASS
Redirect 303 from remote to another remote with userPASSPASSPASS
Redirect 303 from remote to another remote with passwordPASSPASSPASS
Redirect 307 from same origin to remote with user and passwordPASSPASSPASS
Redirect 307 from same origin to remote with userPASSPASSPASS
Redirect 307 from same origin to remote with passwordPASSPASSPASS
Redirect 307 from remote to same origin with user and passwordPASSPASSPASS
Redirect 307 from remote to same origin with userPASSPASSPASS
Redirect 307 from remote to same origin with passwordPASSPASSPASS
Redirect 307 from remote to same remote with user and passwordPASSPASSPASS
Redirect 307 from remote to same remote with userPASSPASSPASS
Redirect 307 from remote to same remote with passwordPASSPASSPASS
Redirect 307 from remote to another remote with user and passwordPASSPASSPASS
Redirect 307 from remote to another remote with userPASSPASSPASS
Redirect 307 from remote to another remote with passwordPASSPASSPASS
Redirect 308 from same origin to remote with user and passwordPASSPASSPASS
Redirect 308 from same origin to remote with userPASSPASSPASS
Redirect 308 from same origin to remote with passwordPASSPASSPASS
Redirect 308 from remote to same origin with user and passwordPASSPASSPASS
Redirect 308 from remote to same origin with userPASSPASSPASS
Redirect 308 from remote to same origin with passwordPASSPASSPASS
Redirect 308 from remote to same remote with user and passwordPASSPASSPASS
Redirect 308 from remote to same remote with userPASSPASSPASS
Redirect 308 from remote to same remote with passwordPASSPASSPASS
Redirect 308 from remote to another remote with user and passwordPASSPASSPASS
Redirect 308 from remote to another remote with userPASSPASSPASS
Redirect 308 from remote to another remote with passwordPASSPASSPASS
/fetch/api/cors/cors-redirect-credentials.htmlOKOKOK
Redirect 301 from same origin to remote with user and passwordPASSPASSPASS
Redirect 301 from same origin to remote with userPASSPASSPASS
Redirect 301 from same origin to remote with passwordPASSPASSPASS
Redirect 301 from remote to same origin with user and passwordPASSPASSPASS
Redirect 301 from remote to same origin with userPASSPASSPASS
Redirect 301 from remote to same origin with passwordPASSPASSPASS
Redirect 301 from remote to same remote with user and passwordPASSPASSPASS
Redirect 301 from remote to same remote with userPASSPASSPASS
Redirect 301 from remote to same remote with passwordPASSPASSPASS
Redirect 301 from remote to another remote with user and passwordPASSPASSPASS
Redirect 301 from remote to another remote with userPASSPASSPASS
Redirect 301 from remote to another remote with passwordPASSPASSPASS
Redirect 302 from same origin to remote with user and passwordPASSPASSPASS
Redirect 302 from same origin to remote with userPASSPASSPASS
Redirect 302 from same origin to remote with passwordPASSPASSPASS
Redirect 302 from remote to same origin with user and passwordPASSPASSPASS
Redirect 302 from remote to same origin with userPASSPASSPASS
Redirect 302 from remote to same origin with passwordPASSPASSPASS
Redirect 302 from remote to same remote with user and passwordPASSPASSPASS
Redirect 302 from remote to same remote with userPASSPASSPASS
Redirect 302 from remote to same remote with passwordPASSPASSPASS
Redirect 302 from remote to another remote with user and passwordPASSPASSPASS
Redirect 302 from remote to another remote with userPASSPASSPASS
Redirect 302 from remote to another remote with passwordPASSPASSPASS
Redirect 303 from same origin to remote with user and passwordPASSPASSPASS
Redirect 303 from same origin to remote with userPASSPASSPASS
Redirect 303 from same origin to remote with passwordPASSPASSPASS
Redirect 303 from remote to same origin with user and passwordPASSPASSPASS
Redirect 303 from remote to same origin with userPASSPASSPASS
Redirect 303 from remote to same origin with passwordPASSPASSPASS
Redirect 303 from remote to same remote with user and passwordPASSPASSPASS
Redirect 303 from remote to same remote with userPASSPASSPASS
Redirect 303 from remote to same remote with passwordPASSPASSPASS
Redirect 303 from remote to another remote with user and passwordPASSPASSPASS
Redirect 303 from remote to another remote with userPASSPASSPASS
Redirect 303 from remote to another remote with passwordPASSPASSPASS
Redirect 307 from same origin to remote with user and passwordPASSPASSPASS
Redirect 307 from same origin to remote with userPASSPASSPASS
Redirect 307 from same origin to remote with passwordPASSPASSPASS
Redirect 307 from remote to same origin with user and passwordPASSPASSPASS
Redirect 307 from remote to same origin with userPASSPASSPASS
Redirect 307 from remote to same origin with passwordPASSPASSPASS
Redirect 307 from remote to same remote with user and passwordPASSPASSPASS
Redirect 307 from remote to same remote with userPASSPASSPASS
Redirect 307 from remote to same remote with passwordPASSPASSPASS
Redirect 307 from remote to another remote with user and passwordPASSPASSPASS
Redirect 307 from remote to another remote with userPASSPASSPASS
Redirect 307 from remote to another remote with passwordPASSPASSPASS
Redirect 308 from same origin to remote with user and passwordPASSPASSPASS
Redirect 308 from same origin to remote with userPASSPASSPASS
Redirect 308 from same origin to remote with passwordPASSPASSPASS
Redirect 308 from remote to same origin with user and passwordPASSPASSPASS
Redirect 308 from remote to same origin with userPASSPASSPASS
Redirect 308 from remote to same origin with passwordPASSPASSPASS
Redirect 308 from remote to same remote with user and passwordPASSPASSPASS
Redirect 308 from remote to same remote with userPASSPASSPASS
Redirect 308 from remote to same remote with passwordPASSPASSPASS
Redirect 308 from remote to another remote with user and passwordPASSPASSPASS
Redirect 308 from remote to another remote with userPASSPASSPASS
Redirect 308 from remote to another remote with passwordPASSPASSPASS
/fetch/api/cors/cors-redirect-preflight-worker.htmlOKOKOK
CORS [PUT] [only safe headers], server allowsPASSPASSPASS
/fetch/api/cors/cors-redirect-credentials-worker.htmlOKOKOK
Redirect 301 from same origin to remote without user and passwordPASSPASSPASS
Redirect 301 from same origin to remote with user and passwordPASSPASSFAIL
Redirect 301 from same origin to remote with userPASSPASSFAIL
Redirect 301 from same origin to remote with passwordPASSPASSFAIL
Redirect 301 from remote to same origin with user and passwordPASSPASSFAIL
Redirect 301 from remote to same origin with userPASSPASSFAIL
Redirect 301 from remote to same origin with passwordPASSPASSFAIL
Redirect 301 from remote to same remote with user and passwordPASSPASSFAIL
Redirect 301 from remote to same remote with userPASSPASSFAIL
Redirect 301 from remote to same remote with passwordPASSPASSFAIL
Redirect 301 from remote to another remote with user and passwordPASSPASSFAIL
Redirect 301 from remote to another remote with userPASSPASSFAIL
Redirect 301 from remote to another remote with passwordPASSPASSFAIL
Redirect 302 from same origin to remote without user and passwordPASSPASSPASS
Redirect 302 from same origin to remote with user and passwordPASSPASSFAIL
Redirect 302 from same origin to remote with userPASSPASSFAIL
Redirect 302 from same origin to remote with passwordPASSPASSFAIL
Redirect 302 from remote to same origin with user and passwordPASSPASSFAIL
Redirect 302 from remote to same origin with userPASSPASSFAIL
Redirect 302 from remote to same origin with passwordPASSPASSFAIL
Redirect 302 from remote to same remote with user and passwordPASSPASSFAIL
Redirect 302 from remote to same remote with userPASSPASSFAIL
Redirect 302 from remote to same remote with passwordPASSPASSFAIL
Redirect 302 from remote to another remote with user and passwordPASSPASSFAIL
Redirect 302 from remote to another remote with userPASSPASSFAIL
Redirect 302 from remote to another remote with passwordPASSPASSFAIL
Redirect 303 from same origin to remote without user and passwordPASSPASSPASS
Redirect 303 from same origin to remote with user and passwordPASSPASSFAIL
Redirect 303 from same origin to remote with userPASSPASSFAIL
Redirect 303 from same origin to remote with passwordPASSPASSFAIL
Redirect 303 from remote to same origin with user and passwordPASSPASSFAIL
Redirect 303 from remote to same origin with userPASSPASSFAIL
Redirect 303 from remote to same origin with passwordPASSPASSFAIL
Redirect 303 from remote to same remote with user and passwordPASSPASSFAIL
Redirect 303 from remote to same remote with userPASSPASSFAIL
Redirect 303 from remote to same remote with passwordPASSPASSFAIL
Redirect 303 from remote to another remote with user and passwordPASSPASSFAIL
Redirect 303 from remote to another remote with userPASSPASSFAIL
Redirect 303 from remote to another remote with passwordPASSPASSFAIL
Redirect 307 from same origin to remote without user and passwordPASSPASSPASS
Redirect 307 from same origin to remote with user and passwordPASSPASSFAIL
Redirect 307 from same origin to remote with userPASSPASSFAIL
Redirect 307 from same origin to remote with passwordPASSPASSFAIL
Redirect 307 from remote to same origin with user and passwordPASSPASSFAIL
Redirect 307 from remote to same origin with userPASSPASSFAIL
Redirect 307 from remote to same origin with passwordPASSPASSFAIL
Redirect 307 from remote to same remote with user and passwordPASSPASSFAIL
Redirect 307 from remote to same remote with userPASSPASSFAIL
Redirect 307 from remote to same remote with passwordPASSPASSFAIL
Redirect 307 from remote to another remote with user and passwordPASSPASSFAIL
Redirect 307 from remote to another remote with userPASSPASSFAIL
Redirect 307 from remote to another remote with passwordPASSPASSFAIL
Redirect 308 from same origin to remote without user and passwordPASSPASSPASS
Redirect 308 from same origin to remote with user and passwordPASSPASSFAIL
Redirect 308 from same origin to remote with userPASSPASSFAIL
Redirect 308 from same origin to remote with passwordPASSPASSFAIL
Redirect 308 from remote to same origin with user and passwordPASSPASSFAIL
Redirect 308 from remote to same origin with userPASSPASSFAIL
Redirect 308 from remote to same origin with passwordPASSPASSFAIL
Redirect 308 from remote to same remote with user and passwordPASSPASSFAIL
Redirect 308 from remote to same remote with userPASSPASSFAIL
Redirect 308 from remote to same remote with passwordPASSPASSFAIL
Redirect 308 from remote to another remote with user and passwordPASSPASSFAIL
Redirect 308 from remote to another remote with userPASSPASSFAIL
Redirect 308 from remote to another remote with passwordPASSPASSFAIL
/fetch/api/cors/cors-redirect-credentials.htmlOKOKOK
Redirect 301 from same origin to remote without user and passwordPASSPASSPASS
Redirect 301 from same origin to remote with user and passwordPASSPASSFAIL
Redirect 301 from same origin to remote with userPASSPASSFAIL
Redirect 301 from same origin to remote with passwordPASSPASSFAIL
Redirect 301 from remote to same origin with user and passwordPASSPASSFAIL
Redirect 301 from remote to same origin with userPASSPASSFAIL
Redirect 301 from remote to same origin with passwordPASSPASSFAIL
Redirect 301 from remote to same remote with user and passwordPASSPASSFAIL
Redirect 301 from remote to same remote with userPASSPASSFAIL
Redirect 301 from remote to same remote with passwordPASSPASSFAIL
Redirect 301 from remote to another remote with user and passwordPASSPASSFAIL
Redirect 301 from remote to another remote with userPASSPASSFAIL
Redirect 301 from remote to another remote with passwordPASSPASSFAIL
Redirect 302 from same origin to remote without user and passwordPASSPASSPASS
Redirect 302 from same origin to remote with user and passwordPASSPASSFAIL
Redirect 302 from same origin to remote with userPASSPASSFAIL
Redirect 302 from same origin to remote with passwordPASSPASSFAIL
Redirect 302 from remote to same origin with user and passwordPASSPASSFAIL
Redirect 302 from remote to same origin with userPASSPASSFAIL
Redirect 302 from remote to same origin with passwordPASSPASSFAIL
Redirect 302 from remote to same remote with user and passwordPASSPASSFAIL
Redirect 302 from remote to same remote with userPASSPASSFAIL
Redirect 302 from remote to same remote with passwordPASSPASSFAIL
Redirect 302 from remote to another remote with user and passwordPASSPASSFAIL
Redirect 302 from remote to another remote with userPASSPASSFAIL
Redirect 302 from remote to another remote with passwordPASSPASSFAIL
Redirect 303 from same origin to remote without user and passwordPASSPASSPASS
Redirect 303 from same origin to remote with user and passwordPASSPASSFAIL
Redirect 303 from same origin to remote with userPASSPASSFAIL
Redirect 303 from same origin to remote with passwordPASSPASSFAIL
Redirect 303 from remote to same origin with user and passwordPASSPASSFAIL
Redirect 303 from remote to same origin with userPASSPASSFAIL
Redirect 303 from remote to same origin with passwordPASSPASSFAIL
Redirect 303 from remote to same remote with user and passwordPASSPASSFAIL
Redirect 303 from remote to same remote with userPASSPASSFAIL
Redirect 303 from remote to same remote with passwordPASSPASSFAIL
Redirect 303 from remote to another remote with user and passwordPASSPASSFAIL
Redirect 303 from remote to another remote with userPASSPASSFAIL
Redirect 303 from remote to another remote with passwordPASSPASSFAIL
Redirect 307 from same origin to remote without user and passwordPASSPASSPASS
Redirect 307 from same origin to remote with user and passwordPASSPASSFAIL
Redirect 307 from same origin to remote with userPASSPASSFAIL
Redirect 307 from same origin to remote with passwordPASSPASSFAIL
Redirect 307 from remote to same origin with user and passwordPASSPASSFAIL
Redirect 307 from remote to same origin with userPASSPASSFAIL
Redirect 307 from remote to same origin with passwordPASSPASSFAIL
Redirect 307 from remote to same remote with user and passwordPASSPASSFAIL
Redirect 307 from remote to same remote with userPASSPASSFAIL
Redirect 307 from remote to same remote with passwordPASSPASSFAIL
Redirect 307 from remote to another remote with user and passwordPASSPASSFAIL
Redirect 307 from remote to another remote with userPASSPASSFAIL
Redirect 307 from remote to another remote with passwordPASSPASSFAIL
Redirect 308 from same origin to remote without user and passwordPASSPASSPASS
Redirect 308 from same origin to remote with user and passwordPASSPASSFAIL
Redirect 308 from same origin to remote with userPASSPASSFAIL
Redirect 308 from same origin to remote with passwordPASSPASSFAIL
Redirect 308 from remote to same origin with user and passwordPASSPASSFAIL
Redirect 308 from remote to same origin with userPASSPASSFAIL
Redirect 308 from remote to same origin with passwordPASSPASSFAIL
Redirect 308 from remote to same remote with user and passwordPASSPASSFAIL
Redirect 308 from remote to same remote with userPASSPASSFAIL
Redirect 308 from remote to same remote with passwordPASSPASSFAIL
Redirect 308 from remote to another remote with user and passwordPASSPASSFAIL
Redirect 308 from remote to another remote with userPASSPASSFAIL
Redirect 308 from remote to another remote with passwordPASSPASSFAIL
/fetch/api/cors/cors-redirect-preflight-worker.htmlOKOKOK
Redirect 301: same origin to cors (preflight after redirection success case)PASSPASSPASS
Redirect 301: same origin to cors (preflight after redirection failure case)PASSPASSPASS
Redirect 301: cors to same origin (preflight after redirection success case)PASSFAILPASS
Redirect 308: cors to same origin (preflight after redirection failure case)PASSPASSPASS
Redirect 308: cors to another cors (preflight after redirection success case)PASSFAILPASS
Redirect 308: cors to another cors (preflight after redirection failure case)PASSPASSPASS
/fetch/api/cors/cors-redirect-preflight.htmlOKOKOK
/fetch/api/cors/cors-redirect-preflight.htmlOKOKOK
Redirect 301: same origin to cors (preflight after redirection success case)PASSPASSPASS
Redirect 301: same origin to cors (preflight after redirection failure case)PASSPASSPASS
Redirect 301: cors to same origin (preflight after redirection success case)PASSFAILPASS
Redirect 308: cors to same origin (preflight after redirection failure case)PASSPASSPASS
Redirect 308: cors to another cors (preflight after redirection success case)PASSFAILPASS
Redirect 308: cors to another cors (preflight after redirection failure case)PASSPASSPASS
/fetch/api/cors/cors-redirect-worker.htmlOKOKOK
/fetch/api/cors/cors-redirect-worker.htmlOKOKOK
Redirect 301: cors to same corsPASSPASSPASS
Redirect 301: cors to another corsPASSFAILPASS
Redirect 301: same origin to corsPASSPASSPASS
Redirect 308: cors to another corsPASSFAILPASS
Redirect 308: same origin to corsPASSPASSPASS
Redirect 308: cors to same originPASSFAILPASS
/fetch/api/cors/cors-redirect.htmlOKOKOK
/fetch/api/cors/cors-redirect.htmlOKOKOK
Redirect 301: cors to same corsPASSPASSPASS
Redirect 301: cors to another corsPASSFAILPASS
Redirect 301: same origin to corsPASSPASSPASS
Redirect 308: cors to another corsPASSFAILPASS
Redirect 308: same origin to corsPASSPASSPASS
Redirect 308: cors to same originPASSFAILPASS
/fetch/api/credentials/authentication-basic-worker.htmlOKOKOK
/fetch/api/credentials/authentication-basic-worker.htmlOKOKOK
User-added Authorization header with include modePASSPASSPASS
User-added Authorization header with same-origin modePASSPASSPASS
User-added Authorization header with omit modePASSPASSPASS
/fetch/api/credentials/authentication-basic.htmlOKOKOK
/fetch/api/credentials/authentication-basic.htmlOKOKOK
User-added Authorization header with include modePASSPASSPASS
User-added Authorization header with same-origin modePASSPASSPASS
User-added Authorization header with omit modePASSPASSPASS
/fetch/api/credentials/cookies-worker.htmlOKOKOK
Include mode: 1 cookiePASSPASSPASS
Include mode: 2 cookiesPASSPASSPASS
/fetch/api/credentials/cookies-worker.htmlOKOKOK
Include mode: 1 cookieFAILFAILPASS
Include mode: 2 cookiesFAILFAILPASS
Omit mode: discard cookiesPASSPASSPASS
Omit mode: no cookie is storedPASSPASSPASS
Omit mode: no cookie is storedFAILFAILPASS
Omit mode: no cookie is sentPASSPASSPASS
Same-origin mode: 1 cookiePASSPASSPASS
Same-origin mode: 2 cookiesPASSPASSPASS
/fetch/api/credentials/cookies.htmlOKOKOK
Include mode: 1 cookiePASSPASSPASS
Include mode: 2 cookiesPASSPASSPASS
Same-origin mode: 1 cookieFAILFAILPASS
Same-origin mode: 2 cookiesFAILFAILPASS
/fetch/api/credentials/cookies.htmlOKOKOK
Include mode: 1 cookieFAILFAILPASS
Include mode: 2 cookiesFAILFAILPASS
Omit mode: discard cookiesPASSPASSPASS
Omit mode: no cookie is storedPASSPASSPASS
Omit mode: no cookie is storedFAILFAILPASS
Omit mode: no cookie is sentPASSPASSPASS
Same-origin mode: 1 cookiePASSPASSPASS
Same-origin mode: 2 cookiesPASSPASSPASS
/fetch/api/headers/header-values-normalize.htmlOKOKOK
Same-origin mode: 1 cookieFAILFAILPASS
Same-origin mode: 2 cookiesFAILFAILPASS
/fetch/api/headers/header-values-normalize.htmlOKOKOK
XMLHttpRequest with value %00PASSPASSPASS
fetch() with value %00PASSPASSPASS
XMLHttpRequest with value %01PASSPASSFAIL
fetch() with value %1FPASSPASSFAIL
XMLHttpRequest with value %20PASSPASSPASS
fetch() with value %20PASSPASSPASS
/fetch/api/headers/header-values.htmlOKOKOK
/fetch/api/headers/header-values.htmlOKOKOK
XMLHttpRequest with value x%00x needs to throwPASSPASSPASS
fetch() with value x%00x needs to throwPASSPASSPASS
XMLHttpRequest with value x%0Ax needs to throwPASSPASSPASS
fetch() with value x%0Dx needs to throwPASSPASSPASS
XMLHttpRequest with all valid valuesPASSPASSFAIL
fetch() with all valid valuesPASSPASSFAIL
/fetch/api/headers/headers-basic.htmlOKOKOK
/fetch/api/headers/headers-basic.htmlOKOKOK
Create headers from no parameterPASSPASSPASS
Create headers from undefined parameterFAILPASSPASS
Create headers from empty objectPASSPASSPASS
Check entries methodFAILFAILPASS
Check Symbol.iterator methodPASSFAILPASS
Check forEach methodPASSFAILPASS
/fetch/api/headers/headers-casing.htmlOKOKOK
/fetch/api/headers/headers-casing.htmlOKOKOK
Create headers, names use characters with different casePASSPASSPASS
Check append method, names use characters with different casePASSPASSPASS
Check set method, names use characters with different casePASSPASSPASS
Check delete method, names use characters with different casePASSPASSPASS
/fetch/api/headers/headers-combine.htmlOKOKOK
Create headers using same name for different valuesPASSPASSPASS
/fetch/api/headers/headers-combine.htmlOKOKOK
Create headers using same name for different valuesFAILFAILPASS
Check delete and has methods when using same name for different valuesPASSPASSPASS
Check set methods when called with already used namePASSPASSPASS
Check append methods when called with already used namePASSPASSPASS
/fetch/api/headers/headers-errors.htmlOKOKOK
Check append methods when called with already used nameFAILFAILPASS
/fetch/api/headers/headers-errors.htmlOKOKOK
Create headers giving an array having one string as init argumentPASSPASSPASS
Create headers giving an array having three strings as init argumentPASSPASSPASS
Create headers giving bad header name as init argumentPASSPASSPASS
Check headers append with an invalid value invalidĀPASSPASSPASS
Headers forEach throws if argument is not callablePASSPASSPASS
Headers forEach loop should stop if callback is throwing exceptionPASSPASSPASS
/fetch/api/headers/headers-idl.htmlOKOKOK
/fetch/api/headers/headers-idl.htmlOKOKOK
Headers interface: existence and properties of interface objectPASSPASSPASS
Headers interface object lengthPASSPASSPASS
Headers interface object namePASSPASSPASS
Headers interface: new Headers() must inherit property "values" with the proper type (8)PASSPASSPASS
Headers interface: new Headers() must inherit property "forEach" with the proper type (9)PASSPASSPASS
Headers interface: calling forEach(function,any) on new Headers() with too few arguments must throw TypeErrorPASSPASSPASS
/fetch/api/headers/headers-normalize.htmlOKOKOK
/fetch/api/headers/headers-normalize.htmlOKOKOK
Create headers with not normalized valuesFAILFAILPASS
Check append method with not normalized valuesFAILFAILPASS
Check set method with not normalized valuesFAILFAILPASS
/fetch/api/headers/headers-record.htmlOKOKOK
/fetch/api/headers/headers-record.htmlOKOKOK
Passing nothing to Headers constructorPASSPASSPASS
Passing undefined to Headers constructorFAILPASSPASS
Passing null to Headers constructorPASSPASSPASS
Correct operation ordering with non-enumerable propertiesFAILPASSFAIL
Correct operation ordering with undefined descriptorsFAILPASSFAIL
Correct operation ordering with repeated keysFAILPASSFAIL
/fetch/api/headers/headers-structure.htmlOKOKOK
/fetch/api/headers/headers-structure.htmlOKOKOK
Headers has append methodPASSPASSPASS
Headers has delete methodPASSPASSPASS
Headers has get methodPASSPASSPASS
Headers has entries methodPASSPASSPASS
Headers has keys methodPASSPASSPASS
Headers has values methodPASSPASSPASS
/fetch/api/policies/csp-blocked-worker.htmlOKOKOK
Fetch is blocked by CSP, got a TypeErrorPASSPASSPASS
/fetch/api/policies/csp-blocked.htmlOKOKOK
/fetch/api/policies/csp-blocked-worker.htmlOKOKOK
Fetch is blocked by CSP, got a TypeErrorFAILPASSPASS
/fetch/api/policies/csp-blocked.htmlOKOKOK
Fetch is blocked by CSP, got a TypeErrorPASSPASSPASS
/fetch/api/policies/referrer-no-referrer-worker.htmlOKOKOK
/fetch/api/policies/referrer-no-referrer-service-worker.https.htmlOKOKOK
Fetch in service worker: referrer with no-referrer policyFAILFAILFAIL
/fetch/api/policies/referrer-no-referrer-worker.htmlOKOKOK
Request's referrer is emptyPASSPASSPASS
/fetch/api/policies/referrer-no-referrer.htmlOKOKOK
/fetch/api/policies/referrer-no-referrer.htmlOKOKOK
Request's referrer is emptyPASSPASSPASS
/fetch/api/policies/referrer-origin-when-cross-origin-worker.htmlOKOKOK
Request's referrer is originPASSPASSFAIL
/fetch/api/policies/referrer-origin-when-cross-origin.htmlOKOKOK
Request's referrer is originPASSPASSFAIL
/fetch/api/policies/referrer-origin-worker.htmlOKOKOK
/fetch/api/policies/referrer-origin-service-worker.https.htmlOKOKOK
Fetch in service worker: referrer with no-referrer policyFAILFAILFAIL
/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https.htmlOKOKOK
Fetch in service worker: referrer with origin-when-cross-origin policyFAILFAILFAIL
/fetch/api/policies/referrer-origin-when-cross-origin-worker.htmlOKOKOK
Request's referrer is originFAILFAILFAIL
/fetch/api/policies/referrer-origin-when-cross-origin.htmlOKOKOK
Request's referrer is originFAILFAILFAIL
/fetch/api/policies/referrer-origin-worker.htmlOKOKOK
Request's referrer is originPASSPASSFAIL
Cross-origin referrer is overridden by client originFAILPASSFAIL
/fetch/api/policies/referrer-origin.htmlOKOKOK
/fetch/api/policies/referrer-origin.htmlOKOKOK
Request's referrer is originPASSPASSFAIL
Cross-origin referrer is overridden by client originFAILPASSFAIL
/fetch/api/policies/referrer-unsafe-url-worker.htmlOKOKOK
/fetch/api/policies/referrer-unsafe-url-service-worker.https.htmlOKOKOK
Fetch in worker: referrer with unsafe-url policyFAILFAILFAIL
/fetch/api/policies/referrer-unsafe-url-worker.htmlOKOKOK
Request's referrer is the full url of current document/workerPASSPASSPASS
/fetch/api/policies/referrer-unsafe-url.htmlOKOKOK
/fetch/api/policies/referrer-unsafe-url.htmlOKOKOK
Request's referrer is the full url of current document/workerPASSPASSPASS
/fetch/api/redirect/redirect-count-worker.htmlOKOKOK
/fetch/api/redirect/redirect-count-worker.htmlOKOKOK
Redirect 301 20 timesPASSPASSFAIL
Redirect 301 21 timesPASSPASSFAIL
Redirect 301 21 timesPASSPASSPASS
Redirect 302 20 timesPASSPASSFAIL
Redirect 302 21 timesPASSPASSFAIL
Redirect 303 20 timesPASSPASSFAIL
Redirect 307 21 timesPASSPASSFAIL
Redirect 308 20 timesPASSPASSFAIL
Redirect 308 21 timesPASSPASSFAIL
/fetch/api/redirect/redirect-count.htmlOKOKOK
/fetch/api/redirect/redirect-count.htmlOKOKOK
Redirect 301 20 timesPASSPASSFAIL
Redirect 301 21 timesPASSPASSFAIL
Redirect 302 20 timesPASSPASSFAIL
Redirect 307 21 timesPASSPASSFAIL
Redirect 308 20 timesPASSPASSFAIL
Redirect 308 21 timesPASSPASSFAIL
/fetch/api/redirect/redirect-location-worker.htmlOKOKOK
/fetch/api/redirect/redirect-location-worker.htmlOKOKOK
Redirect 301 in "follow" mode without locationPASSPASSPASS
Redirect 301 in "manual" mode without locationPASSFAILPASS
Redirect 301 in "follow" mode with invalid locationPASSPASSFAIL
Redirect 308 in "manual" mode with invalid locationPASSPASSPASS
Redirect 308 in "follow" mode with data locationPASSPASSPASS
Redirect 308 in "manual" mode with data locationPASSPASSPASS
/fetch/api/redirect/redirect-location.htmlOKOKOK
/fetch/api/redirect/redirect-location.htmlOKOKOK
Redirect 301 in "follow" mode without locationPASSPASSPASS
Redirect 301 in "manual" mode without locationPASSFAILPASS
Redirect 301 in "follow" mode with invalid locationPASSPASSFAIL
Redirect 308 in "manual" mode with invalid locationPASSPASSPASS
Redirect 308 in "follow" mode with data locationPASSPASSPASS
Redirect 308 in "manual" mode with data locationPASSPASSPASS
/fetch/api/redirect/redirect-method-worker.htmlOKOKOK
/fetch/api/redirect/redirect-method-worker.htmlOKOKOK
Response.redirected should be false on not-redirected responsesPASSPASSPASS
Redirect 301 with GETPASSPASSPASS
Redirect 301 with POSTPASSPASSPASS
Redirect 307 with GETPASSPASSPASS
Redirect 307 with POSTPASSPASSPASS
Redirect 307 with HEADPASSPASSPASS
/fetch/api/redirect/redirect-method.htmlOKOKOK
/fetch/api/redirect/redirect-method.htmlOKOKOK
Response.redirected should be false on not-redirected responsesPASSPASSPASS
Redirect 301 with GETPASSPASSPASS
Redirect 301 with POSTPASSPASSPASS
Redirect 307 with GETPASSPASSPASS
Redirect 307 with POSTPASSPASSPASS
Redirect 307 with HEADPASSPASSPASS
/fetch/api/redirect/redirect-mode-worker.htmlOKOKOK
/fetch/api/redirect/redirect-mode-worker.htmlOKOKOK
Redirect 301 in "error" mode PASSPASSPASS
Redirect 301 in "follow" mode PASSPASSPASS
Redirect 301 in "manual" mode PASSPASSPASS
Redirect 308 in "error" mode PASSPASSPASS
Redirect 308 in "follow" mode PASSPASSPASS
Redirect 308 in "manual" mode PASSPASSPASS
/fetch/api/redirect/redirect-mode.htmlOKOKOK
/fetch/api/redirect/redirect-mode.htmlOKOKOK
Redirect 301 in "error" mode PASSPASSPASS
Redirect 301 in "follow" mode PASSPASSPASS
Redirect 301 in "manual" mode PASSPASSPASS
Redirect 308 in "error" mode PASSPASSPASS
Redirect 308 in "follow" mode PASSPASSPASS
Redirect 308 in "manual" mode PASSPASSPASS
/fetch/api/redirect/redirect-origin-worker.htmlOKOKOK
/fetch/api/redirect/redirect-origin-worker.htmlOKOKOK
Same origin to same origin redirection 301PASSFAILPASS
Same origin to other origin redirection 301PASSPASSPASS
Other origin to other origin redirection 301PASSPASSPASS
Same origin to other origin redirection 308PASSPASSPASS
Other origin to other origin redirection 308PASSPASSPASS
Other origin to same origin redirection 308PASSFAILPASS
/fetch/api/redirect/redirect-origin.htmlOKOKOK
/fetch/api/redirect/redirect-origin.htmlOKOKOK
Same origin to same origin redirection 301PASSFAILPASS
Same origin to other origin redirection 301PASSPASSPASS
Other origin to other origin redirection 301PASSPASSPASS
Same origin to other origin redirection 308PASSPASSPASS
Other origin to other origin redirection 308PASSPASSPASS
Other origin to same origin redirection 308PASSFAILPASS
/fetch/api/redirect/redirect-referrer-worker.htmlOKOKOK
/fetch/api/redirect/redirect-referrer-worker.htmlOKOKOK
Same origin redirection, empty init, unsafe-url redirect header PASSPASSPASS
Same origin redirection, empty init, no-referrer-when-downgrade redirect header PASSPASSPASS
Same origin redirection, empty init, same-origin redirect header PASSPASSPASS
Cross origin redirection, empty redirect header, no-referrer init PASSPASSPASS
Cross origin redirection, empty redirect header, strict-origin init FAILPASSFAIL
Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init FAILPASSFAIL
/fetch/api/redirect/redirect-referrer.htmlOKOKOK
/fetch/api/redirect/redirect-referrer.htmlOKOKOK
Same origin redirection, empty init, unsafe-url redirect header PASSPASSPASS
Same origin redirection, empty init, no-referrer-when-downgrade redirect header PASSPASSPASS
Same origin redirection, empty init, same-origin redirect header PASSPASSPASS
Cross origin redirection, empty redirect header, no-referrer init PASSPASSPASS
Cross origin redirection, empty redirect header, strict-origin init FAILPASSFAIL
Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init FAILPASSFAIL
/fetch/api/redirect/redirect-schemes.htmlOKOKOK
/fetch/api/redirect/redirect-schemes.htmlOKOKOK
Fetch: handling different schemes in redirectsPASSPASSPASS
Fetch: handling different schemes in redirects 1PASSPASSPASS
Fetch: handling different schemes in redirects 2PASSPASSPASS
Fetch: handling different schemes in redirects 3PASSPASSPASS
Fetch: handling different schemes in redirects 4PASSPASSPASS
Fetch: handling different schemes in redirects 5PASSPASSPASS
/fetch/api/redirect/redirect-to-dataurl-worker.htmlOKOKOK
/fetch/api/redirect/redirect-to-dataurl-worker.htmlOKOKOK
Testing data URL loading after same-origin redirection (cors mode)PASSPASSPASS
Testing data URL loading after same-origin redirection (no-cors mode)PASSFAILPASS
Testing data URL loading after same-origin redirection (same-origin mode)PASSFAILPASS
Testing data URL loading after cross-origin redirection (cors mode)PASSPASSPASS
Testing data URL loading after cross-origin redirection (no-cors mode)PASSFAILPASS
/fetch/api/redirect/redirect-to-dataurl.htmlOKOKOK
/fetch/api/redirect/redirect-to-dataurl.htmlOKOKOK
Testing data URL loading after same-origin redirection (cors mode)PASSPASSPASS
Testing data URL loading after same-origin redirection (no-cors mode)PASSFAILPASS
Testing data URL loading after same-origin redirection (same-origin mode)PASSFAILPASS
Testing data URL loading after cross-origin redirection (cors mode)PASSPASSPASS
Testing data URL loading after cross-origin redirection (no-cors mode)PASSFAILPASS
/fetch/api/request/multi-globals/url-parsing.htmlOKOKOK
/fetch/api/request/multi-globals/url-parsing.htmlOKOKOK
should parse the URL relative to the current settings objectPASSFAILPASS
/fetch/api/request/request-bad-port.htmlOKOKOK
/fetch/api/request/request-bad-port.htmlOKOKOK
Request on bad port 1 should throw TypeError.PASSPASSPASS
Request on bad port 7 should throw TypeError.PASSPASSPASS
Request on bad port 9 should throw TypeError.PASSPASSPASS
Request on bad port 6667 should throw TypeError.PASSPASSPASS
Request on bad port 6668 should throw TypeError.PASSPASSPASS
Request on bad port 6669 should throw TypeError.PASSPASSPASS
/fetch/api/request/request-cache-default-conditional.htmlOKOKOK
/fetch/api/request/request-cache-default-conditional.htmlOKOKOK
RequestCache "default" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to "no-store" with Etag and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to "no-store" with date and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to "no-store" with Last-Modified and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to "no-store" with Etag and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to "no-store" with date and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to "no-store" with Last-Modified and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with Etag and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with date and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with Last-Modified and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with Etag and fresh responsePASSPASSFAIL
RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with date and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with Last-Modified and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-None-Match header (following a request without additional headers) is treated similarly to "no-store" with Etag and stale responsePASSPASSPASS
RequestCache "default" mode with an If-None-Match header (following a request without additional headers) is treated similarly to "no-store" with date and stale responsePASSPASSPASS
RequestCache "default" mode with an If-None-Match header (following a request without additional headers) is treated similarly to "no-store" with Last-Modified and stale responsePASSPASSPASS
RequestCache "default" mode with an If-None-Match header (following a request without additional headers) is treated similarly to "no-store" with Etag and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-None-Match header (following a request without additional headers) is treated similarly to "no-store" with date and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-None-Match header (following a request without additional headers) is treated similarly to "no-store" with Last-Modified and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with Etag and stale responsePASSPASSPASS
RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with date and stale responsePASSPASSPASS
RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with Last-Modified and stale responsePASSPASSPASS
RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with Etag and fresh responsePASSPASSFAIL
RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with date and fresh responsePASSPASSFAIL
RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with Last-Modified and fresh responsePASSPASSFAIL
RequestCache "default" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to "no-store" with Etag and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to "no-store" with date and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to "no-store" with Last-Modified and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to "no-store" with Etag and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to "no-store" with date and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to "no-store" with Last-Modified and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with Etag and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with date and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with Last-Modified and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with Etag and fresh responsePASSPASSFAIL
RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with date and fresh responsePASSPASSFAIL
RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with Last-Modified and fresh responsePASSPASSFAIL
RequestCache "default" mode with an If-Match header (following a request without additional headers) is treated similarly to "no-store" with Etag and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Match header (following a request without additional headers) is treated similarly to "no-store" with date and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Match header (following a request without additional headers) is treated similarly to "no-store" with Last-Modified and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Match header (following a request without additional headers) is treated similarly to "no-store" with Etag and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-Match header (following a request without additional headers) is treated similarly to "no-store" with date and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-Match header (following a request without additional headers) is treated similarly to "no-store" with Last-Modified and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with Etag and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with date and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with Last-Modified and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with Etag and fresh responsePASSPASSFAIL
RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with date and fresh responsePASSPASSFAIL
RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with Last-Modified and fresh responsePASSPASSFAIL
RequestCache "default" mode with an If-Range header (following a request without additional headers) is treated similarly to "no-store" with Etag and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Range header (following a request without additional headers) is treated similarly to "no-store" with date and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Range header (following a request without additional headers) is treated similarly to "no-store" with Last-Modified and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Range header (following a request without additional headers) is treated similarly to "no-store" with Etag and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-Range header (following a request without additional headers) is treated similarly to "no-store" with date and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-Range header (following a request without additional headers) is treated similarly to "no-store" with Last-Modified and fresh responsePASSPASSPASS
RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Etag and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with date and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Last-Modified and stale responsePASSPASSPASS
RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Etag and fresh responsePASSPASSFAIL
RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with date and fresh responsePASSPASSFAIL
/fetch/api/request/request-cache-default.htmlOKOKOK
RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Last-Modified and fresh responsePASSPASSFAIL
/fetch/api/request/request-cache-default.htmlOKOKOK
RequestCache "default" mode checks the cache for previously cached content and goes to the network for stale responses with Etag and stale responsePASSPASSPASS
RequestCache "default" mode checks the cache for previously cached content and goes to the network for stale responses with date and stale responsePASSPASSPASS
RequestCache "default" mode checks the cache for previously cached content and goes to the network for stale responses with Last-Modified and stale responsePASSPASSPASS
RequestCache "default" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with Etag and fresh responsePASSPASSPASS
RequestCache "default" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with date and fresh responsePASSPASSPASS
RequestCache "default" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with Last-Modified and fresh responsePASSPASSPASS
Responses with the "Cache-Control: no-store" header are not stored in the cache with Etag and stale responsePASSPASSPASS
Responses with the "Cache-Control: no-store" header are not stored in the cache with date and stale responsePASSPASSPASS
Responses with the "Cache-Control: no-store" header are not stored in the cache with Last-Modified and stale responsePASSPASSPASS
Responses with the "Cache-Control: no-store" header are not stored in the cache with Etag and fresh responsePASSPASSPASS
Responses with the "Cache-Control: no-store" header are not stored in the cache with date and fresh responsePASSPASSPASS
/fetch/api/request/request-cache-force-cache.htmlOKOKOK
Responses with the "Cache-Control: no-store" header are not stored in the cache with Last-Modified and fresh responsePASSPASSPASS
/fetch/api/request/request-cache-force-cache.htmlOKOKOK
RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for stale responses with Etag and stale responseFAILPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for stale responses with date and stale responseFAILPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for stale responses with Last-Modified and stale responseFAILPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Etag and fresh responsePASSPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for fresh responses with date and fresh responsePASSPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Last-Modified and fresh responsePASSPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and goes to the network if a cached response is not found with Etag and stale responsePASSPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and goes to the network if a cached response is not found with date and stale responsePASSPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and goes to the network if a cached response is not found with Last-Modified and stale responsePASSPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and goes to the network if a cached response is not found with Etag and fresh responsePASSPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and goes to the network if a cached response is not found with date and fresh responsePASSPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and goes to the network if a cached response is not found with Last-Modified and fresh responsePASSPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and goes to the network if a cached response would vary with Etag and stale responsePASSPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and goes to the network if a cached response would vary with date and stale responsePASSPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and goes to the network if a cached response would vary with Last-Modified and stale responsePASSPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and goes to the network if a cached response would vary with Etag and fresh responsePASSPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and goes to the network if a cached response would vary with date and fresh responsePASSPASSPASS
RequestCache "force-cache" mode checks the cache for previously cached content and goes to the network if a cached response would vary with Last-Modified and fresh responsePASSPASSPASS
RequestCache "force-cache" stores the response in the cache if it goes to the network with Etag and stale responsePASSPASSPASS
RequestCache "force-cache" stores the response in the cache if it goes to the network with date and stale responsePASSPASSPASS
RequestCache "force-cache" stores the response in the cache if it goes to the network with Last-Modified and stale responsePASSPASSPASS
RequestCache "force-cache" stores the response in the cache if it goes to the network with Etag and fresh responsePASSPASSPASS
RequestCache "force-cache" stores the response in the cache if it goes to the network with date and fresh responsePASSPASSPASS
/fetch/api/request/request-cache-no-cache.htmlOKOKOK
RequestCache "force-cache" stores the response in the cache if it goes to the network with Last-Modified and fresh responsePASSPASSPASS
/fetch/api/request/request-cache-no-cache.htmlOKOKOK
RequestCache "no-cache" mode revalidates stale responses found in the cache with Etag and stale responsePASSPASSPASS
RequestCache "no-cache" mode revalidates stale responses found in the cache with date and stale responsePASSPASSPASS
RequestCache "no-cache" mode revalidates stale responses found in the cache with Last-Modified and stale responsePASSPASSPASS
RequestCache "no-cache" mode revalidates fresh responses found in the cache with Etag and fresh responseFAILPASSPASS
RequestCache "no-cache" mode revalidates fresh responses found in the cache with date and fresh responseFAILPASSPASS
/fetch/api/request/request-cache-no-store.htmlOKOKOK
RequestCache "no-cache" mode revalidates fresh responses found in the cache with Last-Modified and fresh responseFAILPASSPASS
/fetch/api/request/request-cache-no-store.htmlOKOKOK
RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with Etag and stale responseFAILPASSPASS
RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with date and stale responseFAILPASSPASS
RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and stale responseFAILPASSPASS
RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with Etag and fresh responseFAILPASSPASS
RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with date and fresh responseFAILPASSPASS
RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and fresh responseFAILPASSPASS
RequestCache "no-store" mode does not store the response in the cache with Etag and stale responseFAILPASSFAIL
RequestCache "no-store" mode does not store the response in the cache with date and stale responseFAILPASSFAIL
RequestCache "no-store" mode does not store the response in the cache with Last-Modified and stale responseFAILPASSFAIL
RequestCache "no-store" mode does not store the response in the cache with Etag and fresh responseFAILPASSFAIL
RequestCache "no-store" mode does not store the response in the cache with date and fresh responseFAILPASSFAIL
/fetch/api/request/request-cache-only-if-cached.htmlOKOKOK
RequestCache "no-store" mode does not store the response in the cache with Last-Modified and fresh responseFAILPASSFAIL
/fetch/api/request/request-cache-only-if-cached.htmlOKOKOK
RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for stale responses with Etag and stale responseFAILPASSPASS
RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for stale responses with date and stale responseFAILPASSPASS
RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for stale responses with Last-Modified and stale responseFAILPASSPASS
RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for fresh responses with Etag and fresh responsePASSPASSPASS
RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for fresh responses with date and fresh responsePASSPASSPASS
RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for fresh responses with Last-Modified and fresh responsePASSPASSPASS
RequestCache "only-if-cached" mode checks the cache for previously cached content and does not go to the network if a cached response is not found with Etag and fresh responseFAILPASSPASS
RequestCache "only-if-cached" mode checks the cache for previously cached content and does not go to the network if a cached response is not found with date and fresh responseFAILPASSPASS
RequestCache "only-if-cached" mode checks the cache for previously cached content and does not go to the network if a cached response is not found with Last-Modified and fresh responseFAILPASSPASS
RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with Etag and fresh responsePASSPASSPASS
RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with date and fresh responsePASSPASSPASS
RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with Last-Modified and fresh responsePASSPASSPASS
RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with Etag and stale responseFAILPASSPASS
RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with date and stale responseFAILPASSPASS
RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with Last-Modified and stale responseFAILPASSPASS
RequestCache "only-if-cached" (with "same-origin") does not follow redirects across origins and rejects with Etag and fresh responsePASSPASSPASS
RequestCache "only-if-cached" (with "same-origin") does not follow redirects across origins and rejects with date and fresh responsePASSPASSPASS
RequestCache "only-if-cached" (with "same-origin") does not follow redirects across origins and rejects with Last-Modified and fresh responsePASSPASSPASS
RequestCache "only-if-cached" (with "same-origin") does not follow redirects across origins and rejects with Etag and stale responseFAILPASSPASS
RequestCache "only-if-cached" (with "same-origin") does not follow redirects across origins and rejects with date and stale responseFAILPASSPASS
/fetch/api/request/request-cache-reload.htmlOKOKOK
RequestCache "only-if-cached" (with "same-origin") does not follow redirects across origins and rejects with Last-Modified and stale responseFAILPASSPASS
/fetch/api/request/request-cache-reload.htmlOKOKOK
RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with Etag and stale responseFAILPASSPASS
RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with date and stale responseFAILPASSPASS
RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and stale responseFAILPASSPASS
RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with Etag and fresh responseFAILPASSPASS
RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with date and fresh responseFAILPASSPASS
RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and fresh responseFAILPASSPASS
RequestCache "reload" mode does store the response in the cache with Etag and stale responsePASSPASSPASS
RequestCache "reload" mode does store the response in the cache with date and stale responsePASSPASSPASS
RequestCache "reload" mode does store the response in the cache with Last-Modified and stale responsePASSPASSPASS
RequestCache "reload" mode does store the response in the cache with Etag and fresh responsePASSPASSPASS
RequestCache "reload" mode does store the response in the cache with date and fresh responsePASSPASSPASS
RequestCache "reload" mode does store the response in the cache with Last-Modified and fresh responsePASSPASSPASS
RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with Etag and stale responseFAILPASSPASS
RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with date and stale responseFAILPASSPASS
RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with Last-Modified and stale responseFAILPASSPASS
RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with Etag and fresh responseFAILPASSPASS
RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with date and fresh responseFAILPASSPASS
/fetch/api/request/request-clone.sub.htmlOKOKOK
RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with Last-Modified and fresh responseFAILPASSPASS
/fetch/api/request/request-clone.sub.htmlOKOKOK
Check cloning a requestFAILPASSPASS
Check cloning a request copies the headersPASSPASSPASS
/fetch/api/request/request-consume-empty.htmlOKOKOK
/fetch/api/request/request-consume-empty.htmlOKOKOK
Consume request's body as textPASSFAILPASS
Consume request's body as blobPASSFAILPASS
Consume request's body as arrayBufferPASSFAILPASS
Consume empty URLSearchParams request body as textPASSPASSPASS
Consume empty FormData request body as textFAILFAILFAIL
Consume empty ArrayBuffer request body as textPASSPASSPASS
/fetch/api/request/request-consume.htmlOKOKOK
/fetch/api/request/request-consume.htmlOKOKOK
Consume String request's body as textPASSPASSPASS
Consume String request's body as blobPASSPASSPASS
Consume String request's body as arrayBufferPASSPASSPASS
Trying to consume bad JSON text as JSON: '{'PASSPASSPASS
Trying to consume bad JSON text as JSON: 'a'PASSPASSPASS
Trying to consume bad JSON text as JSON: '['PASSPASSPASS
/fetch/api/request/request-disturbed.htmlOKOKOK
/fetch/api/request/request-disturbed.htmlOKOKOK
Request's body: initial stateFAILFAILFAIL
Request without body cannot be disturbedPASSFAILPASS
Check cloning a disturbed requestPASSPASSPASS
Input request used for creating new request became disturbed even if body is not usedFAILFAILFAIL
Check consuming a disturbed requestPASSPASSPASS
Request construction failure should not set "bodyUsed"PASSPASSPASS
/fetch/api/request/request-error.htmlOKOKOK
/fetch/api/request/request-error.htmlOKOKOK
RequestInit's window is not nullFAILFAILPASS
Input URL is not validPASSPASSPASS
Input URL has credentialsPASSPASSPASS
Request with cache mode: only-if-cached and fetch mode: same-originPASSPASSPASS
Request with cache mode: only-if-cached and fetch mode: corsFAILPASSPASS
Request with cache mode: only-if-cached and fetch mode: no-corsFAILPASSPASS
/fetch/api/request/request-headers.htmlOKOKOK
/fetch/api/request/request-headers.htmlOKOKOK
Adding valid request header "Content-Type: OK"PASSPASSPASS
Adding valid request header "Potato: OK"PASSPASSPASS
Adding valid request header "proxy: OK"PASSPASSPASS
Request should get its content-type from init headers if one is providedPASSPASSPASS
Testing request header creations with various objectsPASSPASSPASS
Testing empty Request Content-Type headerPASSPASSPASS
/fetch/api/request/request-idl.htmlOKOKOK
/fetch/api/request/request-idl.htmlOKOKOK
Request interface: existence and properties of interface objectPASSPASSPASS
Request interface object lengthPASSPASSPASS
Request interface object namePASSPASSPASS
Request interface: new Request("") must inherit property "formData" with the proper type (17)FAILPASSFAIL
Request interface: new Request("") must inherit property "json" with the proper type (18)PASSPASSPASS
Request interface: new Request("") must inherit property "text" with the proper type (19)PASSPASSPASS
/fetch/api/request/request-init-001.sub.htmlOKOKOK
/fetch/api/request/request-init-001.sub.htmlOKOKOK
Check method init value of GET and associated getterPASSPASSPASS
Check method init value of HEAD and associated getterPASSPASSPASS
Check method init value of POST and associated getterPASSPASSPASS
Check integrity init value of and associated getterPASSPASSPASS
Check integrity init value of AZERTYUIOP1234567890 and associated getterPASSPASSPASS
Check window init value of null and associated getterPASSPASSPASS
/fetch/api/request/request-init-002.htmlOKOKOK
/fetch/api/request/request-init-002.htmlOKOKOK
Initialize Request with headers valuesPASSPASSPASS
Initialize Request's body with undefinedPASSPASSPASS
Initialize Request's body with nullPASSPASSPASS
Initialize Request's body with multipart/form-dataPASSPASSFAIL
Initialize Request's body with text/plain;charset=UTF-8PASSPASSPASS
Initialize Request's body with application/x-www-form-urlencoded;charset=UTF-8PASSPASSPASS
/fetch/api/request/request-init-003.sub.htmlOKOKOK
/fetch/api/request/request-init-003.sub.htmlOKOKOK
Check request values when initialized from RequestFAILPASSPASS
Check request values when initialized from Request and init valuesFAILPASSPASS
Check request values when initialized from url stringFAILFAILFAIL
Check request values when initialized from url and init valuesFAILPASSPASS
/fetch/api/request/request-keepalive-quota.htmlOKOKOK
/fetch/api/request/request-keepalive-quota.htmlOKOKOK
A Keep-Alive fetch() with a small body should succeed.PASSPASSPASS
A Keep-Alive fetch() with a body at the Quota Limit should succeed.PASSPASSPASS
A Keep-Alive fetch() with a body over the Quota Limit should reject.FAILFAILFAIL
A Keep-Alive fetch() should return it's allocated Quota upon promise resolution.PASSPASSPASS
A Keep-Alive fetch() should return only it's allocated Quota upon promise resolution.PASSPASSPASS
A Keep-Alive fetch() should not be allowed if the Quota is used up.FAILFAILFAIL
/fetch/api/request/request-structure.htmlOKOKOK
/fetch/api/request/request-structure.htmlOKOKOK
Request has clone methodPASSPASSPASS
Request has arrayBuffer methodPASSPASSPASS
Request has blob methodPASSPASSPASS
Check redirect attributePASSPASSPASS
Check integrity attributePASSPASSPASS
Check bodyUsed attributePASSPASSPASS
/fetch/api/response/multi-globals/url-parsing.htmlOKOKOK
/fetch/api/response/multi-globals/url-parsing.htmlOKOKOK
should parse the redirect Location URL relative to the current settings objectPASSFAILPASS
/fetch/api/response/response-cancel-stream.htmlOKOKOK
/fetch/api/response/response-cancel-stream.htmlOKOKOK
Cancelling a starting blob Response streamPASSFAILPASS
Cancelling a loading blob Response streamPASSFAILPASS
Cancelling a closed blob Response streamPASSFAILPASS
Cancelling a starting Response streamPASSFAILPASS
Cancelling a loading Response streamPASSFAILPASS
Cancelling a closed Response streamPASSFAILPASS
/fetch/api/response/response-clone.htmlOKOKOK
/fetch/api/response/response-clone.htmlOKOKOK
Check Response's clone with default values, without bodyPASSPASSPASS
Check Response's clone has the expected attribute valuesPASSPASSPASS
Check orginal response's body after cloningPASSFAILPASS
Check response clone use structureClone for teed ReadableStreams (Float32Arraychunk)FAILFAILPASS
Check response clone use structureClone for teed ReadableStreams (Float64Arraychunk)FAILFAILPASS
Check response clone use structureClone for teed ReadableStreams (DataViewchunk)FAILFAILPASS
/fetch/api/response/response-consume-empty.htmlOKOKOK
/fetch/api/response/response-consume-empty.htmlOKOKOK
Consume response's body as textPASSFAILPASS
Consume response's body as blobPASSFAILPASS
Consume response's body as arrayBufferPASSFAILPASS
Consume empty URLSearchParams response body as textPASSPASSPASS
Consume empty FormData response body as textFAILFAILFAIL
Consume empty ArrayBuffer response body as textPASSPASSPASS
/fetch/api/response/response-consume-stream.htmlOKOKOK
/fetch/api/response/response-consume-stream.htmlOKOKOK
Read empty text response's body as readableStreamPASSFAILPASS
Read empty blob response's body as readableStreamPASSFAILPASS
Read blob response's body as readableStreamPASSFAILPASS
Read form data response's body as readableStreamFAILFAILFAIL
Getting an error Response streamPASSFAILPASS
Getting a redirect Response streamFAILFAILFAIL
/fetch/api/response/response-consume.htmlOKOKOK
/fetch/api/response/response-consume.htmlOKOKOK
Consume response's body: from text to textPASSPASSPASS
Consume response's body: from text to blobPASSPASSPASS
Consume response's body: from text to arrayBufferPASSPASSPASS
Consume response's body: from fetch to arrayBufferPASSPASSPASS
Consume response's body: from fetch without correct type to formData (error case)FAILPASSFAIL
Consume response's body: from multipart form data blob to formDataFAILPASSFAIL
/fetch/api/response/response-error.htmlOKOKOK
/fetch/api/response/response-error.htmlOKOKOK
Throws RangeError when responseInit's status is 0PASSPASSPASS
Throws RangeError when responseInit's status is 100PASSPASSPASS
Throws RangeError when responseInit's status is 199PASSPASSPASS
Throws TypeError when building a response with body and a body status of 204PASSPASSPASS
Throws TypeError when building a response with body and a body status of 205PASSPASSPASS
Throws TypeError when building a response with body and a body status of 304PASSPASSPASS
/fetch/api/response/response-idl.htmlOKOKOK
/fetch/api/response/response-idl.htmlOKOKOK
Response interface: existence and properties of interface objectPASSPASSPASS
Response interface object lengthPASSPASSPASS
Response interface object namePASSPASSPASS
Response interface: attribute okPASSPASSPASS
Response interface: attribute statusTextPASSPASSPASS
Response interface: attribute headersPASSPASSPASS
Response interface: attribute trailerFAILFAILFAIL
Response interface: operation clone()PASSPASSPASS
Response interface: attribute bodyPASSFAILPASS
Response interface: attribute bodyUsedPASSPASSPASS
Response interface: new Response() must inherit property "ok" with the proper type (5)PASSPASSPASS
Response interface: new Response() must inherit property "statusText" with the proper type (6)PASSPASSPASS
Response interface: new Response() must inherit property "headers" with the proper type (7)PASSPASSPASS
Response interface: new Response() must inherit property "clone" with the proper type (8)PASSPASSPASS
Response interface: new Response() must inherit property "body" with the proper type (9)PASSFAILPASS
Response interface: new Response() must inherit property "bodyUsed" with the proper type (10)PASSPASSPASS
Response interface: new Response() must inherit property "arrayBuffer" with the proper type (11)PASSPASSPASS
Response interface: new Response() must inherit property "blob" with the proper type (12)PASSPASSPASS
Response interface: new Response() must inherit property "formData" with the proper type (13)FAILPASSPASS
Response interface: new Response() must inherit property "json" with the proper type (14)PASSPASSPASS
Response interface: new Response() must inherit property "text" with the proper type (15)PASSPASSPASS
/fetch/api/response/response-init-001.htmlOKOKOK
Response interface: new Response() must inherit property "trailer" with the proper type (8)FAILFAILFAIL
Response interface: new Response() must inherit property "clone" with the proper type (9)PASSPASSPASS
Response interface: new Response() must inherit property "body" with the proper type (10)PASSFAILPASS
Response interface: new Response() must inherit property "bodyUsed" with the proper type (11)PASSPASSPASS
Response interface: new Response() must inherit property "arrayBuffer" with the proper type (12)PASSPASSPASS
Response interface: new Response() must inherit property "blob" with the proper type (13)PASSPASSPASS
Response interface: new Response() must inherit property "formData" with the proper type (14)FAILPASSPASS
Response interface: new Response() must inherit property "json" with the proper type (15)PASSPASSPASS
Response interface: new Response() must inherit property "text" with the proper type (16)PASSPASSPASS
/fetch/api/response/response-init-001.htmlOKOKOK
Check default value for type attributePASSPASSPASS
Check default value for url attributePASSPASSPASS
Check default value for ok attributePASSPASSPASS
Check default value for body attributePASSFAILPASS
Check status init values and associated getterPASSPASSPASS
Check statusText init values and associated getterPASSPASSPASS
/fetch/api/response/response-init-002.htmlOKOKOK
/fetch/api/response/response-init-002.htmlOKOKOK
Initialize Response with headers valuesPASSPASSPASS
Initialize Response's body with application/octet-binaryPASSPASSPASS
Initialize Response's body with multipart/form-dataPASSPASSFAIL
Initialize Response's body with text/plain;charset=UTF-8PASSPASSPASS
Read Response's body as readableStreamPASSFAILPASS
Testing empty Response Content-Type headerPASSPASSPASS
/fetch/api/response/response-static-error.htmlOKOKOK
/fetch/api/response/response-static-error.htmlOKOKOK
Check response returned by static method error()PASSFAILPASS
/fetch/api/response/response-static-redirect.htmlOKOKOK
/fetch/api/response/response-static-redirect.htmlOKOKOK
Check default redirect responsePASSPASSPASS
Check response returned by static method redirect(), status = 301PASSPASSPASS
Check response returned by static method redirect(), status = 302PASSPASSPASS
Check error returned when giving invalid status to redirect(), status = 309PASSPASSPASS
Check error returned when giving invalid status to redirect(), status = 400PASSPASSPASS
Check error returned when giving invalid status to redirect(), status = 500PASSPASSPASS
/fetch/api/response/response-stream-disturbed-1.htmlOKOKOK
/fetch/api/response/response-stream-disturbed-1.htmlOKOKOK
Getting blob after getting the Response body - not disturbed, not lockedPASSFAILPASS
Getting text after getting the Response body - not disturbed, not lockedPASSFAILPASS
Getting json after getting the Response body - not disturbed, not lockedPASSFAILPASS
Getting arrayBuffer after getting the Response body - not disturbed, not lockedPASSFAILPASS
/fetch/api/response/response-stream-disturbed-2.htmlOKOKOK
/fetch/api/response/response-stream-disturbed-2.htmlOKOKOK
Getting blob after getting a locked Response bodyPASSFAILPASS
Getting text after getting a locked Response bodyPASSFAILPASS
Getting json after getting a locked Response bodyPASSFAILPASS
Getting arrayBuffer after getting a locked Response bodyPASSFAILPASS
/fetch/api/response/response-stream-disturbed-3.htmlOKOKOK
/fetch/api/response/response-stream-disturbed-3.htmlOKOKOK
Getting blob after reading the Response bodyPASSFAILPASS
Getting text after reading the Response bodyPASSFAILPASS
Getting json after reading the Response bodyPASSFAILPASS
Getting arrayBuffer after reading the Response bodyPASSFAILPASS
/fetch/api/response/response-stream-disturbed-4.htmlOKOKOK
/fetch/api/response/response-stream-disturbed-4.htmlOKOKOK
Getting blob after cancelling the Response bodyPASSFAILPASS
Getting text after cancelling the Response bodyPASSFAILPASS
Getting json after cancelling the Response bodyPASSFAILPASS
Getting arrayBuffer after cancelling the Response bodyPASSFAILPASS
/fetch/api/response/response-stream-disturbed-5.htmlOKOKOK
/fetch/api/response/response-stream-disturbed-5.htmlOKOKOK
Getting a body reader after consuming as blobPASSPASSPASS
Getting a body reader after consuming as textPASSPASSPASS
Getting a body reader after consuming as jsonPASSPASSPASS
Getting a body reader after consuming as arrayBufferPASSPASSPASS
/fetch/nosniff/image.htmlOKOKOK
/fetch/api/response/response-trailer.htmlOKOKOK
trailer() testFAILFAILFAIL
/fetch/http-cache/304-update.htmlOKOKOK
HTTP cache updates returned headers from a Last-Modified 304.PASSPASSPASS
HTTP cache updates stored headers from a Last-Modified 304.PASSPASSPASS
HTTP cache updates returned headers from a ETag 304.PASSPASSPASS
HTTP cache updates stored headers from a ETag 304.PASSPASSPASS
/fetch/http-cache/cc-request.htmlOKOKOK
HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=0.PASSPASSPASS
HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=1.FAILPASSFAIL
HTTP cache doesn't use fresh response with Age header when request contains Cache-Control: max-age that is greater than remaining freshness.FAILPASSFAIL
HTTP cache does use aged stale response when request contains Cache-Control: max-stale that permits its use.FAILPASSPASS
HTTP cache does reuse stale response with Age header when request contains Cache-Control: max-stale that permits its use.FAILPASSPASS
HTTP cache doesn't reuse fresh response when request contains Cache-Control: min-fresh that wants it fresher.FAILPASSFAIL
HTTP cache doesn't reuse fresh response with Age header when request contains Cache-Control: min-fresh that wants it fresher.FAILPASSFAIL
HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-cache.PASSPASSPASS
HTTP cache validates fresh response with Last-Modified when request contains Cache-Control: no-cache.PASSPASSPASS
HTTP cache validates fresh response with ETag when request contains Cache-Control: no-cache.PASSPASSPASS
HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-store.FAILPASSFAIL
HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached.FAILFAILFAIL
/fetch/http-cache/freshness.htmlOKOKOK
HTTP cache reuses a response with a future Expires.PASSPASSPASS
HTTP cache does not reuse a response with a past Expires.PASSPASSPASS
HTTP cache does not reuse a response with a present Expires.PASSPASSPASS
HTTP cache does not reuse a response with an invalid Expires.PASSPASSPASS
HTTP cache reuses a response with positive Cache-Control: max-age.PASSPASSPASS
HTTP cache does not reuse a response with Cache-Control: max-age=0.PASSPASSPASS
HTTP cache reuses a response with positive Cache-Control: max-age and a past Expires.PASSPASSPASS
HTTP cache reuses a response with positive Cache-Control: max-age and an invalid Expires.PASSPASSPASS
HTTP cache does not reuse a response with Cache-Control: max-age=0 and a future Expires.PASSPASSPASS
HTTP cache does not prefer Cache-Control: s-maxage over Cache-Control: max-age.PASSPASSPASS
HTTP cache does not reuse a response when the Age header is greater than its freshness lifetime.PASSFAILPASS
HTTP cache does not store a response with Cache-Control: no-store.PASSPASSPASS
HTTP cache does not store a response with Cache-Control: no-store, even with max-age and Expires.PASSPASSPASS
HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use.PASSPASSPASS
HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use, even with max-age and Expires.PASSPASSPASS
/fetch/http-cache/heuristic.htmlOKOKOK
HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present.FAILFAILFAIL
HTTP cache does not reuse an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is not present.PASSPASSPASS
HTTP cache reuses a 200 OK response with Last-Modified based upon heuristic freshness.PASSPASSPASS
HTTP cache reuses a 203 Non-Authoritative Information response with Last-Modified based upon heuristic freshness.PASSPASSPASS
HTTP cache reuses a 204 No Content response with Last-Modified based upon heuristic freshness.FAILFAILPASS
HTTP cache reuses a 404 Not Found response with Last-Modified based upon heuristic freshness.FAILFAILPASS
HTTP cache reuses a 405 Method Not Allowed response with Last-Modified based upon heuristic freshness.FAILFAILPASS
HTTP cache reuses a 410 Gone response with Last-Modified based upon heuristic freshness.PASSPASSPASS
HTTP cache reuses a 414 URI Too Long response with Last-Modified based upon heuristic freshness.FAILFAILPASS
HTTP cache reuses a 501 Not Implemented response with Last-Modified based upon heuristic freshness.FAILFAILPASS
HTTP cache does not use a 201 Created response with Last-Modified based upon heuristic freshness.PASSPASSPASS
HTTP cache does not use a 202 Accepted response with Last-Modified based upon heuristic freshness.PASSPASSPASS
HTTP cache does not use a 403 Forbidden response with Last-Modified based upon heuristic freshness.PASSPASSPASS
HTTP cache does not use a 502 Bad Gateway response with Last-Modified based upon heuristic freshness.PASSPASSPASS
HTTP cache does not use a 503 Service Unavailable response with Last-Modified based upon heuristic freshness.PASSPASSPASS
HTTP cache does not use a 504 Gateway Timeout response with Last-Modified based upon heuristic freshness.PASSPASSPASS
/fetch/http-cache/invalidate.htmlOKOKOK
HTTP cache invalidates after a successful response from a POSTPASSPASSPASS
HTTP cache does not invalidate after a failed response from an unsafe requestPASSFAILFAIL
HTTP cache invalidates after a successful response from a PUTPASSPASSPASS
HTTP cache invalidates after a successful response from a DELETEPASSPASSPASS
HTTP cache invalidates after a successful response from an unknown methodFAILPASSPASS
HTTP cache invalidates Location URL after a successful response from a POSTFAILPASSFAIL
HTTP cache does not invalidate Location URL after a failed response from an unsafe requestPASSFAILPASS
HTTP cache invalidates Location URL after a successful response from a PUTFAILPASSFAIL
HTTP cache invalidates Location URL after a successful response from a DELETEFAILPASSFAIL
HTTP cache invalidates Location URL after a successful response from an unknown methodFAILPASSFAIL
HTTP cache invalidates Content-Location URL after a successful response from a POSTFAILPASSFAIL
HTTP cache does not invalidate Content-Location URL after a failed response from an unsafe requestPASSFAILPASS
HTTP cache invalidates Content-Location URL after a successful response from a PUTFAILPASSFAIL
HTTP cache invalidates Content-Location URL after a successful response from a DELETEFAILPASSFAIL
HTTP cache invalidates Content-Location URL after a successful response from an unknown methodFAILPASSFAIL
/fetch/http-cache/partial.htmlOKOKOK
HTTP cache stores partial content and reuses it.FAILFAILFAIL
HTTP cache stores complete response and serves smaller ranges from it.FAILFAILFAIL
HTTP cache stores partial response and serves smaller ranges from it.FAILFAILFAIL
HTTP cache stores partial content and completes it.FAILFAILFAIL
/fetch/http-cache/status.htmlOKOKOK
HTTP cache goes to the network if it has a stale 200 response.PASSPASSPASS
HTTP cache avoids going to the network if it has a fresh 200 response.PASSPASSPASS
HTTP cache goes to the network if it has a stale 203 response.PASSPASSPASS
HTTP cache avoids going to the network if it has a fresh 203 response.PASSPASSPASS
HTTP cache goes to the network if it has a stale 204 response.PASSPASSPASS
HTTP cache avoids going to the network if it has a fresh 204 response.PASSFAILPASS
HTTP cache goes to the network if it has a stale 299 response.PASSPASSPASS
HTTP cache avoids going to the network if it has a fresh 299 response.PASSFAILFAIL
HTTP cache goes to the network if it has a stale 400 response.PASSPASSPASS
HTTP cache avoids going to the network if it has a fresh 400 response.PASSFAILFAIL
HTTP cache goes to the network if it has a stale 404 response.PASSPASSPASS
HTTP cache avoids going to the network if it has a fresh 404 response.PASSFAILPASS
HTTP cache goes to the network if it has a stale 410 response.PASSPASSPASS
HTTP cache avoids going to the network if it has a fresh 410 response.PASSPASSPASS
HTTP cache goes to the network if it has a stale 499 response.PASSPASSPASS
HTTP cache avoids going to the network if it has a fresh 499 response.PASSFAILFAIL
HTTP cache goes to the network if it has a stale 500 response.PASSPASSPASS
HTTP cache avoids going to the network if it has a fresh 500 response.PASSFAILFAIL
HTTP cache goes to the network if it has a stale 502 response.PASSPASSPASS
HTTP cache avoids going to the network if it has a fresh 502 response.PASSFAILFAIL
HTTP cache goes to the network if it has a stale 503 response.PASSPASSPASS
HTTP cache avoids going to the network if it has a fresh 503 response.PASSFAILFAIL
HTTP cache goes to the network if it has a stale 504 response.PASSPASSPASS
HTTP cache avoids going to the network if it has a fresh 504 response.PASSFAILFAIL
HTTP cache goes to the network if it has a stale 599 response.PASSPASSPASS
HTTP cache avoids going to the network if it has a fresh 599 response.PASSFAILFAIL
/fetch/http-cache/vary.htmlOKOKOK
HTTP cache reuses Vary response when request matches.PASSPASSPASS
HTTP cache doesn't use Vary response when request doesn't match.PASSPASSPASS
HTTP cache doesn't use Vary response when request omits variant header.PASSPASSPASS
HTTP cache doesn't invalidate existing Vary response.FAILFAILFAIL
HTTP cache doesn't pay attention to headers not listed in Vary.PASSPASSPASS
HTTP cache reuses two-way Vary response when request matches.PASSPASSPASS
HTTP cache doesn't use two-way Vary response when request doesn't match.PASSPASSPASS
HTTP cache doesn't use two-way Vary response when request omits variant header.PASSPASSPASS
HTTP cache reuses three-way Vary response when request matches.PASSPASSPASS
HTTP cache doesn't use three-way Vary response when request doesn't match.PASSPASSPASS
HTTP cache doesn't use three-way Vary response when request omits variant header.PASSPASSPASS
/fetch/nosniff/image.htmlOKOKOK
URL query: PASSPASSPASS
URL query: ?type=PASSPASSPASS
URL query: ?type=xPASSPASSPASS
URL query: ?type=image/gifPASSPASSPASS
URL query: ?type=image/pngPASSPASSPASS
URL query: ?type=image/png;blahPASSPASSPASS
/fetch/nosniff/importscripts.htmlOKOKOK
/fetch/nosniff/importscripts.htmlOKOKOK
Test importScripts()PASSPASSFAIL
/fetch/nosniff/parsing-nosniff.htmlOKOKOK
/fetch/nosniff/parsing-nosniff.htmlOKOKOK
URL query: firstFAILPASSFAIL
URL query: uppercasePASSPASSFAIL
URL query: lastPASSPASSPASS
URL query: quotedPASSPASSPASS
URL query: quoted-singlePASSPASSPASS
URL query: no-xPASSPASSPASS
/fetch/nosniff/script.htmlOKOKOK
/fetch/nosniff/script.htmlOKOKOK
URL query: PASSPASSFAIL
URL query: ?type=PASSPASSFAIL
URL query: ?type=xPASSPASSFAIL
URL query: ?type=text/javascriptPASSPASSPASS
URL query: ?type=text/ecmascriptPASSPASSPASS
URL query: ?type=text/ecmascript;blahPASSPASSPASS
/fetch/nosniff/stylesheet.htmlOKOKOK
/fetch/nosniff/stylesheet.htmlOKOKOK
URL query: FAILPASSFAIL
URL query: ?type=FAILPASSFAIL
URL query: ?type=xFAILPASSFAIL
URL query: ?type=x/xFAILPASSFAIL
URL query: ?type=text/cssPASSPASSPASS
URL query: ?type=text/css;blahPASSPASSPASS
/fetch/nosniff/worker.htmlOKOKOK
/fetch/nosniff/worker.htmlOKOKOK
URL query: PASSPASSFAIL
URL query: ?type=PASSPASSFAIL
URL query: ?type=xPASSPASSFAIL
- + - + - + - + - + - + - + + + + + - + - + - + - + - + - + @@ -104,7 +124,7 @@

Test Files

- + @@ -115,7 +135,13 @@

Test Files

- + + + + + + + @@ -143,7 +169,7 @@

Test Files

- + @@ -171,34 +197,62 @@

Test Files

- + - + + + + + + + + + + + + + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + +
TestCh59FF55Sa10
/fetch/api/basic/mode-no-cors-worker.html (1/3, 33.33%, 0.05% of total)OKOKOK
/fetch/api/basic/mode-no-cors-worker.html (1/4, 25.00%, 0.05% of total)OKOKOK
Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with no-cors modeFAILFAILFAIL
/fetch/api/basic/mode-no-cors.html (1/3, 33.33%, 0.05% of total)OKOKOK
/fetch/api/basic/mode-no-cors.html (1/4, 25.00%, 0.05% of total)OKOKOK
Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with no-cors modeFAILFAILFAIL
/fetch/api/basic/request-upload-worker.html (6/17, 35.29%, 0.31% of total)OKOKOK
/fetch/api/basic/request-upload-worker.html (6/17, 35.29%, 0.29% of total)OKOKOK
Fetch with POST with ReadableStreamFAILFAILFAIL
Fetch with POST with ReadableStream containing StringFAILFAILFAIL
Fetch with POST with ReadableStream containing nullFAILFAILFAIL
Fetch with POST with ReadableStream containing numberFAILFAILFAIL
Fetch with POST with ReadableStream containing ArrayBufferFAILFAILFAIL
Fetch with POST with ReadableStream containing BlobFAILFAILFAIL
/fetch/api/basic/request-upload.html (6/17, 35.29%, 0.31% of total)OKOKOK
/fetch/api/basic/request-upload.html (6/17, 35.29%, 0.29% of total)OKOKOK
Fetch with POST with ReadableStreamFAILFAILFAIL
Fetch with POST with ReadableStream containing StringFAILFAILFAIL
Fetch with POST with ReadableStream containing nullFAILFAILFAIL
Fetch with POST with ReadableStream containing numberFAILFAILFAIL
Fetch with POST with ReadableStream containing ArrayBufferFAILFAILFAIL
Fetch with POST with ReadableStream containing BlobFAILFAILFAIL
/fetch/api/cors/cors-basic-worker.html (4/15, 26.67%, 0.21% of total)OKOKOK
/fetch/api/cors/cors-basic-worker.html (4/15, 26.67%, 0.19% of total)OKOKOK
Same domain different protocol different port [no-cors mode]FAILFAILFAIL
Same domain different protocol different port [cors mode]FAILFAILFAIL
Cross domain different protocol [no-cors mode]FAILFAILFAIL
Cross domain different protocol [cors mode]FAILFAILFAIL
/fetch/api/cors/cors-basic.html (4/15, 26.67%, 0.21% of total)OKOKOK
/fetch/api/cors/cors-basic.html (4/15, 26.67%, 0.19% of total)OKOKOK
Same domain different protocol different port [no-cors mode]FAILFAILFAIL
Same domain different protocol different port [cors mode]FAILFAILFAIL
Cross domain different protocol [no-cors mode]FAILFAILFAIL
Cross domain different protocol [cors mode]FAILFAILFAIL
/fetch/api/cors/cors-multiple-origins-worker.html (5/6, 83.33%, 0.26% of total)OKOKOK
/fetch/api/cors/cors-expose-star-worker.html (1/2, 50.00%, 0.05% of total)OKOKOK
Basic Access-Control-Expose-Headers: * supportFAILFAILFAIL
/fetch/api/cors/cors-expose-star.html (1/2, 50.00%, 0.05% of total)OKOKOK
Basic Access-Control-Expose-Headers: * supportFAILFAILFAIL
/fetch/api/cors/cors-multiple-origins-worker.html (5/6, 83.33%, 0.24% of total)OKOKOK
3 origins allowed, match the 3rd (http://web-platform.test:8000)FAILFAILFAIL
3 origins allowed, match the 3rd ("*")FAILFAILFAIL
3 origins allowed, match twice (http://web-platform.test:8000)FAILFAILFAIL
3 origins allowed, match twice ("*")FAILFAILFAIL
3 origins allowed, match twice ("*" and http://web-platform.test:8000)FAILFAILFAIL
/fetch/api/cors/cors-multiple-origins.html (5/6, 83.33%, 0.26% of total)OKOKOK
/fetch/api/cors/cors-multiple-origins.html (5/6, 83.33%, 0.24% of total)OKOKOK
3 origins allowed, match the 3rd (http://web-platform.test:8000)FAILFAILFAIL
3 origins allowed, match the 3rd ("*")FAILFAILFAIL
3 origins allowed, match twice (http://web-platform.test:8000)FAILFAILFAIL
3 origins allowed, match twice ("*")FAILFAILFAIL
3 origins allowed, match twice ("*" and http://web-platform.test:8000)FAILFAILFAIL
/fetch/api/cors/cors-no-preflight-worker.html (2/15, 13.33%, 0.10% of total)OKOKOK
/fetch/api/cors/cors-no-preflight-worker.html (2/15, 13.33%, 0.10% of total)OKOKOK
Cross domain different protocol [GET]FAILFAILFAIL
Same domain different protocol different port [GET]FAILFAILFAIL
/fetch/api/cors/cors-no-preflight.html (2/15, 13.33%, 0.10% of total)OKOKOK
/fetch/api/cors/cors-no-preflight.html (2/15, 13.33%, 0.10% of total)OKOKOK
Cross domain different protocol [GET]FAILFAILFAIL
Same domain different protocol different port [GET]FAILFAILFAIL
/fetch/api/cors/cors-origin-worker.html (2/17, 11.76%, 0.10% of total)OKOKOK
/fetch/api/cors/cors-origin-worker.html (2/17, 11.76%, 0.10% of total)OKOKOK
Cross domain different protocol [origin OK]FAILFAILFAIL
Same domain different protocol different port [origin OK]FAILFAILFAIL
/fetch/api/cors/cors-origin.html (2/17, 11.76%, 0.10% of total)OKOKOK
/fetch/api/cors/cors-origin.html (2/17, 11.76%, 0.10% of total)OKOKOK
Cross domain different protocol [origin OK]FAILFAILFAIL
Same domain different protocol different port [origin OK]FAILFAILFAIL
/fetch/api/cors/cors-preflight-redirect-worker.html (10/10, 100.00%, 0.52% of total)OKOKOK
/fetch/api/cors/cors-preflight-redirect-worker.html (10/10, 100.00%, 0.48% of total)OKOKOK
Redirection 301 on preflight failedFAILFAILFAIL
Redirection 301 after preflight failedFAILFAILFAIL
Redirection 302 on preflight failedFAILFAILFAIL
Redirection 307 after preflight failedFAILFAILFAIL
Redirection 308 on preflight failedFAILFAILFAIL
Redirection 308 after preflight failedFAILFAILFAIL
/fetch/api/cors/cors-preflight-redirect.html (10/10, 100.00%, 0.52% of total)OKOKOK
/fetch/api/cors/cors-preflight-redirect.html (10/10, 100.00%, 0.48% of total)OKOKOK
Redirection 301 on preflight failedFAILFAILFAIL
Redirection 301 after preflight failedFAILFAILFAIL
Redirection 302 on preflight failedFAILFAILFAIL
Redirection 307 after preflight failedFAILFAILFAIL
Redirection 308 on preflight failedFAILFAILFAIL
Redirection 308 after preflight failedFAILFAILFAIL
/fetch/api/cors/cors-preflight-status-worker.html (27/27, 100.00%, 1.41% of total)OKOKOK
/fetch/api/cors/cors-preflight-star-worker.html (2/8, 25.00%, 0.10% of total)OKOKOK
CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test)FAILFAILFAIL
CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *)FAILFAILFAIL
/fetch/api/cors/cors-preflight-star.html (2/8, 25.00%, 0.10% of total)OKOKOK
CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test)FAILFAILFAIL
CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *)FAILFAILFAIL
/fetch/api/cors/cors-preflight-status-worker.html (27/27, 100.00%, 1.31% of total)OKOKOK
Preflight answered with status 200FAILFAILFAIL
Preflight answered with status 201FAILFAILFAIL
Preflight answered with status 202FAILFAILFAIL
Preflight answered with status 503FAILFAILFAIL
Preflight answered with status 504FAILFAILFAIL
Preflight answered with status 505FAILFAILFAIL
/fetch/api/cors/cors-preflight-status.html (27/27, 100.00%, 1.41% of total)OKOKOK
/fetch/api/cors/cors-preflight-status.html (27/27, 100.00%, 1.31% of total)OKOKOK
Preflight answered with status 200FAILFAILFAIL
Preflight answered with status 201FAILFAILFAIL
Preflight answered with status 202FAILFAILFAIL
Preflight answered with status 503FAILFAILFAIL
Preflight answered with status 504FAILFAILFAIL
Preflight answered with status 505FAILFAILFAIL
/fetch/api/headers/headers-basic.html (1/19, 5.26%, 0.05% of total)OKOKOK
/fetch/api/headers/headers-basic.html (1/19, 5.26%, 0.05% of total)OKOKOK
Create headers with existing headers with custom iteratorFAILFAILFAIL
/fetch/api/request/request-consume-empty.html (2/12, 16.67%, 0.10% of total)OKOKOK
/fetch/api/policies/referrer-no-referrer-service-worker.https.html (1/1, 100.00%, 0.05% of total)OKOKOK
Fetch in service worker: referrer with no-referrer policyFAILFAILFAIL
/fetch/api/policies/referrer-origin-service-worker.https.html (1/1, 100.00%, 0.05% of total)OKOKOK
Fetch in service worker: referrer with no-referrer policyFAILFAILFAIL
/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https.html (1/1, 100.00%, 0.05% of total)OKOKOK
Fetch in service worker: referrer with origin-when-cross-origin policyFAILFAILFAIL
/fetch/api/policies/referrer-origin-when-cross-origin-worker.html (1/1, 100.00%, 0.05% of total)OKOKOK
Request's referrer is originFAILFAILFAIL
/fetch/api/policies/referrer-origin-when-cross-origin.html (1/1, 100.00%, 0.05% of total)OKOKOK
Request's referrer is originFAILFAILFAIL
/fetch/api/policies/referrer-unsafe-url-service-worker.https.html (1/1, 100.00%, 0.05% of total)OKOKOK
Fetch in worker: referrer with unsafe-url policyFAILFAILFAIL
/fetch/api/request/request-consume-empty.html (2/12, 16.67%, 0.10% of total)OKOKOK
Consume request's body as formDataFAILFAILFAIL
Consume empty FormData request body as textFAILFAILFAIL
/fetch/api/request/request-disturbed.html (3/8, 37.50%, 0.16% of total)OKOKOK
/fetch/api/request/request-disturbed.html (3/8, 37.50%, 0.15% of total)OKOKOK
Request's body: initial stateFAILFAILFAIL
Input request used for creating new request became disturbedFAILFAILFAIL
Input request used for creating new request became disturbed even if body is not usedFAILFAILFAIL
/fetch/api/request/request-idl.html (2/47, 4.26%, 0.10% of total)OKOKOK
/fetch/api/request/request-idl.html (2/47, 4.26%, 0.10% of total)OKOKOK
Request interface: attribute bodyFAILFAILFAIL
Request interface: new Request("") must inherit property "body" with the proper type (13)FAILFAILFAIL
/fetch/api/request/request-init-003.sub.html (1/4, 25.00%, 0.05% of total)OKOKOK
/fetch/api/request/request-init-003.sub.html (1/4, 25.00%, 0.05% of total)OKOKOK
Check request values when initialized from url stringFAILFAILFAIL
/fetch/api/request/request-keepalive-quota.html (2/6, 33.33%, 0.10% of total)OKOKOK
/fetch/api/request/request-keepalive-quota.html (2/6, 33.33%, 0.10% of total)OKOKOK
A Keep-Alive fetch() with a body over the Quota Limit should reject.FAILFAILFAIL
A Keep-Alive fetch() should not be allowed if the Quota is used up.FAILFAILFAIL
/fetch/api/response/response-consume-empty.html (2/12, 16.67%, 0.10% of total)OKOKOK
/fetch/api/response/response-consume-empty.html (2/12, 16.67%, 0.10% of total)OKOKOK
Consume response's body as formDataFAILFAILFAIL
Consume empty FormData response body as textFAILFAILFAIL
/fetch/api/response/response-consume-stream.html (2/9, 22.22%, 0.10% of total)OKOKOK
/fetch/api/response/response-consume-stream.html (2/9, 22.22%, 0.10% of total)OKOKOK
Read form data response's body as readableStreamFAILFAILFAIL
Getting a redirect Response streamFAILFAILFAIL
/fetch/api/response/response-consume.html (4/39, 10.26%, 0.21% of total)OKOKOK
/fetch/api/response/response-consume.html (4/39, 10.26%, 0.19% of total)OKOKOK
Consume response's body: from stream with correct multipart type to formDataFAILFAILFAIL
Consume response's body: from stream without correct multipart type to formData (error case)FAILFAILFAIL
Consume response's body: from stream with correct urlencoded type to formDataFAILFAILFAIL
Consume response's body: from stream without correct urlencoded type to formData (error case)FAILFAILFAIL
/fetch/api/response/response-idl.html (2/42, 4.76%, 0.10% of total)OKOKOK
Response interface: attribute trailerFAILFAILFAIL
Response interface: new Response() must inherit property "trailer" with the proper type (8)FAILFAILFAIL
/fetch/api/response/response-trailer.html (1/1, 100.00%, 0.05% of total)OKOKOK
trailer() testFAILFAILFAIL
/fetch/http-cache/cc-request.html (1/12, 8.33%, 0.05% of total)OKOKOK
HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached.FAILFAILFAIL
/fetch/http-cache/heuristic.html (1/16, 6.25%, 0.05% of total)OKOKOK
HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present.FAILFAILFAIL
/fetch/http-cache/partial.html (4/4, 100.00%, 0.19% of total)OKOKOK
HTTP cache stores partial content and reuses it.FAILFAILFAIL
HTTP cache stores complete response and serves smaller ranges from it.FAILFAILFAIL
HTTP cache stores partial response and serves smaller ranges from it.FAILFAILFAIL
HTTP cache stores partial content and completes it.FAILFAILFAIL
/fetch/http-cache/vary.html (1/11, 9.09%, 0.05% of total)OKOKOK
HTTP cache doesn't invalidate existing Vary response.FAILFAILFAIL
diff --git a/fetch/consolidated.json b/fetch/consolidated.json index 14d1fb1..6f12f88 100644 --- a/fetch/consolidated.json +++ b/fetch/consolidated.json @@ -635,28 +635,14 @@ "FAIL": 3 } }, - "Fetch http://web-platform.test:64230/fetch/api/resources/top.txt with no-cors mode": { - "byUA": { - "Ch59": "PASS" - }, - "totals": { - "PASS": 1 - } - }, - "Fetch http://web-platform.test:63121/fetch/api/resources/top.txt with no-cors mode": { - "byUA": { - "FF55": "PASS" - }, - "totals": { - "PASS": 1 - } - }, - "Fetch http://web-platform.test:58389/fetch/api/resources/top.txt with no-cors mode": { + "Fetch http://web-platform.test:54706/fetch/api/resources/top.txt with no-cors mode": { "byUA": { + "Ch59": "PASS", + "FF55": "PASS", "Sa10": "PASS" }, "totals": { - "PASS": 1 + "PASS": 3 } } } @@ -701,28 +687,14 @@ "FAIL": 3 } }, - "Fetch http://web-platform.test:64230/fetch/api/resources/top.txt with no-cors mode": { - "byUA": { - "Ch59": "PASS" - }, - "totals": { - "PASS": 1 - } - }, - "Fetch http://web-platform.test:63121/fetch/api/resources/top.txt with no-cors mode": { - "byUA": { - "FF55": "PASS" - }, - "totals": { - "PASS": 1 - } - }, - "Fetch http://web-platform.test:58389/fetch/api/resources/top.txt with no-cors mode": { + "Fetch http://web-platform.test:54706/fetch/api/resources/top.txt with no-cors mode": { "byUA": { + "Ch59": "PASS", + "FF55": "PASS", "Sa10": "PASS" }, "totals": { - "PASS": 1 + "PASS": 3 } } } @@ -2128,6 +2100,70 @@ } } }, + "/fetch/api/basic/request-referrer-redirected-worker.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "about:client referrer": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "url referrer": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + } + } + }, + "/fetch/api/basic/request-referrer-worker.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "about:client referrer": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "url referrer": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + } + } + }, "/fetch/api/basic/request-referrer.html": { "byUA": { "Ch59": "OK", @@ -2138,7 +2174,7 @@ "OK": 3 }, "subtests": { - "Fetch: fetch() respects Request referrer value": { + "about:client referrer": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -2148,7 +2184,7 @@ "PASS": 3 } }, - "Fetch: fetch() respects Request referrer value 1": { + "url referrer": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -3004,24 +3040,22 @@ }, "Fetching data:text/plain;base64,cmVzcG9uc2UncyBib[...] is OK": { "byUA": { - "Ch59": "FAIL", + "Ch59": "PASS", "FF55": "PASS", "Sa10": "PASS" }, "totals": { - "FAIL": 1, - "PASS": 2 + "PASS": 3 } }, "Fetching data:image/png;base64,cmVzcG9uc2UncyBib2[...] is OK": { "byUA": { - "Ch59": "FAIL", + "Ch59": "PASS", "FF55": "PASS", "Sa10": "PASS" }, "totals": { - "FAIL": 1, - "PASS": 2 + "PASS": 3 } }, "Fetching [POST] data:,response%27s%20body is OK": { @@ -3099,24 +3133,22 @@ }, "Fetching data:text/plain;base64,cmVzcG9uc2UncyBib[...] is OK": { "byUA": { - "Ch59": "FAIL", + "Ch59": "PASS", "FF55": "PASS", "Sa10": "PASS" }, "totals": { - "FAIL": 1, - "PASS": 2 + "PASS": 3 } }, "Fetching data:image/png;base64,cmVzcG9uc2UncyBib2[...] is OK": { "byUA": { - "Ch59": "FAIL", + "Ch59": "PASS", "FF55": "PASS", "Sa10": "PASS" }, "totals": { - "FAIL": 1, - "PASS": 2 + "PASS": 3 } }, "Fetching [POST] data:,response%27s%20body is OK": { @@ -4322,6 +4354,70 @@ } } }, + "/fetch/api/cors/cors-expose-star-worker.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "Basic Access-Control-Expose-Headers: * support": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "Cannot use * for credentialed fetches": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + } + } + }, + "/fetch/api/cors/cors-expose-star.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "Basic Access-Control-Expose-Headers: * support": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "Cannot use * for credentialed fetches": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + } + } + }, "/fetch/api/cors/cors-filtering-worker.html": { "byUA": { "Ch59": "OK", @@ -6006,7 +6102,7 @@ } } }, - "/fetch/api/cors/cors-preflight-status-worker.html": { + "/fetch/api/cors/cors-preflight-star-worker.html": { "byUA": { "Ch59": "OK", "FF55": "OK", @@ -6016,17 +6112,17 @@ "OK": 3 }, "subtests": { - "Preflight answered with status 200": { + "CORS that succeeds with credentials: false; method: GET (allowed: get); header: X-Test,1 (allowed: x-test)": { "byUA": { - "Ch59": "FAIL", - "FF55": "FAIL", - "Sa10": "FAIL" + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" }, "totals": { - "FAIL": 3 + "PASS": 3 } }, - "Preflight answered with status 201": { + "CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test)": { "byUA": { "Ch59": "FAIL", "FF55": "FAIL", @@ -6036,7 +6132,7 @@ "FAIL": 3 } }, - "Preflight answered with status 202": { + "CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *)": { "byUA": { "Ch59": "FAIL", "FF55": "FAIL", @@ -6046,67 +6142,79 @@ "FAIL": 3 } }, - "Preflight answered with status 203": { + "CORS that fails with credentials: true; method: OK (allowed: *); header: X-Test,1 (allowed: *)": { "byUA": { - "Ch59": "FAIL", - "FF55": "FAIL", - "Sa10": "FAIL" + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" }, "totals": { - "FAIL": 3 + "PASS": 3 } }, - "Preflight answered with status 204": { + "CORS that fails with credentials: true; method: PUT (allowed: *); header: undefined (allowed: )": { "byUA": { - "Ch59": "FAIL", - "FF55": "FAIL", - "Sa10": "FAIL" + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" }, "totals": { - "FAIL": 3 + "PASS": 3 } }, - "Preflight answered with status 205": { + "CORS that fails with credentials: true; method: PUT (allowed: put); header: undefined (allowed: *)": { "byUA": { - "Ch59": "FAIL", - "FF55": "FAIL", - "Sa10": "FAIL" + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" }, "totals": { - "FAIL": 3 + "PASS": 3 } }, - "Preflight answered with status 206": { + "CORS that fails with credentials: true; method: GET (allowed: get); header: X-Test,1 (allowed: *)": { "byUA": { - "Ch59": "FAIL", - "FF55": "FAIL", - "Sa10": "FAIL" + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" }, "totals": { - "FAIL": 3 + "PASS": 3 } }, - "Preflight answered with status 300": { + "CORS that fails with credentials: true; method: GET (allowed: *); header: X-Test,1 (allowed: *)": { "byUA": { - "Ch59": "FAIL", - "FF55": "FAIL", - "Sa10": "FAIL" + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" }, "totals": { - "FAIL": 3 + "PASS": 3 } - }, - "Preflight answered with status 301": { + } + } + }, + "/fetch/api/cors/cors-preflight-star.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "CORS that succeeds with credentials: false; method: GET (allowed: get); header: X-Test,1 (allowed: x-test)": { "byUA": { - "Ch59": "FAIL", - "FF55": "FAIL", - "Sa10": "FAIL" + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" }, "totals": { - "FAIL": 3 + "PASS": 3 } }, - "Preflight answered with status 302": { + "CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test)": { "byUA": { "Ch59": "FAIL", "FF55": "FAIL", @@ -6116,7 +6224,7 @@ "FAIL": 3 } }, - "Preflight answered with status 303": { + "CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *)": { "byUA": { "Ch59": "FAIL", "FF55": "FAIL", @@ -6126,12 +6234,184 @@ "FAIL": 3 } }, - "Preflight answered with status 304": { + "CORS that fails with credentials: true; method: OK (allowed: *); header: X-Test,1 (allowed: *)": { "byUA": { - "Ch59": "FAIL", - "FF55": "FAIL", - "Sa10": "FAIL" - }, + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "CORS that fails with credentials: true; method: PUT (allowed: *); header: undefined (allowed: )": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "CORS that fails with credentials: true; method: PUT (allowed: put); header: undefined (allowed: *)": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "CORS that fails with credentials: true; method: GET (allowed: get); header: X-Test,1 (allowed: *)": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "CORS that fails with credentials: true; method: GET (allowed: *); header: X-Test,1 (allowed: *)": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + } + } + }, + "/fetch/api/cors/cors-preflight-status-worker.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "Preflight answered with status 200": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "Preflight answered with status 201": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "Preflight answered with status 202": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "Preflight answered with status 203": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "Preflight answered with status 204": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "Preflight answered with status 205": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "Preflight answered with status 206": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "Preflight answered with status 300": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "Preflight answered with status 301": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "Preflight answered with status 302": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "Preflight answered with status 303": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "Preflight answered with status 304": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, "totals": { "FAIL": 3 } @@ -6719,6 +6999,16 @@ "totals": { "PASS": 3 } + }, + "CORS [PUT] [only safe headers], server allows": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } } } }, @@ -6871,6 +7161,16 @@ "totals": { "PASS": 3 } + }, + "CORS [PUT] [only safe headers], server allows": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } } } }, @@ -6884,7 +7184,7 @@ "OK": 3 }, "subtests": { - "Redirect 301 from same origin to remote with user and password": { + "Redirect 301 from same origin to remote without user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -6894,117 +7194,139 @@ "PASS": 3 } }, + "Redirect 301 from same origin to remote with user and password": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 2, + "FAIL": 1 + } + }, "Redirect 301 from same origin to remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from same origin to remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to same origin with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to same origin with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to same origin with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to same remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to same remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to same remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to another remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to another remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to another remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 - } + "PASS": 2, + "FAIL": 1 + } }, - "Redirect 302 from same origin to remote with user and password": { + "Redirect 302 from same origin to remote without user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -7014,107 +7336,139 @@ "PASS": 3 } }, + "Redirect 302 from same origin to remote with user and password": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 2, + "FAIL": 1 + } + }, "Redirect 302 from same origin to remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from same origin to remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to same origin with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to same origin with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to same origin with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to same remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to same remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to same remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to another remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to another remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to another remote with password": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 2, + "FAIL": 1 + } + }, + "Redirect 303 from same origin to remote without user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -7128,113 +7482,135 @@ "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from same origin to remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from same origin to remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to same origin with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to same origin with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to same origin with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to same remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to same remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to same remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to another remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to another remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to another remote with password": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 2, + "FAIL": 1 + } + }, + "Redirect 307 from same origin to remote without user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -7248,113 +7624,135 @@ "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from same origin to remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from same origin to remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to same origin with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to same origin with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to same origin with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to same remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to same remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to same remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to another remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to another remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to another remote with password": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 2, + "FAIL": 1 + } + }, + "Redirect 308 from same origin to remote without user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -7368,120 +7766,132 @@ "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from same origin to remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from same origin to remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to same origin with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to same origin with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to same origin with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to same remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to same remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to same remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to another remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to another remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to another remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } } } @@ -7496,7 +7906,7 @@ "OK": 3 }, "subtests": { - "Redirect 301 from same origin to remote with user and password": { + "Redirect 301 from same origin to remote without user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -7506,107 +7916,139 @@ "PASS": 3 } }, + "Redirect 301 from same origin to remote with user and password": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 2, + "FAIL": 1 + } + }, "Redirect 301 from same origin to remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from same origin to remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to same origin with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to same origin with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to same origin with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to same remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to same remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to same remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to another remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to another remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 301 from remote to another remote with password": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 2, + "FAIL": 1 + } + }, + "Redirect 302 from same origin to remote without user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -7620,113 +8062,135 @@ "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from same origin to remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from same origin to remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to same origin with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to same origin with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to same origin with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to same remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to same remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to same remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to another remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to another remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 302 from remote to another remote with password": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 2, + "FAIL": 1 + } + }, + "Redirect 303 from same origin to remote without user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -7740,113 +8204,135 @@ "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from same origin to remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from same origin to remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to same origin with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to same origin with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to same origin with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to same remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to same remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to same remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to another remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to another remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 303 from remote to another remote with password": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 2, + "FAIL": 1 + } + }, + "Redirect 307 from same origin to remote without user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -7860,113 +8346,135 @@ "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from same origin to remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from same origin to remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to same origin with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to same origin with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to same origin with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to same remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to same remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to same remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to another remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to another remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 307 from remote to another remote with password": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 2, + "FAIL": 1 + } + }, + "Redirect 308 from same origin to remote without user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -7980,120 +8488,132 @@ "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from same origin to remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from same origin to remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to same origin with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to same origin with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to same origin with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to same remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to same remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to same remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to another remote with user and password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to another remote with user": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } }, "Redirect 308 from remote to another remote with password": { "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "PASS" + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "PASS": 2, + "FAIL": 1 } } } @@ -9282,22 +9802,24 @@ "subtests": { "Include mode: 1 cookie": { "byUA": { - "Ch59": "PASS", - "FF55": "PASS", + "Ch59": "FAIL", + "FF55": "FAIL", "Sa10": "PASS" }, "totals": { - "PASS": 3 + "FAIL": 2, + "PASS": 1 } }, "Include mode: 2 cookies": { "byUA": { - "Ch59": "PASS", - "FF55": "PASS", + "Ch59": "FAIL", + "FF55": "FAIL", "Sa10": "PASS" }, "totals": { - "PASS": 3 + "FAIL": 2, + "PASS": 1 } }, "Omit mode: discard cookies": { @@ -9312,12 +9834,13 @@ }, "Omit mode: no cookie is stored": { "byUA": { - "Ch59": "PASS", - "FF55": "PASS", + "Ch59": "FAIL", + "FF55": "FAIL", "Sa10": "PASS" }, "totals": { - "PASS": 3 + "FAIL": 2, + "PASS": 1 } }, "Omit mode: no cookie is sent": { @@ -9332,22 +9855,24 @@ }, "Same-origin mode: 1 cookie": { "byUA": { - "Ch59": "PASS", - "FF55": "PASS", + "Ch59": "FAIL", + "FF55": "FAIL", "Sa10": "PASS" }, "totals": { - "PASS": 3 + "FAIL": 2, + "PASS": 1 } }, "Same-origin mode: 2 cookies": { "byUA": { - "Ch59": "PASS", - "FF55": "PASS", + "Ch59": "FAIL", + "FF55": "FAIL", "Sa10": "PASS" }, "totals": { - "PASS": 3 + "FAIL": 2, + "PASS": 1 } } } @@ -9364,22 +9889,24 @@ "subtests": { "Include mode: 1 cookie": { "byUA": { - "Ch59": "PASS", - "FF55": "PASS", + "Ch59": "FAIL", + "FF55": "FAIL", "Sa10": "PASS" }, "totals": { - "PASS": 3 + "FAIL": 2, + "PASS": 1 } }, "Include mode: 2 cookies": { "byUA": { - "Ch59": "PASS", - "FF55": "PASS", + "Ch59": "FAIL", + "FF55": "FAIL", "Sa10": "PASS" }, "totals": { - "PASS": 3 + "FAIL": 2, + "PASS": 1 } }, "Omit mode: discard cookies": { @@ -9394,12 +9921,13 @@ }, "Omit mode: no cookie is stored": { "byUA": { - "Ch59": "PASS", - "FF55": "PASS", + "Ch59": "FAIL", + "FF55": "FAIL", "Sa10": "PASS" }, "totals": { - "PASS": 3 + "FAIL": 2, + "PASS": 1 } }, "Omit mode: no cookie is sent": { @@ -9414,22 +9942,24 @@ }, "Same-origin mode: 1 cookie": { "byUA": { - "Ch59": "PASS", - "FF55": "PASS", + "Ch59": "FAIL", + "FF55": "FAIL", "Sa10": "PASS" }, "totals": { - "PASS": 3 + "FAIL": 2, + "PASS": 1 } }, "Same-origin mode: 2 cookies": { "byUA": { - "Ch59": "PASS", - "FF55": "PASS", + "Ch59": "FAIL", + "FF55": "FAIL", "Sa10": "PASS" }, "totals": { - "PASS": 3 + "FAIL": 2, + "PASS": 1 } } } @@ -10488,12 +11018,13 @@ "subtests": { "Create headers using same name for different values": { "byUA": { - "Ch59": "PASS", - "FF55": "PASS", + "Ch59": "FAIL", + "FF55": "FAIL", "Sa10": "PASS" }, "totals": { - "PASS": 3 + "FAIL": 2, + "PASS": 1 } }, "Check delete and has methods when using same name for different values": { @@ -10518,12 +11049,13 @@ }, "Check append methods when called with already used name": { "byUA": { - "Ch59": "PASS", - "FF55": "PASS", + "Ch59": "FAIL", + "FF55": "FAIL", "Sa10": "PASS" }, "totals": { - "PASS": 3 + "FAIL": 2, + "PASS": 1 } } } @@ -11345,12 +11877,13 @@ "subtests": { "Fetch is blocked by CSP, got a TypeError": { "byUA": { - "Ch59": "PASS", + "Ch59": "FAIL", "FF55": "PASS", "Sa10": "PASS" }, "totals": { - "PASS": 3 + "FAIL": 1, + "PASS": 2 } } } @@ -11377,6 +11910,28 @@ } } }, + "/fetch/api/policies/referrer-no-referrer-service-worker.https.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "Fetch in service worker: referrer with no-referrer policy": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + } + } + }, "/fetch/api/policies/referrer-no-referrer-worker.html": { "byUA": { "Ch59": "OK", @@ -11421,6 +11976,50 @@ } } }, + "/fetch/api/policies/referrer-origin-service-worker.https.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "Fetch in service worker: referrer with no-referrer policy": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + } + } + }, + "/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "Fetch in service worker: referrer with origin-when-cross-origin policy": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + } + } + }, "/fetch/api/policies/referrer-origin-when-cross-origin-worker.html": { "byUA": { "Ch59": "OK", @@ -11433,13 +12032,12 @@ "subtests": { "Request's referrer is origin": { "byUA": { - "Ch59": "PASS", - "FF55": "PASS", + "Ch59": "FAIL", + "FF55": "FAIL", "Sa10": "FAIL" }, "totals": { - "PASS": 2, - "FAIL": 1 + "FAIL": 3 } } } @@ -11456,13 +12054,12 @@ "subtests": { "Request's referrer is origin": { "byUA": { - "Ch59": "PASS", - "FF55": "PASS", + "Ch59": "FAIL", + "FF55": "FAIL", "Sa10": "FAIL" }, "totals": { - "PASS": 2, - "FAIL": 1 + "FAIL": 3 } } } @@ -11535,7 +12132,7 @@ } } }, - "/fetch/api/policies/referrer-unsafe-url-worker.html": { + "/fetch/api/policies/referrer-unsafe-url-service-worker.https.html": { "byUA": { "Ch59": "OK", "FF55": "OK", @@ -11545,19 +12142,19 @@ "OK": 3 }, "subtests": { - "Request's referrer is the full url of current document/worker": { + "Fetch in worker: referrer with unsafe-url policy": { "byUA": { - "Ch59": "PASS", - "FF55": "PASS", - "Sa10": "PASS" + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" }, "totals": { - "PASS": 3 + "FAIL": 3 } } } }, - "/fetch/api/policies/referrer-unsafe-url.html": { + "/fetch/api/policies/referrer-unsafe-url-worker.html": { "byUA": { "Ch59": "OK", "FF55": "OK", @@ -11579,7 +12176,29 @@ } } }, - "/fetch/api/redirect/redirect-count-worker.html": { + "/fetch/api/policies/referrer-unsafe-url.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "Request's referrer is the full url of current document/worker": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + } + } + }, + "/fetch/api/redirect/redirect-count-worker.html": { "byUA": { "Ch59": "OK", "FF55": "OK", @@ -11604,11 +12223,10 @@ "byUA": { "Ch59": "PASS", "FF55": "PASS", - "Sa10": "FAIL" + "Sa10": "PASS" }, "totals": { - "PASS": 2, - "FAIL": 1 + "PASS": 3 } }, "Redirect 302 20 times": { @@ -15122,7 +15740,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response": { + "RequestCache \"default\" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15142,7 +15760,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response": { + "RequestCache \"default\" mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15162,7 +15780,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode with an If-Modified-Since header is treated similarly to \"no-store\" with date and stale response": { + "RequestCache \"default\" mode with an If-Modified-Since header is treated similarly to \"no-store\" with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15183,7 +15801,7 @@ "FAIL": 1 } }, - "RequestCache \"default\" mode with an If-Modified-Since header is treated similarly to \"no-store\" with date and fresh response": { + "RequestCache \"default\" mode with an If-Modified-Since header is treated similarly to \"no-store\" with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15203,7 +15821,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode with an If-None-Match header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response": { + "RequestCache \"default\" mode with an If-None-Match header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15223,7 +15841,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode with an If-None-Match header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response": { + "RequestCache \"default\" mode with an If-None-Match header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15243,7 +15861,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode with an If-None-Match header is treated similarly to \"no-store\" with date and stale response": { + "RequestCache \"default\" mode with an If-None-Match header is treated similarly to \"no-store\" with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15264,7 +15882,7 @@ "FAIL": 1 } }, - "RequestCache \"default\" mode with an If-None-Match header is treated similarly to \"no-store\" with date and fresh response": { + "RequestCache \"default\" mode with an If-None-Match header is treated similarly to \"no-store\" with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15285,7 +15903,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response": { + "RequestCache \"default\" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15305,7 +15923,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response": { + "RequestCache \"default\" mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15325,7 +15943,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode with an If-Unmodified-Since header is treated similarly to \"no-store\" with date and stale response": { + "RequestCache \"default\" mode with an If-Unmodified-Since header is treated similarly to \"no-store\" with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15346,7 +15964,7 @@ "FAIL": 1 } }, - "RequestCache \"default\" mode with an If-Unmodified-Since header is treated similarly to \"no-store\" with date and fresh response": { + "RequestCache \"default\" mode with an If-Unmodified-Since header is treated similarly to \"no-store\" with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15367,7 +15985,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode with an If-Match header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response": { + "RequestCache \"default\" mode with an If-Match header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15387,7 +16005,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode with an If-Match header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response": { + "RequestCache \"default\" mode with an If-Match header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15407,7 +16025,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode with an If-Match header is treated similarly to \"no-store\" with date and stale response": { + "RequestCache \"default\" mode with an If-Match header is treated similarly to \"no-store\" with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15428,7 +16046,7 @@ "FAIL": 1 } }, - "RequestCache \"default\" mode with an If-Match header is treated similarly to \"no-store\" with date and fresh response": { + "RequestCache \"default\" mode with an If-Match header is treated similarly to \"no-store\" with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15449,7 +16067,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode with an If-Range header (following a request without additional headers) is treated similarly to \"no-store\" with date and stale response": { + "RequestCache \"default\" mode with an If-Range header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15469,7 +16087,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode with an If-Range header (following a request without additional headers) is treated similarly to \"no-store\" with date and fresh response": { + "RequestCache \"default\" mode with an If-Range header (following a request without additional headers) is treated similarly to \"no-store\" with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15489,7 +16107,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode with an If-Range header is treated similarly to \"no-store\" with date and stale response": { + "RequestCache \"default\" mode with an If-Range header is treated similarly to \"no-store\" with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15510,7 +16128,7 @@ "FAIL": 1 } }, - "RequestCache \"default\" mode with an If-Range header is treated similarly to \"no-store\" with date and fresh response": { + "RequestCache \"default\" mode with an If-Range header is treated similarly to \"no-store\" with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15543,7 +16161,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode checks the cache for previously cached content and goes to the network for stale responses with date and stale response": { + "RequestCache \"default\" mode checks the cache for previously cached content and goes to the network for stale responses with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15563,7 +16181,7 @@ "PASS": 3 } }, - "RequestCache \"default\" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with date and fresh response": { + "RequestCache \"default\" mode checks the cache for previously cached content and avoids going to the network if a fresh response exists with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15583,7 +16201,7 @@ "PASS": 3 } }, - "Responses with the \"Cache-Control: no-store\" header are not stored in the cache with date and stale response": { + "Responses with the \"Cache-Control: no-store\" header are not stored in the cache with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15603,7 +16221,7 @@ "PASS": 3 } }, - "Responses with the \"Cache-Control: no-store\" header are not stored in the cache with date and fresh response": { + "Responses with the \"Cache-Control: no-store\" header are not stored in the cache with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15636,7 +16254,7 @@ "PASS": 2 } }, - "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for stale responses with date and stale response": { + "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for stale responses with Last-Modified and stale response": { "byUA": { "Ch59": "FAIL", "FF55": "PASS", @@ -15657,7 +16275,7 @@ "PASS": 3 } }, - "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for fresh responses with date and fresh response": { + "RequestCache \"force-cache\" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15677,7 +16295,7 @@ "PASS": 3 } }, - "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response is not found with date and stale response": { + "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response is not found with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15697,7 +16315,7 @@ "PASS": 3 } }, - "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response is not found with date and fresh response": { + "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response is not found with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15717,7 +16335,7 @@ "PASS": 3 } }, - "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response would vary with date and stale response": { + "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response would vary with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15737,7 +16355,7 @@ "PASS": 3 } }, - "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response would vary with date and fresh response": { + "RequestCache \"force-cache\" mode checks the cache for previously cached content and goes to the network if a cached response would vary with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15757,7 +16375,7 @@ "PASS": 3 } }, - "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with date and stale response": { + "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15777,7 +16395,7 @@ "PASS": 3 } }, - "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with date and fresh response": { + "RequestCache \"force-cache\" stores the response in the cache if it goes to the network with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15809,7 +16427,7 @@ "PASS": 3 } }, - "RequestCache \"no-cache\" mode revalidates stale responses found in the cache with date and stale response": { + "RequestCache \"no-cache\" mode revalidates stale responses found in the cache with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -15830,7 +16448,7 @@ "PASS": 2 } }, - "RequestCache \"no-cache\" mode revalidates fresh responses found in the cache with date and fresh response": { + "RequestCache \"no-cache\" mode revalidates fresh responses found in the cache with Last-Modified and fresh response": { "byUA": { "Ch59": "FAIL", "FF55": "PASS", @@ -15864,7 +16482,7 @@ "PASS": 2 } }, - "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with date and stale response": { + "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and stale response": { "byUA": { "Ch59": "FAIL", "FF55": "PASS", @@ -15886,7 +16504,7 @@ "PASS": 2 } }, - "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with date and fresh response": { + "RequestCache \"no-store\" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and fresh response": { "byUA": { "Ch59": "FAIL", "FF55": "PASS", @@ -15908,7 +16526,7 @@ "PASS": 1 } }, - "RequestCache \"no-store\" mode does not store the response in the cache with date and stale response": { + "RequestCache \"no-store\" mode does not store the response in the cache with Last-Modified and stale response": { "byUA": { "Ch59": "FAIL", "FF55": "PASS", @@ -15930,7 +16548,7 @@ "PASS": 1 } }, - "RequestCache \"no-store\" mode does not store the response in the cache with date and fresh response": { + "RequestCache \"no-store\" mode does not store the response in the cache with Last-Modified and fresh response": { "byUA": { "Ch59": "FAIL", "FF55": "PASS", @@ -15964,7 +16582,7 @@ "PASS": 2 } }, - "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and avoids revalidation for stale responses with date and stale response": { + "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and avoids revalidation for stale responses with Last-Modified and stale response": { "byUA": { "Ch59": "FAIL", "FF55": "PASS", @@ -15985,7 +16603,7 @@ "PASS": 3 } }, - "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and avoids revalidation for fresh responses with date and fresh response": { + "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and avoids revalidation for fresh responses with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -16006,7 +16624,7 @@ "PASS": 2 } }, - "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and does not go to the network if a cached response is not found with date and fresh response": { + "RequestCache \"only-if-cached\" mode checks the cache for previously cached content and does not go to the network if a cached response is not found with Last-Modified and fresh response": { "byUA": { "Ch59": "FAIL", "FF55": "PASS", @@ -16027,7 +16645,7 @@ "PASS": 3 } }, - "RequestCache \"only-if-cached\" (with \"same-origin\") uses cached same-origin redirects to same-origin content with date and fresh response": { + "RequestCache \"only-if-cached\" (with \"same-origin\") uses cached same-origin redirects to same-origin content with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -16048,7 +16666,7 @@ "PASS": 2 } }, - "RequestCache \"only-if-cached\" (with \"same-origin\") uses cached same-origin redirects to same-origin content with date and stale response": { + "RequestCache \"only-if-cached\" (with \"same-origin\") uses cached same-origin redirects to same-origin content with Last-Modified and stale response": { "byUA": { "Ch59": "FAIL", "FF55": "PASS", @@ -16069,7 +16687,7 @@ "PASS": 3 } }, - "RequestCache \"only-if-cached\" (with \"same-origin\") does not follow redirects across origins and rejects with date and fresh response": { + "RequestCache \"only-if-cached\" (with \"same-origin\") does not follow redirects across origins and rejects with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -16090,7 +16708,7 @@ "PASS": 2 } }, - "RequestCache \"only-if-cached\" (with \"same-origin\") does not follow redirects across origins and rejects with date and stale response": { + "RequestCache \"only-if-cached\" (with \"same-origin\") does not follow redirects across origins and rejects with Last-Modified and stale response": { "byUA": { "Ch59": "FAIL", "FF55": "PASS", @@ -16124,7 +16742,7 @@ "PASS": 2 } }, - "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with date and stale response": { + "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and stale response": { "byUA": { "Ch59": "FAIL", "FF55": "PASS", @@ -16146,7 +16764,7 @@ "PASS": 2 } }, - "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with date and fresh response": { + "RequestCache \"reload\" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and fresh response": { "byUA": { "Ch59": "FAIL", "FF55": "PASS", @@ -16167,7 +16785,7 @@ "PASS": 3 } }, - "RequestCache \"reload\" mode does store the response in the cache with date and stale response": { + "RequestCache \"reload\" mode does store the response in the cache with Last-Modified and stale response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -16187,7 +16805,7 @@ "PASS": 3 } }, - "RequestCache \"reload\" mode does store the response in the cache with date and fresh response": { + "RequestCache \"reload\" mode does store the response in the cache with Last-Modified and fresh response": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -16208,7 +16826,7 @@ "PASS": 2 } }, - "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with date and stale response": { + "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Last-Modified and stale response": { "byUA": { "Ch59": "FAIL", "FF55": "PASS", @@ -16230,7 +16848,7 @@ "PASS": 2 } }, - "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with date and fresh response": { + "RequestCache \"reload\" mode does store the response in the cache even if a previous response is already stored with Last-Modified and fresh response": { "byUA": { "Ch59": "FAIL", "FF55": "PASS", @@ -20244,6 +20862,16 @@ "PASS": 3 } }, + "Response interface: attribute trailer": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, "Response interface: operation clone()": { "byUA": { "Ch59": "PASS", @@ -20436,7 +21064,17 @@ "PASS": 3 } }, - "Response interface: new Response() must inherit property \"clone\" with the proper type (8)": { + "Response interface: new Response() must inherit property \"trailer\" with the proper type (8)": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "Response interface: new Response() must inherit property \"clone\" with the proper type (9)": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -20446,7 +21084,7 @@ "PASS": 3 } }, - "Response interface: new Response() must inherit property \"body\" with the proper type (9)": { + "Response interface: new Response() must inherit property \"body\" with the proper type (10)": { "byUA": { "Ch59": "PASS", "FF55": "FAIL", @@ -20457,7 +21095,7 @@ "FAIL": 1 } }, - "Response interface: new Response() must inherit property \"bodyUsed\" with the proper type (10)": { + "Response interface: new Response() must inherit property \"bodyUsed\" with the proper type (11)": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -20467,7 +21105,7 @@ "PASS": 3 } }, - "Response interface: new Response() must inherit property \"arrayBuffer\" with the proper type (11)": { + "Response interface: new Response() must inherit property \"arrayBuffer\" with the proper type (12)": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -20477,7 +21115,7 @@ "PASS": 3 } }, - "Response interface: new Response() must inherit property \"blob\" with the proper type (12)": { + "Response interface: new Response() must inherit property \"blob\" with the proper type (13)": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -20487,7 +21125,7 @@ "PASS": 3 } }, - "Response interface: new Response() must inherit property \"formData\" with the proper type (13)": { + "Response interface: new Response() must inherit property \"formData\" with the proper type (14)": { "byUA": { "Ch59": "FAIL", "FF55": "PASS", @@ -20498,7 +21136,7 @@ "PASS": 2 } }, - "Response interface: new Response() must inherit property \"json\" with the proper type (14)": { + "Response interface: new Response() must inherit property \"json\" with the proper type (15)": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -20508,7 +21146,7 @@ "PASS": 3 } }, - "Response interface: new Response() must inherit property \"text\" with the proper type (15)": { + "Response interface: new Response() must inherit property \"text\" with the proper type (16)": { "byUA": { "Ch59": "PASS", "FF55": "PASS", @@ -21119,6 +21757,1189 @@ } } }, + "/fetch/api/response/response-trailer.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "trailer() test": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + } + } + }, + "/fetch/http-cache/304-update.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "HTTP cache updates returned headers from a Last-Modified 304.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache updates stored headers from a Last-Modified 304.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache updates returned headers from a ETag 304.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache updates stored headers from a ETag 304.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + } + } + }, + "/fetch/http-cache/cc-request.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=0.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=1.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache doesn't use fresh response with Age header when request contains Cache-Control: max-age that is greater than remaining freshness.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache does use aged stale response when request contains Cache-Control: max-stale that permits its use.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "FAIL": 1, + "PASS": 2 + } + }, + "HTTP cache does reuse stale response with Age header when request contains Cache-Control: max-stale that permits its use.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "FAIL": 1, + "PASS": 2 + } + }, + "HTTP cache doesn't reuse fresh response when request contains Cache-Control: min-fresh that wants it fresher.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache doesn't reuse fresh response with Age header when request contains Cache-Control: min-fresh that wants it fresher.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-cache.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache validates fresh response with Last-Modified when request contains Cache-Control: no-cache.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache validates fresh response with ETag when request contains Cache-Control: no-cache.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-store.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + } + } + }, + "/fetch/http-cache/freshness.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "HTTP cache reuses a response with a future Expires.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache does not reuse a response with a past Expires.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache does not reuse a response with a present Expires.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache does not reuse a response with an invalid Expires.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache reuses a response with positive Cache-Control: max-age.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache does not reuse a response with Cache-Control: max-age=0.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache reuses a response with positive Cache-Control: max-age and a past Expires.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache reuses a response with positive Cache-Control: max-age and an invalid Expires.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache does not reuse a response with Cache-Control: max-age=0 and a future Expires.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache does not prefer Cache-Control: s-maxage over Cache-Control: max-age.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache does not reuse a response when the Age header is greater than its freshness lifetime.": { + "byUA": { + "Ch59": "PASS", + "FF55": "FAIL", + "Sa10": "PASS" + }, + "totals": { + "PASS": 2, + "FAIL": 1 + } + }, + "HTTP cache does not store a response with Cache-Control: no-store.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache does not store a response with Cache-Control: no-store, even with max-age and Expires.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use, even with max-age and Expires.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + } + } + }, + "/fetch/http-cache/heuristic.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "HTTP cache does not reuse an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is not present.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache reuses a 200 OK response with Last-Modified based upon heuristic freshness.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache reuses a 203 Non-Authoritative Information response with Last-Modified based upon heuristic freshness.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache reuses a 204 No Content response with Last-Modified based upon heuristic freshness.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "PASS" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache reuses a 404 Not Found response with Last-Modified based upon heuristic freshness.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "PASS" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache reuses a 405 Method Not Allowed response with Last-Modified based upon heuristic freshness.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "PASS" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache reuses a 410 Gone response with Last-Modified based upon heuristic freshness.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache reuses a 414 URI Too Long response with Last-Modified based upon heuristic freshness.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "PASS" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache reuses a 501 Not Implemented response with Last-Modified based upon heuristic freshness.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "PASS" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache does not use a 201 Created response with Last-Modified based upon heuristic freshness.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache does not use a 202 Accepted response with Last-Modified based upon heuristic freshness.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache does not use a 403 Forbidden response with Last-Modified based upon heuristic freshness.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache does not use a 502 Bad Gateway response with Last-Modified based upon heuristic freshness.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache does not use a 503 Service Unavailable response with Last-Modified based upon heuristic freshness.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache does not use a 504 Gateway Timeout response with Last-Modified based upon heuristic freshness.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + } + } + }, + "/fetch/http-cache/invalidate.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "HTTP cache invalidates after a successful response from a POST": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache does not invalidate after a failed response from an unsafe request": { + "byUA": { + "Ch59": "PASS", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 1, + "FAIL": 2 + } + }, + "HTTP cache invalidates after a successful response from a PUT": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache invalidates after a successful response from a DELETE": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache invalidates after a successful response from an unknown method": { + "byUA": { + "Ch59": "FAIL", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "FAIL": 1, + "PASS": 2 + } + }, + "HTTP cache invalidates Location URL after a successful response from a POST": { + "byUA": { + "Ch59": "FAIL", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache does not invalidate Location URL after a failed response from an unsafe request": { + "byUA": { + "Ch59": "PASS", + "FF55": "FAIL", + "Sa10": "PASS" + }, + "totals": { + "PASS": 2, + "FAIL": 1 + } + }, + "HTTP cache invalidates Location URL after a successful response from a PUT": { + "byUA": { + "Ch59": "FAIL", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache invalidates Location URL after a successful response from a DELETE": { + "byUA": { + "Ch59": "FAIL", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache invalidates Location URL after a successful response from an unknown method": { + "byUA": { + "Ch59": "FAIL", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache invalidates Content-Location URL after a successful response from a POST": { + "byUA": { + "Ch59": "FAIL", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache does not invalidate Content-Location URL after a failed response from an unsafe request": { + "byUA": { + "Ch59": "PASS", + "FF55": "FAIL", + "Sa10": "PASS" + }, + "totals": { + "PASS": 2, + "FAIL": 1 + } + }, + "HTTP cache invalidates Content-Location URL after a successful response from a PUT": { + "byUA": { + "Ch59": "FAIL", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache invalidates Content-Location URL after a successful response from a DELETE": { + "byUA": { + "Ch59": "FAIL", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + }, + "HTTP cache invalidates Content-Location URL after a successful response from an unknown method": { + "byUA": { + "Ch59": "FAIL", + "FF55": "PASS", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 2, + "PASS": 1 + } + } + } + }, + "/fetch/http-cache/partial.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "HTTP cache stores partial content and reuses it.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "HTTP cache stores complete response and serves smaller ranges from it.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "HTTP cache stores partial response and serves smaller ranges from it.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "HTTP cache stores partial content and completes it.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + } + } + }, + "/fetch/http-cache/status.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "HTTP cache goes to the network if it has a stale 200 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache avoids going to the network if it has a fresh 200 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache goes to the network if it has a stale 203 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache avoids going to the network if it has a fresh 203 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache goes to the network if it has a stale 204 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache avoids going to the network if it has a fresh 204 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "FAIL", + "Sa10": "PASS" + }, + "totals": { + "PASS": 2, + "FAIL": 1 + } + }, + "HTTP cache goes to the network if it has a stale 299 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache avoids going to the network if it has a fresh 299 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 1, + "FAIL": 2 + } + }, + "HTTP cache goes to the network if it has a stale 400 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache avoids going to the network if it has a fresh 400 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 1, + "FAIL": 2 + } + }, + "HTTP cache goes to the network if it has a stale 404 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache avoids going to the network if it has a fresh 404 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "FAIL", + "Sa10": "PASS" + }, + "totals": { + "PASS": 2, + "FAIL": 1 + } + }, + "HTTP cache goes to the network if it has a stale 410 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache avoids going to the network if it has a fresh 410 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache goes to the network if it has a stale 499 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache avoids going to the network if it has a fresh 499 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 1, + "FAIL": 2 + } + }, + "HTTP cache goes to the network if it has a stale 500 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache avoids going to the network if it has a fresh 500 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 1, + "FAIL": 2 + } + }, + "HTTP cache goes to the network if it has a stale 502 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache avoids going to the network if it has a fresh 502 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 1, + "FAIL": 2 + } + }, + "HTTP cache goes to the network if it has a stale 503 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache avoids going to the network if it has a fresh 503 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 1, + "FAIL": 2 + } + }, + "HTTP cache goes to the network if it has a stale 504 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache avoids going to the network if it has a fresh 504 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 1, + "FAIL": 2 + } + }, + "HTTP cache goes to the network if it has a stale 599 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache avoids going to the network if it has a fresh 599 response.": { + "byUA": { + "Ch59": "PASS", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "PASS": 1, + "FAIL": 2 + } + } + } + }, + "/fetch/http-cache/vary.html": { + "byUA": { + "Ch59": "OK", + "FF55": "OK", + "Sa10": "OK" + }, + "totals": { + "OK": 3 + }, + "subtests": { + "HTTP cache reuses Vary response when request matches.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache doesn't use Vary response when request doesn't match.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache doesn't use Vary response when request omits variant header.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache doesn't invalidate existing Vary response.": { + "byUA": { + "Ch59": "FAIL", + "FF55": "FAIL", + "Sa10": "FAIL" + }, + "totals": { + "FAIL": 3 + } + }, + "HTTP cache doesn't pay attention to headers not listed in Vary.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache reuses two-way Vary response when request matches.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache doesn't use two-way Vary response when request doesn't match.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache doesn't use two-way Vary response when request omits variant header.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache reuses three-way Vary response when request matches.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache doesn't use three-way Vary response when request doesn't match.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + }, + "HTTP cache doesn't use three-way Vary response when request omits variant header.": { + "byUA": { + "Ch59": "PASS", + "FF55": "PASS", + "Sa10": "PASS" + }, + "totals": { + "PASS": 3 + } + } + } + }, "/fetch/nosniff/image.html": { "byUA": { "Ch59": "OK", diff --git a/fetch/less-than-2.html b/fetch/less-than-2.html index 817afdb..ada888c 100644 --- a/fetch/less-than-2.html +++ b/fetch/less-than-2.html @@ -11,123 +11,148 @@

Less Than 2 Passes

-

Test files without 2 passes: 47; Subtests without 2 passes: 244; Failure level: 244/1914 (12.75%)

+

Test files without 2 passes: 68; Subtests without 2 passes: 305; Failure level: 305/2062 (14.79%)

Test Files

-
  1. /fetch/api/basic/mode-no-cors-worker.html (1/3, 33.33%, 0.05% of total)
  2. -
  3. /fetch/api/basic/mode-no-cors.html (1/3, 33.33%, 0.05% of total)
  4. +
    1. /fetch/api/basic/mode-no-cors-worker.html (1/4, 25.00%, 0.05% of total)
    2. +
    3. /fetch/api/basic/mode-no-cors.html (1/4, 25.00%, 0.05% of total)
    4. /fetch/api/basic/request-headers-worker.html (1/24, 4.17%, 0.05% of total)
    5. /fetch/api/basic/request-headers.html (1/24, 4.17%, 0.05% of total)
    6. -
    7. /fetch/api/basic/request-upload-worker.html (6/17, 35.29%, 0.31% of total)
    8. -
    9. /fetch/api/basic/request-upload.html (6/17, 35.29%, 0.31% of total)
    10. -
    11. /fetch/api/basic/scheme-about-worker.html (3/6, 50.00%, 0.16% of total)
    12. -
    13. /fetch/api/basic/scheme-about.html (3/6, 50.00%, 0.16% of total)
    14. -
    15. /fetch/api/cors/cors-basic-worker.html (4/15, 26.67%, 0.21% of total)
    16. -
    17. /fetch/api/cors/cors-basic.html (4/15, 26.67%, 0.21% of total)
    18. -
    19. /fetch/api/cors/cors-multiple-origins-worker.html (5/6, 83.33%, 0.26% of total)
    20. -
    21. /fetch/api/cors/cors-multiple-origins.html (5/6, 83.33%, 0.26% of total)
    22. -
    23. /fetch/api/cors/cors-no-preflight-worker.html (2/15, 13.33%, 0.10% of total)
    24. -
    25. /fetch/api/cors/cors-no-preflight.html (2/15, 13.33%, 0.10% of total)
    26. -
    27. /fetch/api/cors/cors-origin-worker.html (2/17, 11.76%, 0.10% of total)
    28. -
    29. /fetch/api/cors/cors-origin.html (2/17, 11.76%, 0.10% of total)
    30. -
    31. /fetch/api/cors/cors-preflight-redirect-worker.html (10/10, 100.00%, 0.52% of total)
    32. -
    33. /fetch/api/cors/cors-preflight-redirect.html (10/10, 100.00%, 0.52% of total)
    34. -
    35. /fetch/api/cors/cors-preflight-referrer-worker.html (8/10, 80.00%, 0.42% of total)
    36. -
    37. /fetch/api/cors/cors-preflight-referrer.html (6/10, 60.00%, 0.31% of total)
    38. -
    39. /fetch/api/cors/cors-preflight-status-worker.html (27/27, 100.00%, 1.41% of total)
    40. -
    41. /fetch/api/cors/cors-preflight-status.html (27/27, 100.00%, 1.41% of total)
    42. -
    43. /fetch/api/headers/header-values-normalize.html (2/62, 3.23%, 0.10% of total)
    44. -
    45. /fetch/api/headers/headers-basic.html (4/19, 21.05%, 0.21% of total)
    46. -
    47. /fetch/api/headers/headers-idl.html (2/33, 6.06%, 0.10% of total)
    48. -
    49. /fetch/api/headers/headers-normalize.html (3/3, 100.00%, 0.16% of total)
    50. -
    51. /fetch/api/headers/headers-record.html (8/11, 72.73%, 0.42% of total)
    52. -
    53. /fetch/api/policies/referrer-origin-worker.html (1/2, 50.00%, 0.05% of total)
    54. -
    55. /fetch/api/policies/referrer-origin.html (1/2, 50.00%, 0.05% of total)
    56. -
    57. /fetch/api/redirect/redirect-referrer-worker.html (9/32, 28.13%, 0.47% of total)
    58. -
    59. /fetch/api/redirect/redirect-referrer.html (9/32, 28.13%, 0.47% of total)
    60. -
    61. /fetch/api/request/request-cache-no-store.html (4/8, 50.00%, 0.21% of total)
    62. -
    63. /fetch/api/request/request-consume-empty.html (2/12, 16.67%, 0.10% of total)
    64. -
    65. /fetch/api/request/request-consume.html (1/38, 2.63%, 0.05% of total)
    66. -
    67. /fetch/api/request/request-disturbed.html (3/8, 37.50%, 0.16% of total)
    68. -
    69. /fetch/api/request/request-error.html (1/21, 4.76%, 0.05% of total)
    70. -
    71. /fetch/api/request/request-idl.html (8/47, 17.02%, 0.42% of total)
    72. -
    73. /fetch/api/request/request-init-001.sub.html (5/35, 14.29%, 0.26% of total)
    74. -
    75. /fetch/api/request/request-init-003.sub.html (1/4, 25.00%, 0.05% of total)
    76. -
    77. /fetch/api/request/request-keepalive-quota.html (2/6, 33.33%, 0.10% of total)
    78. -
    79. /fetch/api/request/request-structure.html (3/19, 15.79%, 0.16% of total)
    80. -
    81. /fetch/api/response/response-clone.html (11/18, 61.11%, 0.57% of total)
    82. -
    83. /fetch/api/response/response-consume-empty.html (2/12, 16.67%, 0.10% of total)
    84. -
    85. /fetch/api/response/response-consume-stream.html (2/9, 22.22%, 0.10% of total)
    86. -
    87. /fetch/api/response/response-consume.html (19/39, 48.72%, 0.99% of total)
    88. -
    89. /fetch/nosniff/parsing-nosniff.html (1/6, 16.67%, 0.05% of total)
    90. -
    91. /fetch/nosniff/stylesheet.html (4/6, 66.67%, 0.21% of total)
    92. +
    93. /fetch/api/basic/request-upload-worker.html (6/17, 35.29%, 0.29% of total)
    94. +
    95. /fetch/api/basic/request-upload.html (6/17, 35.29%, 0.29% of total)
    96. +
    97. /fetch/api/basic/scheme-about-worker.html (3/6, 50.00%, 0.15% of total)
    98. +
    99. /fetch/api/basic/scheme-about.html (3/6, 50.00%, 0.15% of total)
    100. +
    101. /fetch/api/cors/cors-basic-worker.html (4/15, 26.67%, 0.19% of total)
    102. +
    103. /fetch/api/cors/cors-basic.html (4/15, 26.67%, 0.19% of total)
    104. +
    105. /fetch/api/cors/cors-expose-star-worker.html (1/2, 50.00%, 0.05% of total)
    106. +
    107. /fetch/api/cors/cors-expose-star.html (1/2, 50.00%, 0.05% of total)
    108. +
    109. /fetch/api/cors/cors-multiple-origins-worker.html (5/6, 83.33%, 0.24% of total)
    110. +
    111. /fetch/api/cors/cors-multiple-origins.html (5/6, 83.33%, 0.24% of total)
    112. +
    113. /fetch/api/cors/cors-no-preflight-worker.html (2/15, 13.33%, 0.10% of total)
    114. +
    115. /fetch/api/cors/cors-no-preflight.html (2/15, 13.33%, 0.10% of total)
    116. +
    117. /fetch/api/cors/cors-origin-worker.html (2/17, 11.76%, 0.10% of total)
    118. +
    119. /fetch/api/cors/cors-origin.html (2/17, 11.76%, 0.10% of total)
    120. +
    121. /fetch/api/cors/cors-preflight-redirect-worker.html (10/10, 100.00%, 0.48% of total)
    122. +
    123. /fetch/api/cors/cors-preflight-redirect.html (10/10, 100.00%, 0.48% of total)
    124. +
    125. /fetch/api/cors/cors-preflight-referrer-worker.html (8/10, 80.00%, 0.39% of total)
    126. +
    127. /fetch/api/cors/cors-preflight-referrer.html (6/10, 60.00%, 0.29% of total)
    128. +
    129. /fetch/api/cors/cors-preflight-star-worker.html (2/8, 25.00%, 0.10% of total)
    130. +
    131. /fetch/api/cors/cors-preflight-star.html (2/8, 25.00%, 0.10% of total)
    132. +
    133. /fetch/api/cors/cors-preflight-status-worker.html (27/27, 100.00%, 1.31% of total)
    134. +
    135. /fetch/api/cors/cors-preflight-status.html (27/27, 100.00%, 1.31% of total)
    136. +
    137. /fetch/api/credentials/cookies-worker.html (5/7, 71.43%, 0.24% of total)
    138. +
    139. /fetch/api/credentials/cookies.html (5/7, 71.43%, 0.24% of total)
    140. +
    141. /fetch/api/headers/header-values-normalize.html (2/62, 3.23%, 0.10% of total)
    142. +
    143. /fetch/api/headers/headers-basic.html (4/19, 21.05%, 0.19% of total)
    144. +
    145. /fetch/api/headers/headers-combine.html (2/4, 50.00%, 0.10% of total)
    146. +
    147. /fetch/api/headers/headers-idl.html (2/33, 6.06%, 0.10% of total)
    148. +
    149. /fetch/api/headers/headers-normalize.html (3/3, 100.00%, 0.15% of total)
    150. +
    151. /fetch/api/headers/headers-record.html (8/11, 72.73%, 0.39% of total)
    152. +
    153. /fetch/api/policies/referrer-no-referrer-service-worker.https.html (1/1, 100.00%, 0.05% of total)
    154. +
    155. /fetch/api/policies/referrer-origin-service-worker.https.html (1/1, 100.00%, 0.05% of total)
    156. +
    157. /fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https.html (1/1, 100.00%, 0.05% of total)
    158. +
    159. /fetch/api/policies/referrer-origin-when-cross-origin-worker.html (1/1, 100.00%, 0.05% of total)
    160. +
    161. /fetch/api/policies/referrer-origin-when-cross-origin.html (1/1, 100.00%, 0.05% of total)
    162. +
    163. /fetch/api/policies/referrer-origin-worker.html (1/2, 50.00%, 0.05% of total)
    164. +
    165. /fetch/api/policies/referrer-origin.html (1/2, 50.00%, 0.05% of total)
    166. +
    167. /fetch/api/policies/referrer-unsafe-url-service-worker.https.html (1/1, 100.00%, 0.05% of total)
    168. +
    169. /fetch/api/redirect/redirect-referrer-worker.html (9/32, 28.13%, 0.44% of total)
    170. +
    171. /fetch/api/redirect/redirect-referrer.html (9/32, 28.13%, 0.44% of total)
    172. +
    173. /fetch/api/request/request-cache-no-store.html (4/8, 50.00%, 0.19% of total)
    174. +
    175. /fetch/api/request/request-consume-empty.html (2/12, 16.67%, 0.10% of total)
    176. +
    177. /fetch/api/request/request-consume.html (1/38, 2.63%, 0.05% of total)
    178. +
    179. /fetch/api/request/request-disturbed.html (3/8, 37.50%, 0.15% of total)
    180. +
    181. /fetch/api/request/request-error.html (1/21, 4.76%, 0.05% of total)
    182. +
    183. /fetch/api/request/request-idl.html (8/47, 17.02%, 0.39% of total)
    184. +
    185. /fetch/api/request/request-init-001.sub.html (5/35, 14.29%, 0.24% of total)
    186. +
    187. /fetch/api/request/request-init-003.sub.html (1/4, 25.00%, 0.05% of total)
    188. +
    189. /fetch/api/request/request-keepalive-quota.html (2/6, 33.33%, 0.10% of total)
    190. +
    191. /fetch/api/request/request-structure.html (3/19, 15.79%, 0.15% of total)
    192. +
    193. /fetch/api/response/response-clone.html (11/18, 61.11%, 0.53% of total)
    194. +
    195. /fetch/api/response/response-consume-empty.html (2/12, 16.67%, 0.10% of total)
    196. +
    197. /fetch/api/response/response-consume-stream.html (2/9, 22.22%, 0.10% of total)
    198. +
    199. /fetch/api/response/response-consume.html (19/39, 48.72%, 0.92% of total)
    200. +
    201. /fetch/api/response/response-idl.html (2/42, 4.76%, 0.10% of total)
    202. +
    203. /fetch/api/response/response-trailer.html (1/1, 100.00%, 0.05% of total)
    204. +
    205. /fetch/http-cache/cc-request.html (6/12, 50.00%, 0.29% of total)
    206. +
    207. /fetch/http-cache/heuristic.html (6/16, 37.50%, 0.29% of total)
    208. +
    209. /fetch/http-cache/invalidate.html (9/15, 60.00%, 0.44% of total)
    210. +
    211. /fetch/http-cache/partial.html (4/4, 100.00%, 0.19% of total)
    212. +
    213. /fetch/http-cache/status.html (8/26, 30.77%, 0.39% of total)
    214. +
    215. /fetch/http-cache/vary.html (1/11, 9.09%, 0.05% of total)
    216. +
    217. /fetch/nosniff/parsing-nosniff.html (1/6, 16.67%, 0.05% of total)
    218. +
    219. /fetch/nosniff/stylesheet.html (4/6, 66.67%, 0.19% of total)
    - + - + - + - + - + - + - + - + - + + + + + - + - + - + - + - + - + @@ -138,7 +163,7 @@

    Test Files

    - + @@ -149,7 +174,7 @@

    Test Files

    - + @@ -158,14 +183,20 @@

    Test Files

    - + - + + + + + + + @@ -193,7 +224,7 @@

    Test Files

    - + @@ -221,22 +252,37 @@

    Test Files

    - + + + + + + + + + + + + + - + - + + + + - + - + @@ -245,11 +291,23 @@

    Test Files

    - + + + + + + + + + + + - + - + + + @@ -259,7 +317,7 @@

    Test Files

    - + @@ -269,23 +327,23 @@

    Test Files

    - + - + - - + + - + - + - + - + @@ -294,22 +352,22 @@

    Test Files

    - + - + - + - + - + @@ -321,13 +379,13 @@

    Test Files

    - + - + - + @@ -347,9 +405,54 @@

    Test Files

    - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - +
    TestCh59FF55Sa10
    /fetch/api/basic/mode-no-cors-worker.html (1/3, 33.33%, 0.05% of total)OKOKOK
    /fetch/api/basic/mode-no-cors-worker.html (1/4, 25.00%, 0.05% of total)OKOKOK
    Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with no-cors modeFAILFAILFAIL
    /fetch/api/basic/mode-no-cors.html (1/3, 33.33%, 0.05% of total)OKOKOK
    /fetch/api/basic/mode-no-cors.html (1/4, 25.00%, 0.05% of total)OKOKOK
    Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with no-cors modeFAILFAILFAIL
    /fetch/api/basic/request-headers-worker.html (1/24, 4.17%, 0.05% of total)OKOKOK
    Fetch with HEADPASSFAILFAIL
    /fetch/api/basic/request-headers.html (1/24, 4.17%, 0.05% of total)OKOKOK
    Fetch with HEADPASSFAILFAIL
    /fetch/api/basic/request-upload-worker.html (6/17, 35.29%, 0.31% of total)OKOKOK
    /fetch/api/basic/request-upload-worker.html (6/17, 35.29%, 0.29% of total)OKOKOK
    Fetch with POST with ReadableStreamFAILFAILFAIL
    Fetch with POST with ReadableStream containing StringFAILFAILFAIL
    Fetch with POST with ReadableStream containing nullFAILFAILFAIL
    Fetch with POST with ReadableStream containing numberFAILFAILFAIL
    Fetch with POST with ReadableStream containing ArrayBufferFAILFAILFAIL
    Fetch with POST with ReadableStream containing BlobFAILFAILFAIL
    /fetch/api/basic/request-upload.html (6/17, 35.29%, 0.31% of total)OKOKOK
    /fetch/api/basic/request-upload.html (6/17, 35.29%, 0.29% of total)OKOKOK
    Fetch with POST with ReadableStreamFAILFAILFAIL
    Fetch with POST with ReadableStream containing StringFAILFAILFAIL
    Fetch with POST with ReadableStream containing nullFAILFAILFAIL
    Fetch with POST with ReadableStream containing numberFAILFAILFAIL
    Fetch with POST with ReadableStream containing ArrayBufferFAILFAILFAIL
    Fetch with POST with ReadableStream containing BlobFAILFAILFAIL
    /fetch/api/basic/scheme-about-worker.html (3/6, 50.00%, 0.16% of total)OKOKOK
    /fetch/api/basic/scheme-about-worker.html (3/6, 50.00%, 0.15% of total)OKOKOK
    Fetching about:blank (GET) is OKFAILPASSFAIL
    Fetching about:blank (PUT) is OKFAILPASSFAIL
    Fetching about:blank (POST) is OKFAILPASSFAIL
    /fetch/api/basic/scheme-about.html (3/6, 50.00%, 0.16% of total)OKOKOK
    /fetch/api/basic/scheme-about.html (3/6, 50.00%, 0.15% of total)OKOKOK
    Fetching about:blank (GET) is OKFAILPASSFAIL
    Fetching about:blank (PUT) is OKFAILPASSFAIL
    Fetching about:blank (POST) is OKFAILPASSFAIL
    /fetch/api/cors/cors-basic-worker.html (4/15, 26.67%, 0.21% of total)OKOKOK
    /fetch/api/cors/cors-basic-worker.html (4/15, 26.67%, 0.19% of total)OKOKOK
    Same domain different protocol different port [no-cors mode]FAILFAILFAIL
    Same domain different protocol different port [cors mode]FAILFAILFAIL
    Cross domain different protocol [no-cors mode]FAILFAILFAIL
    Cross domain different protocol [cors mode]FAILFAILFAIL
    /fetch/api/cors/cors-basic.html (4/15, 26.67%, 0.21% of total)OKOKOK
    /fetch/api/cors/cors-basic.html (4/15, 26.67%, 0.19% of total)OKOKOK
    Same domain different protocol different port [no-cors mode]FAILFAILFAIL
    Same domain different protocol different port [cors mode]FAILFAILFAIL
    Cross domain different protocol [no-cors mode]FAILFAILFAIL
    Cross domain different protocol [cors mode]FAILFAILFAIL
    /fetch/api/cors/cors-multiple-origins-worker.html (5/6, 83.33%, 0.26% of total)OKOKOK
    /fetch/api/cors/cors-expose-star-worker.html (1/2, 50.00%, 0.05% of total)OKOKOK
    Basic Access-Control-Expose-Headers: * supportFAILFAILFAIL
    /fetch/api/cors/cors-expose-star.html (1/2, 50.00%, 0.05% of total)OKOKOK
    Basic Access-Control-Expose-Headers: * supportFAILFAILFAIL
    /fetch/api/cors/cors-multiple-origins-worker.html (5/6, 83.33%, 0.24% of total)OKOKOK
    3 origins allowed, match the 3rd (http://web-platform.test:8000)FAILFAILFAIL
    3 origins allowed, match the 3rd ("*")FAILFAILFAIL
    3 origins allowed, match twice (http://web-platform.test:8000)FAILFAILFAIL
    3 origins allowed, match twice ("*")FAILFAILFAIL
    3 origins allowed, match twice ("*" and http://web-platform.test:8000)FAILFAILFAIL
    /fetch/api/cors/cors-multiple-origins.html (5/6, 83.33%, 0.26% of total)OKOKOK
    /fetch/api/cors/cors-multiple-origins.html (5/6, 83.33%, 0.24% of total)OKOKOK
    3 origins allowed, match the 3rd (http://web-platform.test:8000)FAILFAILFAIL
    3 origins allowed, match the 3rd ("*")FAILFAILFAIL
    3 origins allowed, match twice (http://web-platform.test:8000)FAILFAILFAIL
    3 origins allowed, match twice ("*")FAILFAILFAIL
    3 origins allowed, match twice ("*" and http://web-platform.test:8000)FAILFAILFAIL
    /fetch/api/cors/cors-no-preflight-worker.html (2/15, 13.33%, 0.10% of total)OKOKOK
    /fetch/api/cors/cors-no-preflight-worker.html (2/15, 13.33%, 0.10% of total)OKOKOK
    Cross domain different protocol [GET]FAILFAILFAIL
    Same domain different protocol different port [GET]FAILFAILFAIL
    /fetch/api/cors/cors-no-preflight.html (2/15, 13.33%, 0.10% of total)OKOKOK
    /fetch/api/cors/cors-no-preflight.html (2/15, 13.33%, 0.10% of total)OKOKOK
    Cross domain different protocol [GET]FAILFAILFAIL
    Same domain different protocol different port [GET]FAILFAILFAIL
    /fetch/api/cors/cors-origin-worker.html (2/17, 11.76%, 0.10% of total)OKOKOK
    /fetch/api/cors/cors-origin-worker.html (2/17, 11.76%, 0.10% of total)OKOKOK
    Cross domain different protocol [origin OK]FAILFAILFAIL
    Same domain different protocol different port [origin OK]FAILFAILFAIL
    /fetch/api/cors/cors-origin.html (2/17, 11.76%, 0.10% of total)OKOKOK
    /fetch/api/cors/cors-origin.html (2/17, 11.76%, 0.10% of total)OKOKOK
    Cross domain different protocol [origin OK]FAILFAILFAIL
    Same domain different protocol different port [origin OK]FAILFAILFAIL
    /fetch/api/cors/cors-preflight-redirect-worker.html (10/10, 100.00%, 0.52% of total)OKOKOK
    /fetch/api/cors/cors-preflight-redirect-worker.html (10/10, 100.00%, 0.48% of total)OKOKOK
    Redirection 301 on preflight failedFAILFAILFAIL
    Redirection 301 after preflight failedFAILFAILFAIL
    Redirection 302 on preflight failedFAILFAILFAIL
    Redirection 307 after preflight failedFAILFAILFAIL
    Redirection 308 on preflight failedFAILFAILFAIL
    Redirection 308 after preflight failedFAILFAILFAIL
    /fetch/api/cors/cors-preflight-redirect.html (10/10, 100.00%, 0.52% of total)OKOKOK
    /fetch/api/cors/cors-preflight-redirect.html (10/10, 100.00%, 0.48% of total)OKOKOK
    Redirection 301 on preflight failedFAILFAILFAIL
    Redirection 301 after preflight failedFAILFAILFAIL
    Redirection 302 on preflight failedFAILFAILFAIL
    Redirection 307 after preflight failedFAILFAILFAIL
    Redirection 308 on preflight failedFAILFAILFAIL
    Redirection 308 after preflight failedFAILFAILFAIL
    /fetch/api/cors/cors-preflight-referrer-worker.html (8/10, 80.00%, 0.42% of total)OKOKOK
    /fetch/api/cors/cors-preflight-referrer-worker.html (8/10, 80.00%, 0.39% of total)OKOKOK
    Referrer policy: "" and referrer: defaultFAILFAILPASS
    Referrer policy: "" and referrer: 'myreferrer'FAILFAILPASS
    Referrer policy: origin and referrer: defaultFAILFAILPASS
    Referrer policy: origin-when-cross-origin and referrer: 'myreferrer'FAILFAILPASS
    Referrer policy: unsafe-url and referrer: defaultFAILFAILPASS
    Referrer policy: unsafe-url and referrer: 'myreferrer'FAILFAILPASS
    /fetch/api/cors/cors-preflight-referrer.html (6/10, 60.00%, 0.31% of total)OKOKOK
    /fetch/api/cors/cors-preflight-referrer.html (6/10, 60.00%, 0.29% of total)OKOKOK
    Referrer policy: "" and referrer: 'myreferrer'FAILFAILPASS
    Referrer policy: origin and referrer: defaultFAILFAILPASS
    Referrer policy: origin and referrer: 'myreferrer'FAILFAILPASS
    Referrer policy: origin-when-cross-origin and referrer: defaultFAILFAILPASS
    Referrer policy: origin-when-cross-origin and referrer: 'myreferrer'FAILFAILPASS
    Referrer policy: unsafe-url and referrer: 'myreferrer'FAILFAILPASS
    /fetch/api/cors/cors-preflight-status-worker.html (27/27, 100.00%, 1.41% of total)OKOKOK
    /fetch/api/cors/cors-preflight-star-worker.html (2/8, 25.00%, 0.10% of total)OKOKOK
    CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test)FAILFAILFAIL
    CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *)FAILFAILFAIL
    /fetch/api/cors/cors-preflight-star.html (2/8, 25.00%, 0.10% of total)OKOKOK
    CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test)FAILFAILFAIL
    CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *)FAILFAILFAIL
    /fetch/api/cors/cors-preflight-status-worker.html (27/27, 100.00%, 1.31% of total)OKOKOK
    Preflight answered with status 200FAILFAILFAIL
    Preflight answered with status 201FAILFAILFAIL
    Preflight answered with status 202FAILFAILFAIL
    Preflight answered with status 503FAILFAILFAIL
    Preflight answered with status 504FAILFAILFAIL
    Preflight answered with status 505FAILFAILFAIL
    /fetch/api/cors/cors-preflight-status.html (27/27, 100.00%, 1.41% of total)OKOKOK
    /fetch/api/cors/cors-preflight-status.html (27/27, 100.00%, 1.31% of total)OKOKOK
    Preflight answered with status 200FAILFAILFAIL
    Preflight answered with status 201FAILFAILFAIL
    Preflight answered with status 202FAILFAILFAIL
    Preflight answered with status 503FAILFAILFAIL
    Preflight answered with status 504FAILFAILFAIL
    Preflight answered with status 505FAILFAILFAIL
    /fetch/api/headers/header-values-normalize.html (2/62, 3.23%, 0.10% of total)OKOKOK
    /fetch/api/credentials/cookies-worker.html (5/7, 71.43%, 0.24% of total)OKOKOK
    Include mode: 1 cookieFAILFAILPASS
    Include mode: 2 cookiesFAILFAILPASS
    Omit mode: no cookie is storedFAILFAILPASS
    Same-origin mode: 1 cookieFAILFAILPASS
    Same-origin mode: 2 cookiesFAILFAILPASS
    /fetch/api/credentials/cookies.html (5/7, 71.43%, 0.24% of total)OKOKOK
    Include mode: 1 cookieFAILFAILPASS
    Include mode: 2 cookiesFAILFAILPASS
    Omit mode: no cookie is storedFAILFAILPASS
    Same-origin mode: 1 cookieFAILFAILPASS
    Same-origin mode: 2 cookiesFAILFAILPASS
    /fetch/api/headers/header-values-normalize.html (2/62, 3.23%, 0.10% of total)OKOKOK
    fetch() with value %0AFAILFAILPASS
    fetch() with value %0DFAILFAILPASS
    /fetch/api/headers/headers-basic.html (4/19, 21.05%, 0.21% of total)OKOKOK
    /fetch/api/headers/headers-basic.html (4/19, 21.05%, 0.19% of total)OKOKOK
    Create headers with existing headers with custom iteratorFAILFAILFAIL
    Check keys methodFAILFAILPASS
    Check values methodFAILFAILPASS
    Check entries methodFAILFAILPASS
    /fetch/api/headers/headers-idl.html (2/33, 6.06%, 0.10% of total)OKOKOK
    /fetch/api/headers/headers-combine.html (2/4, 50.00%, 0.10% of total)OKOKOK
    Create headers using same name for different valuesFAILFAILPASS
    Check append methods when called with already used nameFAILFAILPASS
    /fetch/api/headers/headers-idl.html (2/33, 6.06%, 0.10% of total)OKOKOK
    Testing Symbol.iterator property of iterable interface HeadersFAILPASSFAIL
    Testing pair iterable interface HeadersFAILPASSFAIL
    /fetch/api/headers/headers-normalize.html (3/3, 100.00%, 0.16% of total)OKOKOK
    /fetch/api/headers/headers-normalize.html (3/3, 100.00%, 0.15% of total)OKOKOK
    Create headers with not normalized valuesFAILFAILPASS
    Check append method with not normalized valuesFAILFAILPASS
    Check set method with not normalized valuesFAILFAILPASS
    /fetch/api/headers/headers-record.html (8/11, 72.73%, 0.42% of total)OKOKOK
    /fetch/api/headers/headers-record.html (8/11, 72.73%, 0.39% of total)OKOKOK
    Basic operation with one propertyFAILPASSFAIL
    Basic operation with one property and a protoFAILPASSFAIL
    Correct operation ordering with two propertiesFAILPASSFAIL
    Correct operation ordering with non-enumerable propertiesFAILPASSFAIL
    Correct operation ordering with undefined descriptorsFAILPASSFAIL
    Correct operation ordering with repeated keysFAILPASSFAIL
    /fetch/api/policies/referrer-origin-worker.html (1/2, 50.00%, 0.05% of total)OKOKOK
    /fetch/api/policies/referrer-no-referrer-service-worker.https.html (1/1, 100.00%, 0.05% of total)OKOKOK
    Fetch in service worker: referrer with no-referrer policyFAILFAILFAIL
    /fetch/api/policies/referrer-origin-service-worker.https.html (1/1, 100.00%, 0.05% of total)OKOKOK
    Fetch in service worker: referrer with no-referrer policyFAILFAILFAIL
    /fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https.html (1/1, 100.00%, 0.05% of total)OKOKOK
    Fetch in service worker: referrer with origin-when-cross-origin policyFAILFAILFAIL
    /fetch/api/policies/referrer-origin-when-cross-origin-worker.html (1/1, 100.00%, 0.05% of total)OKOKOK
    Request's referrer is originFAILFAILFAIL
    /fetch/api/policies/referrer-origin-when-cross-origin.html (1/1, 100.00%, 0.05% of total)OKOKOK
    Request's referrer is originFAILFAILFAIL
    /fetch/api/policies/referrer-origin-worker.html (1/2, 50.00%, 0.05% of total)OKOKOK
    Cross-origin referrer is overridden by client originFAILPASSFAIL
    /fetch/api/policies/referrer-origin.html (1/2, 50.00%, 0.05% of total)OKOKOK
    /fetch/api/policies/referrer-origin.html (1/2, 50.00%, 0.05% of total)OKOKOK
    Cross-origin referrer is overridden by client originFAILPASSFAIL
    /fetch/api/redirect/redirect-referrer-worker.html (9/32, 28.13%, 0.47% of total)OKOKOK
    /fetch/api/policies/referrer-unsafe-url-service-worker.https.html (1/1, 100.00%, 0.05% of total)OKOKOK
    Fetch in worker: referrer with unsafe-url policyFAILFAILFAIL
    /fetch/api/redirect/redirect-referrer-worker.html (9/32, 28.13%, 0.44% of total)OKOKOK
    Same origin redirection, empty init, strict-origin redirect header FAILPASSFAIL
    Same origin redirection, empty redirect header, same-origin init FAILPASSFAIL
    Same origin redirection, empty redirect header, strict-origin init FAILPASSFAIL
    Cross origin redirection, empty redirect header, same-origin init FAILPASSFAIL
    Cross origin redirection, empty redirect header, strict-origin init FAILPASSFAIL
    Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init FAILPASSFAIL
    /fetch/api/redirect/redirect-referrer.html (9/32, 28.13%, 0.47% of total)OKOKOK
    /fetch/api/redirect/redirect-referrer.html (9/32, 28.13%, 0.44% of total)OKOKOK
    Same origin redirection, empty init, strict-origin redirect header FAILPASSFAIL
    Same origin redirection, empty redirect header, same-origin init FAILPASSFAIL
    Same origin redirection, empty redirect header, strict-origin init FAILPASSFAIL
    Cross origin redirection, empty redirect header, same-origin init FAILPASSFAIL
    Cross origin redirection, empty redirect header, strict-origin init FAILPASSFAIL
    Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init FAILPASSFAIL
    /fetch/api/request/request-cache-no-store.html (4/8, 50.00%, 0.21% of total)OKOKOK
    /fetch/api/request/request-cache-no-store.html (4/8, 50.00%, 0.19% of total)OKOKOK
    RequestCache "no-store" mode does not store the response in the cache with Etag and stale responseFAILPASSFAIL
    RequestCache "no-store" mode does not store the response in the cache with date and stale responseFAILPASSFAIL
    RequestCache "no-store" mode does not store the response in the cache with Last-Modified and stale responseFAILPASSFAIL
    RequestCache "no-store" mode does not store the response in the cache with Etag and fresh responseFAILPASSFAIL
    RequestCache "no-store" mode does not store the response in the cache with date and fresh responseFAILPASSFAIL
    /fetch/api/request/request-consume-empty.html (2/12, 16.67%, 0.10% of total)OKOKOK
    RequestCache "no-store" mode does not store the response in the cache with Last-Modified and fresh responseFAILPASSFAIL
    /fetch/api/request/request-consume-empty.html (2/12, 16.67%, 0.10% of total)OKOKOK
    Consume request's body as formDataFAILFAILFAIL
    Consume empty FormData request body as textFAILFAILFAIL
    /fetch/api/request/request-consume.html (1/38, 2.63%, 0.05% of total)OKOKOK
    /fetch/api/request/request-consume.html (1/38, 2.63%, 0.05% of total)OKOKOK
    Consume FormData request's body as FormDataFAILPASSFAIL
    /fetch/api/request/request-disturbed.html (3/8, 37.50%, 0.16% of total)OKOKOK
    /fetch/api/request/request-disturbed.html (3/8, 37.50%, 0.15% of total)OKOKOK
    Request's body: initial stateFAILFAILFAIL
    Input request used for creating new request became disturbedFAILFAILFAIL
    Input request used for creating new request became disturbed even if body is not usedFAILFAILFAIL
    /fetch/api/request/request-error.html (1/21, 4.76%, 0.05% of total)OKOKOK
    /fetch/api/request/request-error.html (1/21, 4.76%, 0.05% of total)OKOKOK
    RequestInit's window is not nullFAILFAILPASS
    /fetch/api/request/request-idl.html (8/47, 17.02%, 0.42% of total)OKOKOK
    /fetch/api/request/request-idl.html (8/47, 17.02%, 0.39% of total)OKOKOK
    Request interface: attribute typeFAILFAILPASS
    Request interface: attribute destinationFAILFAILPASS
    Request interface: attribute bodyFAILFAILFAIL
    Request interface: new Request("") must inherit property "destination" with the proper type (4)FAILFAILPASS
    Request interface: new Request("") must inherit property "body" with the proper type (13)FAILFAILFAIL
    Request interface: new Request("") must inherit property "formData" with the proper type (17)FAILPASSFAIL
    /fetch/api/request/request-init-001.sub.html (5/35, 14.29%, 0.26% of total)OKOKOK
    /fetch/api/request/request-init-001.sub.html (5/35, 14.29%, 0.24% of total)OKOKOK
    Check referrer init value of http://test.url and associated getterFAILPASSFAIL
    Check referrerPolicy init value of same-origin and associated getterFAILPASSFAIL
    Check referrerPolicy init value of strict-origin and associated getterFAILPASSFAIL
    Check referrerPolicy init value of strict-origin-when-cross-origin and associated getterFAILPASSFAIL
    Check mode init value of navigate and associated getterFAILPASSFAIL
    /fetch/api/request/request-init-003.sub.html (1/4, 25.00%, 0.05% of total)OKOKOK
    /fetch/api/request/request-init-003.sub.html (1/4, 25.00%, 0.05% of total)OKOKOK
    Check request values when initialized from url stringFAILFAILFAIL
    /fetch/api/request/request-keepalive-quota.html (2/6, 33.33%, 0.10% of total)OKOKOK
    /fetch/api/request/request-keepalive-quota.html (2/6, 33.33%, 0.10% of total)OKOKOK
    A Keep-Alive fetch() with a body over the Quota Limit should reject.FAILFAILFAIL
    A Keep-Alive fetch() should not be allowed if the Quota is used up.FAILFAILFAIL
    /fetch/api/request/request-structure.html (3/19, 15.79%, 0.16% of total)OKOKOK
    /fetch/api/request/request-structure.html (3/19, 15.79%, 0.15% of total)OKOKOK
    Request has formData methodFAILPASSFAIL
    Check type attributeFAILFAILPASS
    Check destination attributeFAILFAILPASS
    /fetch/api/response/response-clone.html (11/18, 61.11%, 0.57% of total)OKOKOK
    /fetch/api/response/response-clone.html (11/18, 61.11%, 0.53% of total)OKOKOK
    Check response clone use structureClone for teed ReadableStreams (Int8Arraychunk)FAILFAILPASS
    Check response clone use structureClone for teed ReadableStreams (Int16Arraychunk)FAILFAILPASS
    Check response clone use structureClone for teed ReadableStreams (Int32Arraychunk)FAILFAILPASS
    Check response clone use structureClone for teed ReadableStreams (Float32Arraychunk)FAILFAILPASS
    Check response clone use structureClone for teed ReadableStreams (Float64Arraychunk)FAILFAILPASS
    Check response clone use structureClone for teed ReadableStreams (DataViewchunk)FAILFAILPASS
    /fetch/api/response/response-consume-empty.html (2/12, 16.67%, 0.10% of total)OKOKOK
    /fetch/api/response/response-consume-empty.html (2/12, 16.67%, 0.10% of total)OKOKOK
    Consume response's body as formDataFAILFAILFAIL
    Consume empty FormData response body as textFAILFAILFAIL
    /fetch/api/response/response-consume-stream.html (2/9, 22.22%, 0.10% of total)OKOKOK
    /fetch/api/response/response-consume-stream.html (2/9, 22.22%, 0.10% of total)OKOKOK
    Read form data response's body as readableStreamFAILFAILFAIL
    Getting a redirect Response streamFAILFAILFAIL
    /fetch/api/response/response-consume.html (19/39, 48.72%, 0.99% of total)OKOKOK
    /fetch/api/response/response-consume.html (19/39, 48.72%, 0.92% of total)OKOKOK
    Consume response's body: from text with correct multipart type to formDataFAILPASSFAIL
    Consume response's body: from text without correct multipart type to formData (error case)FAILPASSFAIL
    Consume response's body: from text with correct urlencoded type to formDataFAILPASSFAIL
    Consume response's body: from stream without correct urlencoded type to formData (error case)FAILFAILFAIL
    Consume response's body: from fetch without correct type to formData (error case)FAILPASSFAIL
    Consume response's body: from multipart form data blob to formDataFAILPASSFAIL
    /fetch/nosniff/parsing-nosniff.html (1/6, 16.67%, 0.05% of total)OKOKOK
    /fetch/api/response/response-idl.html (2/42, 4.76%, 0.10% of total)OKOKOK
    Response interface: attribute trailerFAILFAILFAIL
    Response interface: new Response() must inherit property "trailer" with the proper type (8)FAILFAILFAIL
    /fetch/api/response/response-trailer.html (1/1, 100.00%, 0.05% of total)OKOKOK
    trailer() testFAILFAILFAIL
    /fetch/http-cache/cc-request.html (6/12, 50.00%, 0.29% of total)OKOKOK
    HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=1.FAILPASSFAIL
    HTTP cache doesn't use fresh response with Age header when request contains Cache-Control: max-age that is greater than remaining freshness.FAILPASSFAIL
    HTTP cache doesn't reuse fresh response when request contains Cache-Control: min-fresh that wants it fresher.FAILPASSFAIL
    HTTP cache doesn't reuse fresh response with Age header when request contains Cache-Control: min-fresh that wants it fresher.FAILPASSFAIL
    HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-store.FAILPASSFAIL
    HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached.FAILFAILFAIL
    /fetch/http-cache/heuristic.html (6/16, 37.50%, 0.29% of total)OKOKOK
    HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present.FAILFAILFAIL
    HTTP cache reuses a 204 No Content response with Last-Modified based upon heuristic freshness.FAILFAILPASS
    HTTP cache reuses a 404 Not Found response with Last-Modified based upon heuristic freshness.FAILFAILPASS
    HTTP cache reuses a 405 Method Not Allowed response with Last-Modified based upon heuristic freshness.FAILFAILPASS
    HTTP cache reuses a 414 URI Too Long response with Last-Modified based upon heuristic freshness.FAILFAILPASS
    HTTP cache reuses a 501 Not Implemented response with Last-Modified based upon heuristic freshness.FAILFAILPASS
    /fetch/http-cache/invalidate.html (9/15, 60.00%, 0.44% of total)OKOKOK
    HTTP cache does not invalidate after a failed response from an unsafe requestPASSFAILFAIL
    HTTP cache invalidates Location URL after a successful response from a POSTFAILPASSFAIL
    HTTP cache invalidates Location URL after a successful response from a PUTFAILPASSFAIL
    HTTP cache invalidates Location URL after a successful response from a DELETEFAILPASSFAIL
    HTTP cache invalidates Location URL after a successful response from an unknown methodFAILPASSFAIL
    HTTP cache invalidates Content-Location URL after a successful response from a POSTFAILPASSFAIL
    HTTP cache invalidates Content-Location URL after a successful response from a PUTFAILPASSFAIL
    HTTP cache invalidates Content-Location URL after a successful response from a DELETEFAILPASSFAIL
    HTTP cache invalidates Content-Location URL after a successful response from an unknown methodFAILPASSFAIL
    /fetch/http-cache/partial.html (4/4, 100.00%, 0.19% of total)OKOKOK
    HTTP cache stores partial content and reuses it.FAILFAILFAIL
    HTTP cache stores complete response and serves smaller ranges from it.FAILFAILFAIL
    HTTP cache stores partial response and serves smaller ranges from it.FAILFAILFAIL
    HTTP cache stores partial content and completes it.FAILFAILFAIL
    /fetch/http-cache/status.html (8/26, 30.77%, 0.39% of total)OKOKOK
    HTTP cache avoids going to the network if it has a fresh 299 response.PASSFAILFAIL
    HTTP cache avoids going to the network if it has a fresh 400 response.PASSFAILFAIL
    HTTP cache avoids going to the network if it has a fresh 499 response.PASSFAILFAIL
    HTTP cache avoids going to the network if it has a fresh 500 response.PASSFAILFAIL
    HTTP cache avoids going to the network if it has a fresh 502 response.PASSFAILFAIL
    HTTP cache avoids going to the network if it has a fresh 503 response.PASSFAILFAIL
    HTTP cache avoids going to the network if it has a fresh 504 response.PASSFAILFAIL
    HTTP cache avoids going to the network if it has a fresh 599 response.PASSFAILFAIL
    /fetch/http-cache/vary.html (1/11, 9.09%, 0.05% of total)OKOKOK
    HTTP cache doesn't invalidate existing Vary response.FAILFAILFAIL
    /fetch/nosniff/parsing-nosniff.html (1/6, 16.67%, 0.05% of total)OKOKOK
    URL query: firstFAILPASSFAIL
    /fetch/nosniff/stylesheet.html (4/6, 66.67%, 0.21% of total)OKOKOK
    /fetch/nosniff/stylesheet.html (4/6, 66.67%, 0.19% of total)OKOKOK
    URL query: FAILPASSFAIL
    URL query: ?type=FAILPASSFAIL
    URL query: ?type=xFAILPASSFAIL