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 | Ch59 | FF55 | Sa10 |
---|---|---|---|
Fetch ../resources/top.txt with no-cors mode | PASS | PASS | PASS |
Fetch http://web-platform.test:8000/fetch/api/resources/top.txt with no-cors mode | PASS | PASS | PASS |
Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with no-cors mode | FAIL | FAIL | FAIL |
Fetch http://web-platform.test:54706/fetch/api/resources/top.txt with no-cors mode | PASS | PASS | PASS |
/fetch/api/basic/mode-no-cors.html | OK | OK | OK |
Fetch ../resources/top.txt with no-cors mode | PASS | PASS | PASS |
Fetch http://web-platform.test:8000/fetch/api/resources/top.txt with no-cors mode | PASS | PASS | PASS |
Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with no-cors mode | FAIL | FAIL | FAIL |
Fetch http://web-platform.test:54706/fetch/api/resources/top.txt with no-cors mode | PASS | PASS | PASS |
/fetch/api/basic/mode-same-origin-worker.html | OK | OK | OK |
Fetch ../resources/top.txt with same-origin mode | PASS | PASS | PASS |
Fetch http://web-platform.test:8000/fetch/api/resources/top.txt with same-origin mode | PASS | PASS | PASS |
Fetch with PUT and mode "same-origin" needs an Origin header | PASS | PASS | PASS |
Fetch with TacO and mode "same-origin" needs an Origin header | PASS | PASS | PASS |
Fetch with TacO and mode "cors" needs an Origin header | PASS | PASS | PASS |
/fetch/api/basic/request-referrer.html | OK | OK | OK |
Fetch: fetch() respects Request referrer value | PASS | PASS | PASS |
Fetch: fetch() respects Request referrer value 1 | PASS | PASS | PASS |
/fetch/api/basic/request-upload-worker.html | OK | OK | OK |
/fetch/api/basic/request-referrer-redirected-worker.html | OK | OK | OK |
about:client referrer | PASS | PASS | PASS |
url referrer | PASS | PASS | PASS |
/fetch/api/basic/request-referrer-worker.html | OK | OK | OK |
about:client referrer | PASS | PASS | PASS |
url referrer | PASS | PASS | PASS |
/fetch/api/basic/request-referrer.html | OK | OK | OK |
about:client referrer | PASS | PASS | PASS |
url referrer | PASS | PASS | PASS |
/fetch/api/basic/request-upload-worker.html | OK | OK | OK |
Fetch with PUT with body | PASS | PASS | PASS |
Fetch with POST with text body | PASS | PASS | PASS |
Fetch with POST with URLSearchParams body | PASS | PASS | PASS |
Fetch with POST with ReadableStream containing number | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing ArrayBuffer | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing Blob | FAIL | FAIL | FAIL |
/fetch/api/basic/request-upload.html | OK | OK | OK |
/fetch/api/basic/request-upload.html | OK | OK | OK |
Fetch with PUT with body | PASS | PASS | PASS |
Fetch with POST with text body | PASS | PASS | PASS |
Fetch with POST with URLSearchParams body | PASS | PASS | PASS |
Fetch with POST with ReadableStream containing number | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing ArrayBuffer | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing Blob | FAIL | FAIL | FAIL |
/fetch/api/basic/response-url-worker.html | OK | OK | OK |
/fetch/api/basic/response-url-worker.html | OK | OK | OK |
Testing response url getter with http://web-platform.test:8000/ada | PASS | PASS | PASS |
Testing response url getter with http://web-platform.test:8000/# | PASS | PASS | PASS |
Testing response url getter with http://web-platform.test:8000/#ada | PASS | PASS | PASS |
Testing response url getter with http://web-platform.test:8000#ada | PASS | PASS | PASS |
/fetch/api/basic/response-url.html | OK | OK | OK |
/fetch/api/basic/response-url.html | OK | OK | OK |
Testing response url getter with http://web-platform.test:8000/ada | PASS | PASS | PASS |
Testing response url getter with http://web-platform.test:8000/# | PASS | PASS | PASS |
Testing response url getter with http://web-platform.test:8000/#ada | PASS | PASS | PASS |
Testing response url getter with http://web-platform.test:8000#ada | PASS | PASS | PASS |
/fetch/api/basic/scheme-about-worker.html | OK | OK | OK |
/fetch/api/basic/scheme-about-worker.html | OK | OK | OK |
Fetching about:blank (GET) is OK | FAIL | PASS | FAIL |
Fetching about:blank (PUT) is OK | FAIL | PASS | FAIL |
Fetching about:blank (POST) is OK | FAIL | PASS | FAIL |
Fetching about:invalid.com is KO | PASS | PASS | PASS |
Fetching about:config is KO | PASS | PASS | PASS |
Fetching about:unicorn is KO | PASS | PASS | PASS |
/fetch/api/basic/scheme-about.html | OK | OK | OK |
/fetch/api/basic/scheme-about.html | OK | OK | OK |
Fetching about:blank (GET) is OK | FAIL | PASS | FAIL |
Fetching about:blank (PUT) is OK | FAIL | PASS | FAIL |
Fetching about:blank (POST) is OK | FAIL | PASS | FAIL |
Fetching about:invalid.com is KO | PASS | PASS | PASS |
Fetching about:config is KO | PASS | PASS | PASS |
Fetching about:unicorn is KO | PASS | PASS | PASS |
/fetch/api/basic/scheme-blob-worker.html | OK | OK | OK |
/fetch/api/basic/scheme-blob-worker.html | OK | OK | OK |
Fetching [GET] URL.createObjectURL(blob) is OK | PASS | PASS | PASS |
Fetching [GET] blob:http://www.web-platform.test:8000/ is KO | PASS | PASS | PASS |
Fetching [POST] URL.createObjectURL(blob) is KO | PASS | PASS | PASS |
Fetching [PUT] URL.createObjectURL(blob) is KO | PASS | PASS | PASS |
Fetching [DELETE] URL.createObjectURL(blob) is KO | PASS | PASS | PASS |
Fetching [INVALID] URL.createObjectURL(blob) is KO | PASS | PASS | PASS |
/fetch/api/basic/scheme-blob.html | OK | OK | OK |
/fetch/api/basic/scheme-blob.html | OK | OK | OK |
Fetching [GET] URL.createObjectURL(blob) is OK | PASS | PASS | PASS |
Fetching [GET] blob:http://www.web-platform.test:8000/ is KO | PASS | PASS | PASS |
Fetching [POST] URL.createObjectURL(blob) is KO | PASS | PASS | PASS |
Fetching [PUT] URL.createObjectURL(blob) is KO | PASS | PASS | PASS |
Fetching [DELETE] URL.createObjectURL(blob) is KO | PASS | PASS | PASS |
Fetching [INVALID] URL.createObjectURL(blob) is KO | PASS | PASS | PASS |
/fetch/api/basic/scheme-data-worker.html | OK | OK | OK |
/fetch/api/basic/scheme-data-worker.html | OK | OK | OK |
Fetching data:,response%27s%20body is OK | PASS | PASS | PASS |
Fetching data:,response%27s%20body is OK (same-origin) | PASS | PASS | PASS |
Fetching data:,response%27s%20body is OK (cors) | PASS | PASS | PASS |
Fetching data:text/plain;base64,cmVzcG9uc2UncyBib[...] is OK | FAIL | PASS | PASS |
Fetching data:image/png;base64,cmVzcG9uc2UncyBib2[...] is OK | FAIL | PASS | PASS |
Fetching data:text/plain;base64,cmVzcG9uc2UncyBib[...] is OK | PASS | PASS | PASS |
Fetching data:image/png;base64,cmVzcG9uc2UncyBib2[...] is OK | PASS | PASS | PASS |
Fetching [POST] data:,response%27s%20body is OK | PASS | PASS | PASS |
Fetching [HEAD] data:,response%27s%20body is OK | PASS | PASS | PASS |
Fetching [GET] data:notAdataUrl.com is KO | PASS | PASS | FAIL |
/fetch/api/basic/scheme-data.html | OK | OK | OK |
/fetch/api/basic/scheme-data.html | OK | OK | OK |
Fetching data:,response%27s%20body is OK | PASS | PASS | PASS |
Fetching data:,response%27s%20body is OK (same-origin) | PASS | PASS | PASS |
Fetching data:,response%27s%20body is OK (cors) | PASS | PASS | PASS |
Fetching data:text/plain;base64,cmVzcG9uc2UncyBib[...] is OK | FAIL | PASS | PASS |
Fetching data:image/png;base64,cmVzcG9uc2UncyBib2[...] is OK | FAIL | PASS | PASS |
Fetching data:text/plain;base64,cmVzcG9uc2UncyBib[...] is OK | PASS | PASS | PASS |
Fetching data:image/png;base64,cmVzcG9uc2UncyBib2[...] is OK | PASS | PASS | PASS |
Fetching [POST] data:,response%27s%20body is OK | PASS | PASS | PASS |
Fetching [HEAD] data:,response%27s%20body is OK | PASS | PASS | PASS |
Fetching [GET] data:notAdataUrl.com is KO | PASS | PASS | FAIL |
/fetch/api/basic/scheme-others-worker.html | OK | OK | OK |
/fetch/api/basic/scheme-others-worker.html | OK | OK | OK |
Fetching aaa://web-platform.test:8000/ is KO | PASS | PASS | PASS |
Fetching cap://web-platform.test:8000/ is KO | PASS | PASS | PASS |
Fetching cid://web-platform.test:8000/ is KO | PASS | PASS | PASS |
Fetching pop://web-platform.test:8000/ is KO | PASS | PASS | PASS |
Fetching rtsp://web-platform.test:8000/ is KO | PASS | PASS | PASS |
Fetching snmp://web-platform.test:8000/ is KO | PASS | PASS | PASS |
/fetch/api/basic/scheme-others.html | OK | OK | OK |
/fetch/api/basic/scheme-others.html | OK | OK | OK |
Fetching aaa://web-platform.test:8000/ is KO | PASS | PASS | PASS |
Fetching cap://web-platform.test:8000/ is KO | PASS | PASS | PASS |
Fetching cid://web-platform.test:8000/ is KO | PASS | PASS | PASS |
Fetching pop://web-platform.test:8000/ is KO | PASS | PASS | PASS |
Fetching rtsp://web-platform.test:8000/ is KO | PASS | PASS | PASS |
Fetching snmp://web-platform.test:8000/ is KO | PASS | PASS | PASS |
/fetch/api/basic/stream-response-worker.html | OK | OK | OK |
/fetch/api/basic/stream-response-worker.html | OK | OK | OK |
Stream response's body | PASS | FAIL | PASS |
/fetch/api/basic/stream-response.html | OK | OK | OK |
/fetch/api/basic/stream-response.html | OK | OK | OK |
Stream response's body | PASS | FAIL | PASS |
/fetch/api/basic/text-utf8.html | OK | OK | OK |
/fetch/api/basic/text-utf8.html | OK | OK | OK |
UTF-8 with BOM with Request.text() | PASS | PASS | PASS |
UTF-8 with BOM with Response.text() | PASS | PASS | PASS |
UTF-8 with BOM with fetched data (UTF-8 charset) | PASS | PASS | PASS |
UTF-16 without BOM decoded as UTF-8 with fetched data (UTF-16 charset) | PASS | PASS | PASS |
UTF-16 without BOM decoded as UTF-8 (Response object) | PASS | PASS | PASS |
UTF-16 without BOM decoded as UTF-8 (Request object) | PASS | PASS | PASS |
/fetch/api/cors/cors-basic-worker.html | OK | OK | OK |
/fetch/api/cors/cors-basic-worker.html | OK | OK | OK |
Same domain different port [no-cors mode] | PASS | PASS | PASS |
Same domain different port [server forbid CORS] | PASS | PASS | PASS |
Same domain different port [cors mode] | PASS | PASS | PASS |
Cross domain different protocol [no-cors mode] | FAIL | FAIL | FAIL |
Cross domain different protocol [server forbid CORS] | PASS | PASS | PASS |
Cross domain different protocol [cors mode] | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-basic.html | OK | OK | OK |
/fetch/api/cors/cors-basic.html | OK | OK | OK |
Same domain different port [no-cors mode] | PASS | PASS | PASS |
Same domain different port [server forbid CORS] | PASS | PASS | PASS |
Same domain different port [cors mode] | PASS | PASS | PASS |
Cross domain different protocol [no-cors mode] | FAIL | FAIL | FAIL |
Cross domain different protocol [server forbid CORS] | PASS | PASS | PASS |
Cross domain different protocol [cors mode] | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-cookies-worker.html | OK | OK | OK |
/fetch/api/cors/cors-cookies-worker.html | OK | OK | OK |
Omit mode: no cookie sent | PASS | PASS | PASS |
Include mode: 1 cookie | PASS | PASS | PASS |
Include mode: local cookies are not sent with remote request | PASS | PASS | PASS |
Include mode: remote cookies are not sent with local request | PASS | PASS | PASS |
Same-origin mode: cookies are discarded in cors request | PASS | PASS | PASS |
Include mode: remote cookies are not sent with other remote request | PASS | PASS | PASS |
/fetch/api/cors/cors-cookies.html | OK | OK | OK |
/fetch/api/cors/cors-cookies.html | OK | OK | OK |
Omit mode: no cookie sent | PASS | PASS | PASS |
Include mode: 1 cookie | PASS | PASS | PASS |
Include mode: local cookies are not sent with remote request | PASS | PASS | PASS |
Include mode: remote cookies are not sent with local request | PASS | PASS | PASS |
Same-origin mode: cookies are discarded in cors request | PASS | PASS | PASS |
Include mode: remote cookies are not sent with other remote request | PASS | PASS | PASS |
/fetch/api/cors/cors-filtering-worker.html | OK | OK | OK |
/fetch/api/cors/cors-expose-star-worker.html | OK | OK | OK |
Basic Access-Control-Expose-Headers: * support | FAIL | FAIL | FAIL |
Cannot use * for credentialed fetches | PASS | PASS | PASS |
/fetch/api/cors/cors-expose-star.html | OK | OK | OK |
Basic Access-Control-Expose-Headers: * support | FAIL | FAIL | FAIL |
Cannot use * for credentialed fetches | PASS | PASS | PASS |
/fetch/api/cors/cors-filtering-worker.html | OK | OK | OK |
CORS filter on Cache-Control header | PASS | PASS | PASS |
CORS filter on Content-Language header | PASS | PASS | PASS |
CORS filter on Content-Type header | PASS | PASS | PASS |
CORS filter on Content-Length header, header is exposed | PASS | PASS | PASS |
CORS filter on Set-Cookie header, header is exposed | PASS | PASS | PASS |
CORS filter on Set-Cookie2 header, header is exposed | PASS | PASS | PASS |
/fetch/api/cors/cors-filtering.html | OK | OK | OK |
/fetch/api/cors/cors-filtering.html | OK | OK | OK |
CORS filter on Cache-Control header | PASS | PASS | PASS |
CORS filter on Content-Language header | PASS | PASS | PASS |
CORS filter on Content-Type header | PASS | PASS | PASS |
CORS filter on Content-Length header, header is exposed | PASS | PASS | PASS |
CORS filter on Set-Cookie header, header is exposed | PASS | PASS | PASS |
CORS filter on Set-Cookie2 header, header is exposed | PASS | PASS | PASS |
/fetch/api/cors/cors-multiple-origins-worker.html | OK | OK | OK |
/fetch/api/cors/cors-multiple-origins-worker.html | OK | OK | OK |
3 origins allowed, match the 3rd (http://web-platform.test:8000) | FAIL | FAIL | FAIL |
3 origins allowed, match the 3rd ("*") | FAIL | FAIL | FAIL |
3 origins allowed, match twice (http://web-platform.test:8000) | FAIL | FAIL | FAIL |
3 origins allowed, match twice ("*") | FAIL | FAIL | FAIL |
3 origins allowed, match twice ("*" and http://web-platform.test:8000) | FAIL | FAIL | FAIL |
3 origins allowed, no match | PASS | PASS | PASS |
/fetch/api/cors/cors-multiple-origins.html | OK | OK | OK |
/fetch/api/cors/cors-multiple-origins.html | OK | OK | OK |
3 origins allowed, match the 3rd (http://web-platform.test:8000) | FAIL | FAIL | FAIL |
3 origins allowed, match the 3rd ("*") | FAIL | FAIL | FAIL |
3 origins allowed, match twice (http://web-platform.test:8000) | FAIL | FAIL | FAIL |
3 origins allowed, match twice ("*") | FAIL | FAIL | FAIL |
3 origins allowed, match twice ("*" and http://web-platform.test:8000) | FAIL | FAIL | FAIL |
3 origins allowed, no match | PASS | PASS | PASS |
/fetch/api/cors/cors-no-preflight-worker.html | OK | OK | OK |
/fetch/api/cors/cors-no-preflight-worker.html | OK | OK | OK |
Cross domain basic usage [GET] | PASS | PASS | PASS |
Same domain different port [GET] | PASS | PASS | PASS |
Cross domain different port [GET] | PASS | PASS | PASS |
Cross domain [GET] [Content-Type: text/plain] | PASS | PASS | PASS |
Cross domain [GET] [Content-Type: text/plain;charset=utf-8] | PASS | PASS | PASS |
Cross domain [GET] [Content-Type: Text/Plain;charset=utf-8] | PASS | PASS | PASS |
/fetch/api/cors/cors-no-preflight.html | OK | OK | OK |
/fetch/api/cors/cors-no-preflight.html | OK | OK | OK |
Cross domain basic usage [GET] | PASS | PASS | PASS |
Same domain different port [GET] | PASS | PASS | PASS |
Cross domain different port [GET] | PASS | PASS | PASS |
Cross domain [GET] [Content-Type: text/plain] | PASS | PASS | PASS |
Cross domain [GET] [Content-Type: text/plain;charset=utf-8] | PASS | PASS | PASS |
Cross domain [GET] [Content-Type: Text/Plain;charset=utf-8] | PASS | PASS | PASS |
/fetch/api/cors/cors-origin-worker.html | OK | OK | OK |
/fetch/api/cors/cors-origin-worker.html | OK | OK | OK |
Cross domain different subdomain [origin OK] | PASS | PASS | PASS |
Cross domain different subdomain [origin KO] | PASS | PASS | PASS |
Same domain different port [origin OK] | PASS | PASS | PASS |
CORS preflight [PUT] [origin OK] | PASS | PASS | PASS |
CORS preflight [PUT] [origin KO] | PASS | PASS | PASS |
Allowed origin: "" [origin KO] | PASS | PASS | PASS |
/fetch/api/cors/cors-origin.html | OK | OK | OK |
/fetch/api/cors/cors-origin.html | OK | OK | OK |
Cross domain different subdomain [origin OK] | PASS | PASS | PASS |
Cross domain different subdomain [origin KO] | PASS | PASS | PASS |
Same domain different port [origin OK] | PASS | PASS | PASS |
CORS preflight [PUT] [origin OK] | PASS | PASS | PASS |
CORS preflight [PUT] [origin KO] | PASS | PASS | PASS |
Allowed origin: "" [origin KO] | PASS | PASS | PASS |
/fetch/api/cors/cors-preflight-redirect-worker.html | OK | OK | OK |
/fetch/api/cors/cors-preflight-redirect-worker.html | OK | OK | OK |
Redirection 301 on preflight failed | FAIL | FAIL | FAIL |
Redirection 301 after preflight failed | FAIL | FAIL | FAIL |
Redirection 302 on preflight failed | FAIL | FAIL | FAIL |
Redirection 307 after preflight failed | FAIL | FAIL | FAIL |
Redirection 308 on preflight failed | FAIL | FAIL | FAIL |
Redirection 308 after preflight failed | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-preflight-redirect.html | OK | OK | OK |
/fetch/api/cors/cors-preflight-redirect.html | OK | OK | OK |
Redirection 301 on preflight failed | FAIL | FAIL | FAIL |
Redirection 301 after preflight failed | FAIL | FAIL | FAIL |
Redirection 302 on preflight failed | FAIL | FAIL | FAIL |
Redirection 307 after preflight failed | FAIL | FAIL | FAIL |
Redirection 308 on preflight failed | FAIL | FAIL | FAIL |
Redirection 308 after preflight failed | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-preflight-referrer-worker.html | OK | OK | OK |
/fetch/api/cors/cors-preflight-referrer-worker.html | OK | OK | OK |
Referrer policy: no-referrer and referrer: default | FAIL | PASS | PASS |
Referrer policy: no-referrer and referrer: 'myreferrer' | FAIL | PASS | PASS |
Referrer policy: "" and referrer: default | FAIL | FAIL | PASS |
Referrer policy: origin-when-cross-origin and referrer: 'myreferrer' | FAIL | FAIL | PASS |
Referrer policy: unsafe-url and referrer: default | FAIL | FAIL | PASS |
Referrer policy: unsafe-url and referrer: 'myreferrer' | FAIL | FAIL | PASS |
/fetch/api/cors/cors-preflight-referrer.html | OK | OK | OK |
/fetch/api/cors/cors-preflight-referrer.html | OK | OK | OK |
Referrer policy: no-referrer and referrer: default | FAIL | PASS | PASS |
Referrer policy: no-referrer and referrer: 'myreferrer' | FAIL | PASS | PASS |
Referrer policy: "" and referrer: default | PASS | FAIL | PASS |
Referrer policy: origin-when-cross-origin and referrer: 'myreferrer' | FAIL | FAIL | PASS |
Referrer policy: unsafe-url and referrer: default | PASS | FAIL | PASS |
Referrer policy: unsafe-url and referrer: 'myreferrer' | FAIL | FAIL | PASS |
/fetch/api/cors/cors-preflight-status-worker.html | OK | OK | OK |
/fetch/api/cors/cors-preflight-star-worker.html | OK | OK | OK |
CORS that succeeds with credentials: false; method: GET (allowed: get); header: X-Test,1 (allowed: x-test) | PASS | PASS | PASS |
CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test) | FAIL | FAIL | FAIL |
CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *) | FAIL | FAIL | FAIL |
CORS that fails with credentials: true; method: OK (allowed: *); header: X-Test,1 (allowed: *) | PASS | PASS | PASS |
CORS that fails with credentials: true; method: PUT (allowed: *); header: undefined (allowed: ) | PASS | PASS | PASS |
CORS that fails with credentials: true; method: PUT (allowed: put); header: undefined (allowed: *) | PASS | PASS | PASS |
CORS that fails with credentials: true; method: GET (allowed: get); header: X-Test,1 (allowed: *) | PASS | PASS | PASS |
CORS that fails with credentials: true; method: GET (allowed: *); header: X-Test,1 (allowed: *) | PASS | PASS | PASS |
/fetch/api/cors/cors-preflight-star.html | OK | OK | OK |
CORS that succeeds with credentials: false; method: GET (allowed: get); header: X-Test,1 (allowed: x-test) | PASS | PASS | PASS |
CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test) | FAIL | FAIL | FAIL |
CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *) | FAIL | FAIL | FAIL |
CORS that fails with credentials: true; method: OK (allowed: *); header: X-Test,1 (allowed: *) | PASS | PASS | PASS |
CORS that fails with credentials: true; method: PUT (allowed: *); header: undefined (allowed: ) | PASS | PASS | PASS |
CORS that fails with credentials: true; method: PUT (allowed: put); header: undefined (allowed: *) | PASS | PASS | PASS |
CORS that fails with credentials: true; method: GET (allowed: get); header: X-Test,1 (allowed: *) | PASS | PASS | PASS |
CORS that fails with credentials: true; method: GET (allowed: *); header: X-Test,1 (allowed: *) | PASS | PASS | PASS |
/fetch/api/cors/cors-preflight-status-worker.html | OK | OK | OK |
Preflight answered with status 200 | FAIL | FAIL | FAIL |
Preflight answered with status 201 | FAIL | FAIL | FAIL |
Preflight answered with status 202 | FAIL | FAIL | FAIL |
Preflight answered with status 503 | FAIL | FAIL | FAIL |
Preflight answered with status 504 | FAIL | FAIL | FAIL |
Preflight answered with status 505 | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-preflight-status.html | OK | OK | OK |
/fetch/api/cors/cors-preflight-status.html | OK | OK | OK |
Preflight answered with status 200 | FAIL | FAIL | FAIL |
Preflight answered with status 201 | FAIL | FAIL | FAIL |
Preflight answered with status 202 | FAIL | FAIL | FAIL |
Preflight answered with status 503 | FAIL | FAIL | FAIL |
Preflight answered with status 504 | FAIL | FAIL | FAIL |
Preflight answered with status 505 | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-preflight-worker.html | OK | OK | OK |
/fetch/api/cors/cors-preflight-worker.html | OK | OK | OK |
CORS [DELETE], server allows | PASS | PASS | PASS |
CORS [DELETE], server refuses | PASS | PASS | PASS |
CORS [PUT], server allows | PASS | PASS | PASS |
CORS [GET] [several headers], server refuses | PASS | PASS | PASS |
CORS [PUT] [several headers], server allows | PASS | PASS | PASS |
CORS [PUT] [several headers], server refuses | PASS | PASS | PASS |
/fetch/api/cors/cors-preflight.html | OK | OK | OK |
CORS [PUT] [only safe headers], server allows | PASS | PASS | PASS |
/fetch/api/cors/cors-preflight.html | OK | OK | OK |
CORS [DELETE], server allows | PASS | PASS | PASS |
CORS [DELETE], server refuses | PASS | PASS | PASS |
CORS [PUT], server allows | PASS | PASS | PASS |
CORS [GET] [several headers], server refuses | PASS | PASS | PASS |
CORS [PUT] [several headers], server allows | PASS | PASS | PASS |
CORS [PUT] [several headers], server refuses | PASS | PASS | PASS |
/fetch/api/cors/cors-redirect-credentials-worker.html | OK | OK | OK |
Redirect 301 from same origin to remote with user and password | PASS | PASS | PASS |
Redirect 301 from same origin to remote with user | PASS | PASS | PASS |
Redirect 301 from same origin to remote with password | PASS | PASS | PASS |
Redirect 301 from remote to same origin with user and password | PASS | PASS | PASS |
Redirect 301 from remote to same origin with user | PASS | PASS | PASS |
Redirect 301 from remote to same origin with password | PASS | PASS | PASS |
Redirect 301 from remote to same remote with user and password | PASS | PASS | PASS |
Redirect 301 from remote to same remote with user | PASS | PASS | PASS |
Redirect 301 from remote to same remote with password | PASS | PASS | PASS |
Redirect 301 from remote to another remote with user and password | PASS | PASS | PASS |
Redirect 301 from remote to another remote with user | PASS | PASS | PASS |
Redirect 301 from remote to another remote with password | PASS | PASS | PASS |
Redirect 302 from same origin to remote with user and password | PASS | PASS | PASS |
Redirect 302 from same origin to remote with user | PASS | PASS | PASS |
Redirect 302 from same origin to remote with password | PASS | PASS | PASS |
Redirect 302 from remote to same origin with user and password | PASS | PASS | PASS |
Redirect 302 from remote to same origin with user | PASS | PASS | PASS |
Redirect 302 from remote to same origin with password | PASS | PASS | PASS |
Redirect 302 from remote to same remote with user and password | PASS | PASS | PASS |
Redirect 302 from remote to same remote with user | PASS | PASS | PASS |
Redirect 302 from remote to same remote with password | PASS | PASS | PASS |
Redirect 302 from remote to another remote with user and password | PASS | PASS | PASS |
Redirect 302 from remote to another remote with user | PASS | PASS | PASS |
Redirect 302 from remote to another remote with password | PASS | PASS | PASS |
Redirect 303 from same origin to remote with user and password | PASS | PASS | PASS |
Redirect 303 from same origin to remote with user | PASS | PASS | PASS |
Redirect 303 from same origin to remote with password | PASS | PASS | PASS |
Redirect 303 from remote to same origin with user and password | PASS | PASS | PASS |
Redirect 303 from remote to same origin with user | PASS | PASS | PASS |
Redirect 303 from remote to same origin with password | PASS | PASS | PASS |
Redirect 303 from remote to same remote with user and password | PASS | PASS | PASS |
Redirect 303 from remote to same remote with user | PASS | PASS | PASS |
Redirect 303 from remote to same remote with password | PASS | PASS | PASS |
Redirect 303 from remote to another remote with user and password | PASS | PASS | PASS |
Redirect 303 from remote to another remote with user | PASS | PASS | PASS |
Redirect 303 from remote to another remote with password | PASS | PASS | PASS |
Redirect 307 from same origin to remote with user and password | PASS | PASS | PASS |
Redirect 307 from same origin to remote with user | PASS | PASS | PASS |
Redirect 307 from same origin to remote with password | PASS | PASS | PASS |
Redirect 307 from remote to same origin with user and password | PASS | PASS | PASS |
Redirect 307 from remote to same origin with user | PASS | PASS | PASS |
Redirect 307 from remote to same origin with password | PASS | PASS | PASS |
Redirect 307 from remote to same remote with user and password | PASS | PASS | PASS |
Redirect 307 from remote to same remote with user | PASS | PASS | PASS |
Redirect 307 from remote to same remote with password | PASS | PASS | PASS |
Redirect 307 from remote to another remote with user and password | PASS | PASS | PASS |
Redirect 307 from remote to another remote with user | PASS | PASS | PASS |
Redirect 307 from remote to another remote with password | PASS | PASS | PASS |
Redirect 308 from same origin to remote with user and password | PASS | PASS | PASS |
Redirect 308 from same origin to remote with user | PASS | PASS | PASS |
Redirect 308 from same origin to remote with password | PASS | PASS | PASS |
Redirect 308 from remote to same origin with user and password | PASS | PASS | PASS |
Redirect 308 from remote to same origin with user | PASS | PASS | PASS |
Redirect 308 from remote to same origin with password | PASS | PASS | PASS |
Redirect 308 from remote to same remote with user and password | PASS | PASS | PASS |
Redirect 308 from remote to same remote with user | PASS | PASS | PASS |
Redirect 308 from remote to same remote with password | PASS | PASS | PASS |
Redirect 308 from remote to another remote with user and password | PASS | PASS | PASS |
Redirect 308 from remote to another remote with user | PASS | PASS | PASS |
Redirect 308 from remote to another remote with password | PASS | PASS | PASS |
/fetch/api/cors/cors-redirect-credentials.html | OK | OK | OK |
Redirect 301 from same origin to remote with user and password | PASS | PASS | PASS |
Redirect 301 from same origin to remote with user | PASS | PASS | PASS |
Redirect 301 from same origin to remote with password | PASS | PASS | PASS |
Redirect 301 from remote to same origin with user and password | PASS | PASS | PASS |
Redirect 301 from remote to same origin with user | PASS | PASS | PASS |
Redirect 301 from remote to same origin with password | PASS | PASS | PASS |
Redirect 301 from remote to same remote with user and password | PASS | PASS | PASS |
Redirect 301 from remote to same remote with user | PASS | PASS | PASS |
Redirect 301 from remote to same remote with password | PASS | PASS | PASS |
Redirect 301 from remote to another remote with user and password | PASS | PASS | PASS |
Redirect 301 from remote to another remote with user | PASS | PASS | PASS |
Redirect 301 from remote to another remote with password | PASS | PASS | PASS |
Redirect 302 from same origin to remote with user and password | PASS | PASS | PASS |
Redirect 302 from same origin to remote with user | PASS | PASS | PASS |
Redirect 302 from same origin to remote with password | PASS | PASS | PASS |
Redirect 302 from remote to same origin with user and password | PASS | PASS | PASS |
Redirect 302 from remote to same origin with user | PASS | PASS | PASS |
Redirect 302 from remote to same origin with password | PASS | PASS | PASS |
Redirect 302 from remote to same remote with user and password | PASS | PASS | PASS |
Redirect 302 from remote to same remote with user | PASS | PASS | PASS |
Redirect 302 from remote to same remote with password | PASS | PASS | PASS |
Redirect 302 from remote to another remote with user and password | PASS | PASS | PASS |
Redirect 302 from remote to another remote with user | PASS | PASS | PASS |
Redirect 302 from remote to another remote with password | PASS | PASS | PASS |
Redirect 303 from same origin to remote with user and password | PASS | PASS | PASS |
Redirect 303 from same origin to remote with user | PASS | PASS | PASS |
Redirect 303 from same origin to remote with password | PASS | PASS | PASS |
Redirect 303 from remote to same origin with user and password | PASS | PASS | PASS |
Redirect 303 from remote to same origin with user | PASS | PASS | PASS |
Redirect 303 from remote to same origin with password | PASS | PASS | PASS |
Redirect 303 from remote to same remote with user and password | PASS | PASS | PASS |
Redirect 303 from remote to same remote with user | PASS | PASS | PASS |
Redirect 303 from remote to same remote with password | PASS | PASS | PASS |
Redirect 303 from remote to another remote with user and password | PASS | PASS | PASS |
Redirect 303 from remote to another remote with user | PASS | PASS | PASS |
Redirect 303 from remote to another remote with password | PASS | PASS | PASS |
Redirect 307 from same origin to remote with user and password | PASS | PASS | PASS |
Redirect 307 from same origin to remote with user | PASS | PASS | PASS |
Redirect 307 from same origin to remote with password | PASS | PASS | PASS |
Redirect 307 from remote to same origin with user and password | PASS | PASS | PASS |
Redirect 307 from remote to same origin with user | PASS | PASS | PASS |
Redirect 307 from remote to same origin with password | PASS | PASS | PASS |
Redirect 307 from remote to same remote with user and password | PASS | PASS | PASS |
Redirect 307 from remote to same remote with user | PASS | PASS | PASS |
Redirect 307 from remote to same remote with password | PASS | PASS | PASS |
Redirect 307 from remote to another remote with user and password | PASS | PASS | PASS |
Redirect 307 from remote to another remote with user | PASS | PASS | PASS |
Redirect 307 from remote to another remote with password | PASS | PASS | PASS |
Redirect 308 from same origin to remote with user and password | PASS | PASS | PASS |
Redirect 308 from same origin to remote with user | PASS | PASS | PASS |
Redirect 308 from same origin to remote with password | PASS | PASS | PASS |
Redirect 308 from remote to same origin with user and password | PASS | PASS | PASS |
Redirect 308 from remote to same origin with user | PASS | PASS | PASS |
Redirect 308 from remote to same origin with password | PASS | PASS | PASS |
Redirect 308 from remote to same remote with user and password | PASS | PASS | PASS |
Redirect 308 from remote to same remote with user | PASS | PASS | PASS |
Redirect 308 from remote to same remote with password | PASS | PASS | PASS |
Redirect 308 from remote to another remote with user and password | PASS | PASS | PASS |
Redirect 308 from remote to another remote with user | PASS | PASS | PASS |
Redirect 308 from remote to another remote with password | PASS | PASS | PASS |
/fetch/api/cors/cors-redirect-preflight-worker.html | OK | OK | OK |
CORS [PUT] [only safe headers], server allows | PASS | PASS | PASS |
/fetch/api/cors/cors-redirect-credentials-worker.html | OK | OK | OK |
Redirect 301 from same origin to remote without user and password | PASS | PASS | PASS |
Redirect 301 from same origin to remote with user and password | PASS | PASS | FAIL |
Redirect 301 from same origin to remote with user | PASS | PASS | FAIL |
Redirect 301 from same origin to remote with password | PASS | PASS | FAIL |
Redirect 301 from remote to same origin with user and password | PASS | PASS | FAIL |
Redirect 301 from remote to same origin with user | PASS | PASS | FAIL |
Redirect 301 from remote to same origin with password | PASS | PASS | FAIL |
Redirect 301 from remote to same remote with user and password | PASS | PASS | FAIL |
Redirect 301 from remote to same remote with user | PASS | PASS | FAIL |
Redirect 301 from remote to same remote with password | PASS | PASS | FAIL |
Redirect 301 from remote to another remote with user and password | PASS | PASS | FAIL |
Redirect 301 from remote to another remote with user | PASS | PASS | FAIL |
Redirect 301 from remote to another remote with password | PASS | PASS | FAIL |
Redirect 302 from same origin to remote without user and password | PASS | PASS | PASS |
Redirect 302 from same origin to remote with user and password | PASS | PASS | FAIL |
Redirect 302 from same origin to remote with user | PASS | PASS | FAIL |
Redirect 302 from same origin to remote with password | PASS | PASS | FAIL |
Redirect 302 from remote to same origin with user and password | PASS | PASS | FAIL |
Redirect 302 from remote to same origin with user | PASS | PASS | FAIL |
Redirect 302 from remote to same origin with password | PASS | PASS | FAIL |
Redirect 302 from remote to same remote with user and password | PASS | PASS | FAIL |
Redirect 302 from remote to same remote with user | PASS | PASS | FAIL |
Redirect 302 from remote to same remote with password | PASS | PASS | FAIL |
Redirect 302 from remote to another remote with user and password | PASS | PASS | FAIL |
Redirect 302 from remote to another remote with user | PASS | PASS | FAIL |
Redirect 302 from remote to another remote with password | PASS | PASS | FAIL |
Redirect 303 from same origin to remote without user and password | PASS | PASS | PASS |
Redirect 303 from same origin to remote with user and password | PASS | PASS | FAIL |
Redirect 303 from same origin to remote with user | PASS | PASS | FAIL |
Redirect 303 from same origin to remote with password | PASS | PASS | FAIL |
Redirect 303 from remote to same origin with user and password | PASS | PASS | FAIL |
Redirect 303 from remote to same origin with user | PASS | PASS | FAIL |
Redirect 303 from remote to same origin with password | PASS | PASS | FAIL |
Redirect 303 from remote to same remote with user and password | PASS | PASS | FAIL |
Redirect 303 from remote to same remote with user | PASS | PASS | FAIL |
Redirect 303 from remote to same remote with password | PASS | PASS | FAIL |
Redirect 303 from remote to another remote with user and password | PASS | PASS | FAIL |
Redirect 303 from remote to another remote with user | PASS | PASS | FAIL |
Redirect 303 from remote to another remote with password | PASS | PASS | FAIL |
Redirect 307 from same origin to remote without user and password | PASS | PASS | PASS |
Redirect 307 from same origin to remote with user and password | PASS | PASS | FAIL |
Redirect 307 from same origin to remote with user | PASS | PASS | FAIL |
Redirect 307 from same origin to remote with password | PASS | PASS | FAIL |
Redirect 307 from remote to same origin with user and password | PASS | PASS | FAIL |
Redirect 307 from remote to same origin with user | PASS | PASS | FAIL |
Redirect 307 from remote to same origin with password | PASS | PASS | FAIL |
Redirect 307 from remote to same remote with user and password | PASS | PASS | FAIL |
Redirect 307 from remote to same remote with user | PASS | PASS | FAIL |
Redirect 307 from remote to same remote with password | PASS | PASS | FAIL |
Redirect 307 from remote to another remote with user and password | PASS | PASS | FAIL |
Redirect 307 from remote to another remote with user | PASS | PASS | FAIL |
Redirect 307 from remote to another remote with password | PASS | PASS | FAIL |
Redirect 308 from same origin to remote without user and password | PASS | PASS | PASS |
Redirect 308 from same origin to remote with user and password | PASS | PASS | FAIL |
Redirect 308 from same origin to remote with user | PASS | PASS | FAIL |
Redirect 308 from same origin to remote with password | PASS | PASS | FAIL |
Redirect 308 from remote to same origin with user and password | PASS | PASS | FAIL |
Redirect 308 from remote to same origin with user | PASS | PASS | FAIL |
Redirect 308 from remote to same origin with password | PASS | PASS | FAIL |
Redirect 308 from remote to same remote with user and password | PASS | PASS | FAIL |
Redirect 308 from remote to same remote with user | PASS | PASS | FAIL |
Redirect 308 from remote to same remote with password | PASS | PASS | FAIL |
Redirect 308 from remote to another remote with user and password | PASS | PASS | FAIL |
Redirect 308 from remote to another remote with user | PASS | PASS | FAIL |
Redirect 308 from remote to another remote with password | PASS | PASS | FAIL |
/fetch/api/cors/cors-redirect-credentials.html | OK | OK | OK |
Redirect 301 from same origin to remote without user and password | PASS | PASS | PASS |
Redirect 301 from same origin to remote with user and password | PASS | PASS | FAIL |
Redirect 301 from same origin to remote with user | PASS | PASS | FAIL |
Redirect 301 from same origin to remote with password | PASS | PASS | FAIL |
Redirect 301 from remote to same origin with user and password | PASS | PASS | FAIL |
Redirect 301 from remote to same origin with user | PASS | PASS | FAIL |
Redirect 301 from remote to same origin with password | PASS | PASS | FAIL |
Redirect 301 from remote to same remote with user and password | PASS | PASS | FAIL |
Redirect 301 from remote to same remote with user | PASS | PASS | FAIL |
Redirect 301 from remote to same remote with password | PASS | PASS | FAIL |
Redirect 301 from remote to another remote with user and password | PASS | PASS | FAIL |
Redirect 301 from remote to another remote with user | PASS | PASS | FAIL |
Redirect 301 from remote to another remote with password | PASS | PASS | FAIL |
Redirect 302 from same origin to remote without user and password | PASS | PASS | PASS |
Redirect 302 from same origin to remote with user and password | PASS | PASS | FAIL |
Redirect 302 from same origin to remote with user | PASS | PASS | FAIL |
Redirect 302 from same origin to remote with password | PASS | PASS | FAIL |
Redirect 302 from remote to same origin with user and password | PASS | PASS | FAIL |
Redirect 302 from remote to same origin with user | PASS | PASS | FAIL |
Redirect 302 from remote to same origin with password | PASS | PASS | FAIL |
Redirect 302 from remote to same remote with user and password | PASS | PASS | FAIL |
Redirect 302 from remote to same remote with user | PASS | PASS | FAIL |
Redirect 302 from remote to same remote with password | PASS | PASS | FAIL |
Redirect 302 from remote to another remote with user and password | PASS | PASS | FAIL |
Redirect 302 from remote to another remote with user | PASS | PASS | FAIL |
Redirect 302 from remote to another remote with password | PASS | PASS | FAIL |
Redirect 303 from same origin to remote without user and password | PASS | PASS | PASS |
Redirect 303 from same origin to remote with user and password | PASS | PASS | FAIL |
Redirect 303 from same origin to remote with user | PASS | PASS | FAIL |
Redirect 303 from same origin to remote with password | PASS | PASS | FAIL |
Redirect 303 from remote to same origin with user and password | PASS | PASS | FAIL |
Redirect 303 from remote to same origin with user | PASS | PASS | FAIL |
Redirect 303 from remote to same origin with password | PASS | PASS | FAIL |
Redirect 303 from remote to same remote with user and password | PASS | PASS | FAIL |
Redirect 303 from remote to same remote with user | PASS | PASS | FAIL |
Redirect 303 from remote to same remote with password | PASS | PASS | FAIL |
Redirect 303 from remote to another remote with user and password | PASS | PASS | FAIL |
Redirect 303 from remote to another remote with user | PASS | PASS | FAIL |
Redirect 303 from remote to another remote with password | PASS | PASS | FAIL |
Redirect 307 from same origin to remote without user and password | PASS | PASS | PASS |
Redirect 307 from same origin to remote with user and password | PASS | PASS | FAIL |
Redirect 307 from same origin to remote with user | PASS | PASS | FAIL |
Redirect 307 from same origin to remote with password | PASS | PASS | FAIL |
Redirect 307 from remote to same origin with user and password | PASS | PASS | FAIL |
Redirect 307 from remote to same origin with user | PASS | PASS | FAIL |
Redirect 307 from remote to same origin with password | PASS | PASS | FAIL |
Redirect 307 from remote to same remote with user and password | PASS | PASS | FAIL |
Redirect 307 from remote to same remote with user | PASS | PASS | FAIL |
Redirect 307 from remote to same remote with password | PASS | PASS | FAIL |
Redirect 307 from remote to another remote with user and password | PASS | PASS | FAIL |
Redirect 307 from remote to another remote with user | PASS | PASS | FAIL |
Redirect 307 from remote to another remote with password | PASS | PASS | FAIL |
Redirect 308 from same origin to remote without user and password | PASS | PASS | PASS |
Redirect 308 from same origin to remote with user and password | PASS | PASS | FAIL |
Redirect 308 from same origin to remote with user | PASS | PASS | FAIL |
Redirect 308 from same origin to remote with password | PASS | PASS | FAIL |
Redirect 308 from remote to same origin with user and password | PASS | PASS | FAIL |
Redirect 308 from remote to same origin with user | PASS | PASS | FAIL |
Redirect 308 from remote to same origin with password | PASS | PASS | FAIL |
Redirect 308 from remote to same remote with user and password | PASS | PASS | FAIL |
Redirect 308 from remote to same remote with user | PASS | PASS | FAIL |
Redirect 308 from remote to same remote with password | PASS | PASS | FAIL |
Redirect 308 from remote to another remote with user and password | PASS | PASS | FAIL |
Redirect 308 from remote to another remote with user | PASS | PASS | FAIL |
Redirect 308 from remote to another remote with password | PASS | PASS | FAIL |
/fetch/api/cors/cors-redirect-preflight-worker.html | OK | OK | OK |
Redirect 301: same origin to cors (preflight after redirection success case) | PASS | PASS | PASS |
Redirect 301: same origin to cors (preflight after redirection failure case) | PASS | PASS | PASS |
Redirect 301: cors to same origin (preflight after redirection success case) | PASS | FAIL | PASS |
Redirect 308: cors to same origin (preflight after redirection failure case) | PASS | PASS | PASS |
Redirect 308: cors to another cors (preflight after redirection success case) | PASS | FAIL | PASS |
Redirect 308: cors to another cors (preflight after redirection failure case) | PASS | PASS | PASS |
/fetch/api/cors/cors-redirect-preflight.html | OK | OK | OK |
/fetch/api/cors/cors-redirect-preflight.html | OK | OK | OK |
Redirect 301: same origin to cors (preflight after redirection success case) | PASS | PASS | PASS |
Redirect 301: same origin to cors (preflight after redirection failure case) | PASS | PASS | PASS |
Redirect 301: cors to same origin (preflight after redirection success case) | PASS | FAIL | PASS |
Redirect 308: cors to same origin (preflight after redirection failure case) | PASS | PASS | PASS |
Redirect 308: cors to another cors (preflight after redirection success case) | PASS | FAIL | PASS |
Redirect 308: cors to another cors (preflight after redirection failure case) | PASS | PASS | PASS |
/fetch/api/cors/cors-redirect-worker.html | OK | OK | OK |
/fetch/api/cors/cors-redirect-worker.html | OK | OK | OK |
Redirect 301: cors to same cors | PASS | PASS | PASS |
Redirect 301: cors to another cors | PASS | FAIL | PASS |
Redirect 301: same origin to cors | PASS | PASS | PASS |
Redirect 308: cors to another cors | PASS | FAIL | PASS |
Redirect 308: same origin to cors | PASS | PASS | PASS |
Redirect 308: cors to same origin | PASS | FAIL | PASS |
/fetch/api/cors/cors-redirect.html | OK | OK | OK |
/fetch/api/cors/cors-redirect.html | OK | OK | OK |
Redirect 301: cors to same cors | PASS | PASS | PASS |
Redirect 301: cors to another cors | PASS | FAIL | PASS |
Redirect 301: same origin to cors | PASS | PASS | PASS |
Redirect 308: cors to another cors | PASS | FAIL | PASS |
Redirect 308: same origin to cors | PASS | PASS | PASS |
Redirect 308: cors to same origin | PASS | FAIL | PASS |
/fetch/api/credentials/authentication-basic-worker.html | OK | OK | OK |
/fetch/api/credentials/authentication-basic-worker.html | OK | OK | OK |
User-added Authorization header with include mode | PASS | PASS | PASS |
User-added Authorization header with same-origin mode | PASS | PASS | PASS |
User-added Authorization header with omit mode | PASS | PASS | PASS |
/fetch/api/credentials/authentication-basic.html | OK | OK | OK |
/fetch/api/credentials/authentication-basic.html | OK | OK | OK |
User-added Authorization header with include mode | PASS | PASS | PASS |
User-added Authorization header with same-origin mode | PASS | PASS | PASS |
User-added Authorization header with omit mode | PASS | PASS | PASS |
/fetch/api/credentials/cookies-worker.html | OK | OK | OK |
Include mode: 1 cookie | PASS | PASS | PASS |
Include mode: 2 cookies | PASS | PASS | PASS |
/fetch/api/credentials/cookies-worker.html | OK | OK | OK |
Include mode: 1 cookie | FAIL | FAIL | PASS |
Include mode: 2 cookies | FAIL | FAIL | PASS |
Omit mode: discard cookies | PASS | PASS | PASS |
Omit mode: no cookie is stored | PASS | PASS | PASS |
Omit mode: no cookie is stored | FAIL | FAIL | PASS |
Omit mode: no cookie is sent | PASS | PASS | PASS |
Same-origin mode: 1 cookie | PASS | PASS | PASS |
Same-origin mode: 2 cookies | PASS | PASS | PASS |
/fetch/api/credentials/cookies.html | OK | OK | OK |
Include mode: 1 cookie | PASS | PASS | PASS |
Include mode: 2 cookies | PASS | PASS | PASS |
Same-origin mode: 1 cookie | FAIL | FAIL | PASS |
Same-origin mode: 2 cookies | FAIL | FAIL | PASS |
/fetch/api/credentials/cookies.html | OK | OK | OK |
Include mode: 1 cookie | FAIL | FAIL | PASS |
Include mode: 2 cookies | FAIL | FAIL | PASS |
Omit mode: discard cookies | PASS | PASS | PASS |
Omit mode: no cookie is stored | PASS | PASS | PASS |
Omit mode: no cookie is stored | FAIL | FAIL | PASS |
Omit mode: no cookie is sent | PASS | PASS | PASS |
Same-origin mode: 1 cookie | PASS | PASS | PASS |
Same-origin mode: 2 cookies | PASS | PASS | PASS |
/fetch/api/headers/header-values-normalize.html | OK | OK | OK |
Same-origin mode: 1 cookie | FAIL | FAIL | PASS |
Same-origin mode: 2 cookies | FAIL | FAIL | PASS |
/fetch/api/headers/header-values-normalize.html | OK | OK | OK |
XMLHttpRequest with value %00 | PASS | PASS | PASS |
fetch() with value %00 | PASS | PASS | PASS |
XMLHttpRequest with value %01 | PASS | PASS | FAIL |
fetch() with value %1F | PASS | PASS | FAIL |
XMLHttpRequest with value %20 | PASS | PASS | PASS |
fetch() with value %20 | PASS | PASS | PASS |
/fetch/api/headers/header-values.html | OK | OK | OK |
/fetch/api/headers/header-values.html | OK | OK | OK |
XMLHttpRequest with value x%00x needs to throw | PASS | PASS | PASS |
fetch() with value x%00x needs to throw | PASS | PASS | PASS |
XMLHttpRequest with value x%0Ax needs to throw | PASS | PASS | PASS |
fetch() with value x%0Dx needs to throw | PASS | PASS | PASS |
XMLHttpRequest with all valid values | PASS | PASS | FAIL |
fetch() with all valid values | PASS | PASS | FAIL |
/fetch/api/headers/headers-basic.html | OK | OK | OK |
/fetch/api/headers/headers-basic.html | OK | OK | OK |
Create headers from no parameter | PASS | PASS | PASS |
Create headers from undefined parameter | FAIL | PASS | PASS |
Create headers from empty object | PASS | PASS | PASS |
Check entries method | FAIL | FAIL | PASS |
Check Symbol.iterator method | PASS | FAIL | PASS |
Check forEach method | PASS | FAIL | PASS |
/fetch/api/headers/headers-casing.html | OK | OK | OK |
/fetch/api/headers/headers-casing.html | OK | OK | OK |
Create headers, names use characters with different case | PASS | PASS | PASS |
Check append method, names use characters with different case | PASS | PASS | PASS |
Check set method, names use characters with different case | PASS | PASS | PASS |
Check delete method, names use characters with different case | PASS | PASS | PASS |
/fetch/api/headers/headers-combine.html | OK | OK | OK |
Create headers using same name for different values | PASS | PASS | PASS |
/fetch/api/headers/headers-combine.html | OK | OK | OK |
Create headers using same name for different values | FAIL | FAIL | PASS |
Check delete and has methods when using same name for different values | PASS | PASS | PASS |
Check set methods when called with already used name | PASS | PASS | PASS |
Check append methods when called with already used name | PASS | PASS | PASS |
/fetch/api/headers/headers-errors.html | OK | OK | OK |
Check append methods when called with already used name | FAIL | FAIL | PASS |
/fetch/api/headers/headers-errors.html | OK | OK | OK |
Create headers giving an array having one string as init argument | PASS | PASS | PASS |
Create headers giving an array having three strings as init argument | PASS | PASS | PASS |
Create headers giving bad header name as init argument | PASS | PASS | PASS |
Check headers append with an invalid value invalidĀ | PASS | PASS | PASS |
Headers forEach throws if argument is not callable | PASS | PASS | PASS |
Headers forEach loop should stop if callback is throwing exception | PASS | PASS | PASS |
/fetch/api/headers/headers-idl.html | OK | OK | OK |
/fetch/api/headers/headers-idl.html | OK | OK | OK |
Headers interface: existence and properties of interface object | PASS | PASS | PASS |
Headers interface object length | PASS | PASS | PASS |
Headers interface object name | PASS | PASS | PASS |
Headers interface: new Headers() must inherit property "values" with the proper type (8) | PASS | PASS | PASS |
Headers interface: new Headers() must inherit property "forEach" with the proper type (9) | PASS | PASS | PASS |
Headers interface: calling forEach(function,any) on new Headers() with too few arguments must throw TypeError | PASS | PASS | PASS |
/fetch/api/headers/headers-normalize.html | OK | OK | OK |
/fetch/api/headers/headers-normalize.html | OK | OK | OK |
Create headers with not normalized values | FAIL | FAIL | PASS |
Check append method with not normalized values | FAIL | FAIL | PASS |
Check set method with not normalized values | FAIL | FAIL | PASS |
/fetch/api/headers/headers-record.html | OK | OK | OK |
/fetch/api/headers/headers-record.html | OK | OK | OK |
Passing nothing to Headers constructor | PASS | PASS | PASS |
Passing undefined to Headers constructor | FAIL | PASS | PASS |
Passing null to Headers constructor | PASS | PASS | PASS |
Correct operation ordering with non-enumerable properties | FAIL | PASS | FAIL |
Correct operation ordering with undefined descriptors | FAIL | PASS | FAIL |
Correct operation ordering with repeated keys | FAIL | PASS | FAIL |
/fetch/api/headers/headers-structure.html | OK | OK | OK |
/fetch/api/headers/headers-structure.html | OK | OK | OK |
Headers has append method | PASS | PASS | PASS |
Headers has delete method | PASS | PASS | PASS |
Headers has get method | PASS | PASS | PASS |
Headers has entries method | PASS | PASS | PASS |
Headers has keys method | PASS | PASS | PASS |
Headers has values method | PASS | PASS | PASS |
/fetch/api/policies/csp-blocked-worker.html | OK | OK | OK |
Fetch is blocked by CSP, got a TypeError | PASS | PASS | PASS |
/fetch/api/policies/csp-blocked.html | OK | OK | OK |
/fetch/api/policies/csp-blocked-worker.html | OK | OK | OK |
Fetch is blocked by CSP, got a TypeError | FAIL | PASS | PASS |
/fetch/api/policies/csp-blocked.html | OK | OK | OK |
Fetch is blocked by CSP, got a TypeError | PASS | PASS | PASS |
/fetch/api/policies/referrer-no-referrer-worker.html | OK | OK | OK |
/fetch/api/policies/referrer-no-referrer-service-worker.https.html | OK | OK | OK |
Fetch in service worker: referrer with no-referrer policy | FAIL | FAIL | FAIL |
/fetch/api/policies/referrer-no-referrer-worker.html | OK | OK | OK |
Request's referrer is empty | PASS | PASS | PASS |
/fetch/api/policies/referrer-no-referrer.html | OK | OK | OK |
/fetch/api/policies/referrer-no-referrer.html | OK | OK | OK |
Request's referrer is empty | PASS | PASS | PASS |
/fetch/api/policies/referrer-origin-when-cross-origin-worker.html | OK | OK | OK |
Request's referrer is origin | PASS | PASS | FAIL |
/fetch/api/policies/referrer-origin-when-cross-origin.html | OK | OK | OK |
Request's referrer is origin | PASS | PASS | FAIL |
/fetch/api/policies/referrer-origin-worker.html | OK | OK | OK |
/fetch/api/policies/referrer-origin-service-worker.https.html | OK | OK | OK |
Fetch in service worker: referrer with no-referrer policy | FAIL | FAIL | FAIL |
/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https.html | OK | OK | OK |
Fetch in service worker: referrer with origin-when-cross-origin policy | FAIL | FAIL | FAIL |
/fetch/api/policies/referrer-origin-when-cross-origin-worker.html | OK | OK | OK |
Request's referrer is origin | FAIL | FAIL | FAIL |
/fetch/api/policies/referrer-origin-when-cross-origin.html | OK | OK | OK |
Request's referrer is origin | FAIL | FAIL | FAIL |
/fetch/api/policies/referrer-origin-worker.html | OK | OK | OK |
Request's referrer is origin | PASS | PASS | FAIL |
Cross-origin referrer is overridden by client origin | FAIL | PASS | FAIL |
/fetch/api/policies/referrer-origin.html | OK | OK | OK |
/fetch/api/policies/referrer-origin.html | OK | OK | OK |
Request's referrer is origin | PASS | PASS | FAIL |
Cross-origin referrer is overridden by client origin | FAIL | PASS | FAIL |
/fetch/api/policies/referrer-unsafe-url-worker.html | OK | OK | OK |
/fetch/api/policies/referrer-unsafe-url-service-worker.https.html | OK | OK | OK |
Fetch in worker: referrer with unsafe-url policy | FAIL | FAIL | FAIL |
/fetch/api/policies/referrer-unsafe-url-worker.html | OK | OK | OK |
Request's referrer is the full url of current document/worker | PASS | PASS | PASS |
/fetch/api/policies/referrer-unsafe-url.html | OK | OK | OK |
/fetch/api/policies/referrer-unsafe-url.html | OK | OK | OK |
Request's referrer is the full url of current document/worker | PASS | PASS | PASS |
/fetch/api/redirect/redirect-count-worker.html | OK | OK | OK |
/fetch/api/redirect/redirect-count-worker.html | OK | OK | OK |
Redirect 301 20 times | PASS | PASS | FAIL |
Redirect 301 21 times | PASS | PASS | FAIL |
Redirect 301 21 times | PASS | PASS | PASS |
Redirect 302 20 times | PASS | PASS | FAIL |
Redirect 302 21 times | PASS | PASS | FAIL |
Redirect 303 20 times | PASS | PASS | FAIL |
Redirect 307 21 times | PASS | PASS | FAIL |
Redirect 308 20 times | PASS | PASS | FAIL |
Redirect 308 21 times | PASS | PASS | FAIL |
/fetch/api/redirect/redirect-count.html | OK | OK | OK |
/fetch/api/redirect/redirect-count.html | OK | OK | OK |
Redirect 301 20 times | PASS | PASS | FAIL |
Redirect 301 21 times | PASS | PASS | FAIL |
Redirect 302 20 times | PASS | PASS | FAIL |
Redirect 307 21 times | PASS | PASS | FAIL |
Redirect 308 20 times | PASS | PASS | FAIL |
Redirect 308 21 times | PASS | PASS | FAIL |
/fetch/api/redirect/redirect-location-worker.html | OK | OK | OK |
/fetch/api/redirect/redirect-location-worker.html | OK | OK | OK |
Redirect 301 in "follow" mode without location | PASS | PASS | PASS |
Redirect 301 in "manual" mode without location | PASS | FAIL | PASS |
Redirect 301 in "follow" mode with invalid location | PASS | PASS | FAIL |
Redirect 308 in "manual" mode with invalid location | PASS | PASS | PASS |
Redirect 308 in "follow" mode with data location | PASS | PASS | PASS |
Redirect 308 in "manual" mode with data location | PASS | PASS | PASS |
/fetch/api/redirect/redirect-location.html | OK | OK | OK |
/fetch/api/redirect/redirect-location.html | OK | OK | OK |
Redirect 301 in "follow" mode without location | PASS | PASS | PASS |
Redirect 301 in "manual" mode without location | PASS | FAIL | PASS |
Redirect 301 in "follow" mode with invalid location | PASS | PASS | FAIL |
Redirect 308 in "manual" mode with invalid location | PASS | PASS | PASS |
Redirect 308 in "follow" mode with data location | PASS | PASS | PASS |
Redirect 308 in "manual" mode with data location | PASS | PASS | PASS |
/fetch/api/redirect/redirect-method-worker.html | OK | OK | OK |
/fetch/api/redirect/redirect-method-worker.html | OK | OK | OK |
Response.redirected should be false on not-redirected responses | PASS | PASS | PASS |
Redirect 301 with GET | PASS | PASS | PASS |
Redirect 301 with POST | PASS | PASS | PASS |
Redirect 307 with GET | PASS | PASS | PASS |
Redirect 307 with POST | PASS | PASS | PASS |
Redirect 307 with HEAD | PASS | PASS | PASS |
/fetch/api/redirect/redirect-method.html | OK | OK | OK |
/fetch/api/redirect/redirect-method.html | OK | OK | OK |
Response.redirected should be false on not-redirected responses | PASS | PASS | PASS |
Redirect 301 with GET | PASS | PASS | PASS |
Redirect 301 with POST | PASS | PASS | PASS |
Redirect 307 with GET | PASS | PASS | PASS |
Redirect 307 with POST | PASS | PASS | PASS |
Redirect 307 with HEAD | PASS | PASS | PASS |
/fetch/api/redirect/redirect-mode-worker.html | OK | OK | OK |
/fetch/api/redirect/redirect-mode-worker.html | OK | OK | OK |
Redirect 301 in "error" mode | PASS | PASS | PASS |
Redirect 301 in "follow" mode | PASS | PASS | PASS |
Redirect 301 in "manual" mode | PASS | PASS | PASS |
Redirect 308 in "error" mode | PASS | PASS | PASS |
Redirect 308 in "follow" mode | PASS | PASS | PASS |
Redirect 308 in "manual" mode | PASS | PASS | PASS |
/fetch/api/redirect/redirect-mode.html | OK | OK | OK |
/fetch/api/redirect/redirect-mode.html | OK | OK | OK |
Redirect 301 in "error" mode | PASS | PASS | PASS |
Redirect 301 in "follow" mode | PASS | PASS | PASS |
Redirect 301 in "manual" mode | PASS | PASS | PASS |
Redirect 308 in "error" mode | PASS | PASS | PASS |
Redirect 308 in "follow" mode | PASS | PASS | PASS |
Redirect 308 in "manual" mode | PASS | PASS | PASS |
/fetch/api/redirect/redirect-origin-worker.html | OK | OK | OK |
/fetch/api/redirect/redirect-origin-worker.html | OK | OK | OK |
Same origin to same origin redirection 301 | PASS | FAIL | PASS |
Same origin to other origin redirection 301 | PASS | PASS | PASS |
Other origin to other origin redirection 301 | PASS | PASS | PASS |
Same origin to other origin redirection 308 | PASS | PASS | PASS |
Other origin to other origin redirection 308 | PASS | PASS | PASS |
Other origin to same origin redirection 308 | PASS | FAIL | PASS |
/fetch/api/redirect/redirect-origin.html | OK | OK | OK |
/fetch/api/redirect/redirect-origin.html | OK | OK | OK |
Same origin to same origin redirection 301 | PASS | FAIL | PASS |
Same origin to other origin redirection 301 | PASS | PASS | PASS |
Other origin to other origin redirection 301 | PASS | PASS | PASS |
Same origin to other origin redirection 308 | PASS | PASS | PASS |
Other origin to other origin redirection 308 | PASS | PASS | PASS |
Other origin to same origin redirection 308 | PASS | FAIL | PASS |
/fetch/api/redirect/redirect-referrer-worker.html | OK | OK | OK |
/fetch/api/redirect/redirect-referrer-worker.html | OK | OK | OK |
Same origin redirection, empty init, unsafe-url redirect header | PASS | PASS | PASS |
Same origin redirection, empty init, no-referrer-when-downgrade redirect header | PASS | PASS | PASS |
Same origin redirection, empty init, same-origin redirect header | PASS | PASS | PASS |
Cross origin redirection, empty redirect header, no-referrer init | PASS | PASS | PASS |
Cross origin redirection, empty redirect header, strict-origin init | FAIL | PASS | FAIL |
Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init | FAIL | PASS | FAIL |
/fetch/api/redirect/redirect-referrer.html | OK | OK | OK |
/fetch/api/redirect/redirect-referrer.html | OK | OK | OK |
Same origin redirection, empty init, unsafe-url redirect header | PASS | PASS | PASS |
Same origin redirection, empty init, no-referrer-when-downgrade redirect header | PASS | PASS | PASS |
Same origin redirection, empty init, same-origin redirect header | PASS | PASS | PASS |
Cross origin redirection, empty redirect header, no-referrer init | PASS | PASS | PASS |
Cross origin redirection, empty redirect header, strict-origin init | FAIL | PASS | FAIL |
Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init | FAIL | PASS | FAIL |
/fetch/api/redirect/redirect-schemes.html | OK | OK | OK |
/fetch/api/redirect/redirect-schemes.html | OK | OK | OK |
Fetch: handling different schemes in redirects | PASS | PASS | PASS |
Fetch: handling different schemes in redirects 1 | PASS | PASS | PASS |
Fetch: handling different schemes in redirects 2 | PASS | PASS | PASS |
Fetch: handling different schemes in redirects 3 | PASS | PASS | PASS |
Fetch: handling different schemes in redirects 4 | PASS | PASS | PASS |
Fetch: handling different schemes in redirects 5 | PASS | PASS | PASS |
/fetch/api/redirect/redirect-to-dataurl-worker.html | OK | OK | OK |
/fetch/api/redirect/redirect-to-dataurl-worker.html | OK | OK | OK |
Testing data URL loading after same-origin redirection (cors mode) | PASS | PASS | PASS |
Testing data URL loading after same-origin redirection (no-cors mode) | PASS | FAIL | PASS |
Testing data URL loading after same-origin redirection (same-origin mode) | PASS | FAIL | PASS |
Testing data URL loading after cross-origin redirection (cors mode) | PASS | PASS | PASS |
Testing data URL loading after cross-origin redirection (no-cors mode) | PASS | FAIL | PASS |
/fetch/api/redirect/redirect-to-dataurl.html | OK | OK | OK |
/fetch/api/redirect/redirect-to-dataurl.html | OK | OK | OK |
Testing data URL loading after same-origin redirection (cors mode) | PASS | PASS | PASS |
Testing data URL loading after same-origin redirection (no-cors mode) | PASS | FAIL | PASS |
Testing data URL loading after same-origin redirection (same-origin mode) | PASS | FAIL | PASS |
Testing data URL loading after cross-origin redirection (cors mode) | PASS | PASS | PASS |
Testing data URL loading after cross-origin redirection (no-cors mode) | PASS | FAIL | PASS |
/fetch/api/request/multi-globals/url-parsing.html | OK | OK | OK |
/fetch/api/request/multi-globals/url-parsing.html | OK | OK | OK |
should parse the URL relative to the current settings object | PASS | FAIL | PASS |
/fetch/api/request/request-bad-port.html | OK | OK | OK |
/fetch/api/request/request-bad-port.html | OK | OK | OK |
Request on bad port 1 should throw TypeError. | PASS | PASS | PASS |
Request on bad port 7 should throw TypeError. | PASS | PASS | PASS |
Request on bad port 9 should throw TypeError. | PASS | PASS | PASS |
Request on bad port 6667 should throw TypeError. | PASS | PASS | PASS |
Request on bad port 6668 should throw TypeError. | PASS | PASS | PASS |
Request on bad port 6669 should throw TypeError. | PASS | PASS | PASS |
/fetch/api/request/request-cache-default-conditional.html | OK | OK | OK |
/fetch/api/request/request-cache-default-conditional.html | OK | OK | OK |
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 response | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 response | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with Etag and stale response | PASS | PASS | PASS |
RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with date and stale response | PASS | PASS | PASS |
RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with Last-Modified and stale response | PASS | PASS | PASS |
RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with Etag and fresh response | PASS | PASS | FAIL |
RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with date and fresh response | PASS | PASS | PASS |
RequestCache "default" mode with an If-Modified-Since header is treated similarly to "no-store" with Last-Modified and fresh response | PASS | PASS | PASS |
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 response | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 response | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with Etag and stale response | PASS | PASS | PASS |
RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with date and stale response | PASS | PASS | PASS |
RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with Last-Modified and stale response | PASS | PASS | PASS |
RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with Etag and fresh response | PASS | PASS | FAIL |
RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with date and fresh response | PASS | PASS | FAIL |
RequestCache "default" mode with an If-None-Match header is treated similarly to "no-store" with Last-Modified and fresh response | PASS | PASS | FAIL |
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 response | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 response | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with Etag and stale response | PASS | PASS | PASS |
RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with date and stale response | PASS | PASS | PASS |
RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with Last-Modified and stale response | PASS | PASS | PASS |
RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with Etag and fresh response | PASS | PASS | FAIL |
RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with date and fresh response | PASS | PASS | FAIL |
RequestCache "default" mode with an If-Unmodified-Since header is treated similarly to "no-store" with Last-Modified and fresh response | PASS | PASS | FAIL |
RequestCache "default" mode with an If-Match header (following a request without additional headers) is treated similarly to "no-store" with Etag and stale response | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
RequestCache "default" mode with an If-Match header (following a request without additional headers) is treated similarly to "no-store" with Etag and fresh response | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with Etag and stale response | PASS | PASS | PASS |
RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with date and stale response | PASS | PASS | PASS |
RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with Last-Modified and stale response | PASS | PASS | PASS |
RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with Etag and fresh response | PASS | PASS | FAIL |
RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with date and fresh response | PASS | PASS | FAIL |
RequestCache "default" mode with an If-Match header is treated similarly to "no-store" with Last-Modified and fresh response | PASS | PASS | FAIL |
RequestCache "default" mode with an If-Range header (following a request without additional headers) is treated similarly to "no-store" with Etag and stale response | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
RequestCache "default" mode with an If-Range header (following a request without additional headers) is treated similarly to "no-store" with Etag and fresh response | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Etag and stale response | PASS | PASS | PASS |
RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with date and stale response | PASS | PASS | PASS |
RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Last-Modified and stale response | PASS | PASS | PASS |
RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Etag and fresh response | PASS | PASS | FAIL |
RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with date and fresh response | PASS | PASS | FAIL |
/fetch/api/request/request-cache-default.html | OK | OK | OK |
RequestCache "default" mode with an If-Range header is treated similarly to "no-store" with Last-Modified and fresh response | PASS | PASS | FAIL |
/fetch/api/request/request-cache-default.html | OK | OK | OK |
RequestCache "default" mode checks the cache for previously cached content and goes to the network for stale responses with Etag and stale response | PASS | PASS | PASS |
RequestCache "default" mode checks the cache for previously cached content and goes to the network for stale responses with date and stale response | PASS | PASS | PASS |
RequestCache "default" mode checks the cache for previously cached content and goes to the network for stale responses with Last-Modified and stale response | PASS | PASS | PASS |
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 response | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
Responses with the "Cache-Control: no-store" header are not stored in the cache with Etag and stale response | PASS | PASS | PASS |
Responses with the "Cache-Control: no-store" header are not stored in the cache with date and stale response | PASS | PASS | PASS |
Responses with the "Cache-Control: no-store" header are not stored in the cache with Last-Modified and stale response | PASS | PASS | PASS |
Responses with the "Cache-Control: no-store" header are not stored in the cache with Etag and fresh response | PASS | PASS | PASS |
Responses with the "Cache-Control: no-store" header are not stored in the cache with date and fresh response | PASS | PASS | PASS |
/fetch/api/request/request-cache-force-cache.html | OK | OK | OK |
Responses with the "Cache-Control: no-store" header are not stored in the cache with Last-Modified and fresh response | PASS | PASS | PASS |
/fetch/api/request/request-cache-force-cache.html | OK | OK | OK |
RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for stale responses with Etag and stale response | FAIL | PASS | PASS |
RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for stale responses with date and stale response | FAIL | PASS | PASS |
RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for stale responses with Last-Modified and stale response | FAIL | PASS | PASS |
RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Etag and fresh response | PASS | PASS | PASS |
RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for fresh responses with date and fresh response | PASS | PASS | PASS |
RequestCache "force-cache" mode checks the cache for previously cached content and avoid revalidation for fresh responses with Last-Modified and fresh response | PASS | PASS | PASS |
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 response | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 response | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 response | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 response | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
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 | PASS | PASS | PASS |
RequestCache "force-cache" stores the response in the cache if it goes to the network with Etag and stale response | PASS | PASS | PASS |
RequestCache "force-cache" stores the response in the cache if it goes to the network with date and stale response | PASS | PASS | PASS |
RequestCache "force-cache" stores the response in the cache if it goes to the network with Last-Modified and stale response | PASS | PASS | PASS |
RequestCache "force-cache" stores the response in the cache if it goes to the network with Etag and fresh response | PASS | PASS | PASS |
RequestCache "force-cache" stores the response in the cache if it goes to the network with date and fresh response | PASS | PASS | PASS |
/fetch/api/request/request-cache-no-cache.html | OK | OK | OK |
RequestCache "force-cache" stores the response in the cache if it goes to the network with Last-Modified and fresh response | PASS | PASS | PASS |
/fetch/api/request/request-cache-no-cache.html | OK | OK | OK |
RequestCache "no-cache" mode revalidates stale responses found in the cache with Etag and stale response | PASS | PASS | PASS |
RequestCache "no-cache" mode revalidates stale responses found in the cache with date and stale response | PASS | PASS | PASS |
RequestCache "no-cache" mode revalidates stale responses found in the cache with Last-Modified and stale response | PASS | PASS | PASS |
RequestCache "no-cache" mode revalidates fresh responses found in the cache with Etag and fresh response | FAIL | PASS | PASS |
RequestCache "no-cache" mode revalidates fresh responses found in the cache with date and fresh response | FAIL | PASS | PASS |
/fetch/api/request/request-cache-no-store.html | OK | OK | OK |
RequestCache "no-cache" mode revalidates fresh responses found in the cache with Last-Modified and fresh response | FAIL | PASS | PASS |
/fetch/api/request/request-cache-no-store.html | OK | OK | OK |
RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with Etag and stale response | FAIL | PASS | PASS |
RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with date and stale response | FAIL | PASS | PASS |
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 | FAIL | PASS | PASS |
RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with Etag and fresh response | FAIL | PASS | PASS |
RequestCache "no-store" mode does not check the cache for previously cached content and goes to the network regardless with date and fresh response | FAIL | PASS | PASS |
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 | FAIL | PASS | PASS |
RequestCache "no-store" mode does not store the response in the cache with Etag and stale response | FAIL | PASS | FAIL |
RequestCache "no-store" mode does not store the response in the cache with date and stale response | FAIL | PASS | FAIL |
RequestCache "no-store" mode does not store the response in the cache with Last-Modified and stale response | FAIL | PASS | FAIL |
RequestCache "no-store" mode does not store the response in the cache with Etag and fresh response | FAIL | PASS | FAIL |
RequestCache "no-store" mode does not store the response in the cache with date and fresh response | FAIL | PASS | FAIL |
/fetch/api/request/request-cache-only-if-cached.html | OK | OK | OK |
RequestCache "no-store" mode does not store the response in the cache with Last-Modified and fresh response | FAIL | PASS | FAIL |
/fetch/api/request/request-cache-only-if-cached.html | OK | OK | OK |
RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for stale responses with Etag and stale response | FAIL | PASS | PASS |
RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for stale responses with date and stale response | FAIL | PASS | PASS |
RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for stale responses with Last-Modified and stale response | FAIL | PASS | PASS |
RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for fresh responses with Etag and fresh response | PASS | PASS | PASS |
RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for fresh responses with date and fresh response | PASS | PASS | PASS |
RequestCache "only-if-cached" mode checks the cache for previously cached content and avoids revalidation for fresh responses with Last-Modified and fresh response | PASS | PASS | PASS |
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 response | FAIL | PASS | PASS |
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 | FAIL | PASS | PASS |
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 | FAIL | PASS | PASS |
RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with Etag and fresh response | PASS | PASS | PASS |
RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with date and fresh response | PASS | PASS | PASS |
RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with Last-Modified and fresh response | PASS | PASS | PASS |
RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with Etag and stale response | FAIL | PASS | PASS |
RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with date and stale response | FAIL | PASS | PASS |
RequestCache "only-if-cached" (with "same-origin") uses cached same-origin redirects to same-origin content with Last-Modified and stale response | FAIL | PASS | PASS |
RequestCache "only-if-cached" (with "same-origin") does not follow redirects across origins and rejects with Etag and fresh response | PASS | PASS | PASS |
RequestCache "only-if-cached" (with "same-origin") does not follow redirects across origins and rejects with date and fresh response | PASS | PASS | PASS |
RequestCache "only-if-cached" (with "same-origin") does not follow redirects across origins and rejects with Last-Modified and fresh response | PASS | PASS | PASS |
RequestCache "only-if-cached" (with "same-origin") does not follow redirects across origins and rejects with Etag and stale response | FAIL | PASS | PASS |
RequestCache "only-if-cached" (with "same-origin") does not follow redirects across origins and rejects with date and stale response | FAIL | PASS | PASS |
/fetch/api/request/request-cache-reload.html | OK | OK | OK |
RequestCache "only-if-cached" (with "same-origin") does not follow redirects across origins and rejects with Last-Modified and stale response | FAIL | PASS | PASS |
/fetch/api/request/request-cache-reload.html | OK | OK | OK |
RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with Etag and stale response | FAIL | PASS | PASS |
RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with date and stale response | FAIL | PASS | PASS |
RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and stale response | FAIL | PASS | PASS |
RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with Etag and fresh response | FAIL | PASS | PASS |
RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with date and fresh response | FAIL | PASS | PASS |
RequestCache "reload" mode does not check the cache for previously cached content and goes to the network regardless with Last-Modified and fresh response | FAIL | PASS | PASS |
RequestCache "reload" mode does store the response in the cache with Etag and stale response | PASS | PASS | PASS |
RequestCache "reload" mode does store the response in the cache with date and stale response | PASS | PASS | PASS |
RequestCache "reload" mode does store the response in the cache with Last-Modified and stale response | PASS | PASS | PASS |
RequestCache "reload" mode does store the response in the cache with Etag and fresh response | PASS | PASS | PASS |
RequestCache "reload" mode does store the response in the cache with date and fresh response | PASS | PASS | PASS |
RequestCache "reload" mode does store the response in the cache with Last-Modified and fresh response | PASS | PASS | PASS |
RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with Etag and stale response | FAIL | PASS | PASS |
RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with date and stale response | FAIL | PASS | PASS |
RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with Last-Modified and stale response | FAIL | PASS | PASS |
RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with Etag and fresh response | FAIL | PASS | PASS |
RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with date and fresh response | FAIL | PASS | PASS |
/fetch/api/request/request-clone.sub.html | OK | OK | OK |
RequestCache "reload" mode does store the response in the cache even if a previous response is already stored with Last-Modified and fresh response | FAIL | PASS | PASS |
/fetch/api/request/request-clone.sub.html | OK | OK | OK |
Check cloning a request | FAIL | PASS | PASS |
Check cloning a request copies the headers | PASS | PASS | PASS |
/fetch/api/request/request-consume-empty.html | OK | OK | OK |
/fetch/api/request/request-consume-empty.html | OK | OK | OK |
Consume request's body as text | PASS | FAIL | PASS |
Consume request's body as blob | PASS | FAIL | PASS |
Consume request's body as arrayBuffer | PASS | FAIL | PASS |
Consume empty URLSearchParams request body as text | PASS | PASS | PASS |
Consume empty FormData request body as text | FAIL | FAIL | FAIL |
Consume empty ArrayBuffer request body as text | PASS | PASS | PASS |
/fetch/api/request/request-consume.html | OK | OK | OK |
/fetch/api/request/request-consume.html | OK | OK | OK |
Consume String request's body as text | PASS | PASS | PASS |
Consume String request's body as blob | PASS | PASS | PASS |
Consume String request's body as arrayBuffer | PASS | PASS | PASS |
Trying to consume bad JSON text as JSON: '{' | PASS | PASS | PASS |
Trying to consume bad JSON text as JSON: 'a' | PASS | PASS | PASS |
Trying to consume bad JSON text as JSON: '[' | PASS | PASS | PASS |
/fetch/api/request/request-disturbed.html | OK | OK | OK |
/fetch/api/request/request-disturbed.html | OK | OK | OK |
Request's body: initial state | FAIL | FAIL | FAIL |
Request without body cannot be disturbed | PASS | FAIL | PASS |
Check cloning a disturbed request | PASS | PASS | PASS |
Input request used for creating new request became disturbed even if body is not used | FAIL | FAIL | FAIL |
Check consuming a disturbed request | PASS | PASS | PASS |
Request construction failure should not set "bodyUsed" | PASS | PASS | PASS |
/fetch/api/request/request-error.html | OK | OK | OK |
/fetch/api/request/request-error.html | OK | OK | OK |
RequestInit's window is not null | FAIL | FAIL | PASS |
Input URL is not valid | PASS | PASS | PASS |
Input URL has credentials | PASS | PASS | PASS |
Request with cache mode: only-if-cached and fetch mode: same-origin | PASS | PASS | PASS |
Request with cache mode: only-if-cached and fetch mode: cors | FAIL | PASS | PASS |
Request with cache mode: only-if-cached and fetch mode: no-cors | FAIL | PASS | PASS |
/fetch/api/request/request-headers.html | OK | OK | OK |
/fetch/api/request/request-headers.html | OK | OK | OK |
Adding valid request header "Content-Type: OK" | PASS | PASS | PASS |
Adding valid request header "Potato: OK" | PASS | PASS | PASS |
Adding valid request header "proxy: OK" | PASS | PASS | PASS |
Request should get its content-type from init headers if one is provided | PASS | PASS | PASS |
Testing request header creations with various objects | PASS | PASS | PASS |
Testing empty Request Content-Type header | PASS | PASS | PASS |
/fetch/api/request/request-idl.html | OK | OK | OK |
/fetch/api/request/request-idl.html | OK | OK | OK |
Request interface: existence and properties of interface object | PASS | PASS | PASS |
Request interface object length | PASS | PASS | PASS |
Request interface object name | PASS | PASS | PASS |
Request interface: new Request("") must inherit property "formData" with the proper type (17) | FAIL | PASS | FAIL |
Request interface: new Request("") must inherit property "json" with the proper type (18) | PASS | PASS | PASS |
Request interface: new Request("") must inherit property "text" with the proper type (19) | PASS | PASS | PASS |
/fetch/api/request/request-init-001.sub.html | OK | OK | OK |
/fetch/api/request/request-init-001.sub.html | OK | OK | OK |
Check method init value of GET and associated getter | PASS | PASS | PASS |
Check method init value of HEAD and associated getter | PASS | PASS | PASS |
Check method init value of POST and associated getter | PASS | PASS | PASS |
Check integrity init value of and associated getter | PASS | PASS | PASS |
Check integrity init value of AZERTYUIOP1234567890 and associated getter | PASS | PASS | PASS |
Check window init value of null and associated getter | PASS | PASS | PASS |
/fetch/api/request/request-init-002.html | OK | OK | OK |
/fetch/api/request/request-init-002.html | OK | OK | OK |
Initialize Request with headers values | PASS | PASS | PASS |
Initialize Request's body with undefined | PASS | PASS | PASS |
Initialize Request's body with null | PASS | PASS | PASS |
Initialize Request's body with multipart/form-data | PASS | PASS | FAIL |
Initialize Request's body with text/plain;charset=UTF-8 | PASS | PASS | PASS |
Initialize Request's body with application/x-www-form-urlencoded;charset=UTF-8 | PASS | PASS | PASS |
/fetch/api/request/request-init-003.sub.html | OK | OK | OK |
/fetch/api/request/request-init-003.sub.html | OK | OK | OK |
Check request values when initialized from Request | FAIL | PASS | PASS |
Check request values when initialized from Request and init values | FAIL | PASS | PASS |
Check request values when initialized from url string | FAIL | FAIL | FAIL |
Check request values when initialized from url and init values | FAIL | PASS | PASS |
/fetch/api/request/request-keepalive-quota.html | OK | OK | OK |
/fetch/api/request/request-keepalive-quota.html | OK | OK | OK |
A Keep-Alive fetch() with a small body should succeed. | PASS | PASS | PASS |
A Keep-Alive fetch() with a body at the Quota Limit should succeed. | PASS | PASS | PASS |
A Keep-Alive fetch() with a body over the Quota Limit should reject. | FAIL | FAIL | FAIL |
A Keep-Alive fetch() should return it's allocated Quota upon promise resolution. | PASS | PASS | PASS |
A Keep-Alive fetch() should return only it's allocated Quota upon promise resolution. | PASS | PASS | PASS |
A Keep-Alive fetch() should not be allowed if the Quota is used up. | FAIL | FAIL | FAIL |
/fetch/api/request/request-structure.html | OK | OK | OK |
/fetch/api/request/request-structure.html | OK | OK | OK |
Request has clone method | PASS | PASS | PASS |
Request has arrayBuffer method | PASS | PASS | PASS |
Request has blob method | PASS | PASS | PASS |
Check redirect attribute | PASS | PASS | PASS |
Check integrity attribute | PASS | PASS | PASS |
Check bodyUsed attribute | PASS | PASS | PASS |
/fetch/api/response/multi-globals/url-parsing.html | OK | OK | OK |
/fetch/api/response/multi-globals/url-parsing.html | OK | OK | OK |
should parse the redirect Location URL relative to the current settings object | PASS | FAIL | PASS |
/fetch/api/response/response-cancel-stream.html | OK | OK | OK |
/fetch/api/response/response-cancel-stream.html | OK | OK | OK |
Cancelling a starting blob Response stream | PASS | FAIL | PASS |
Cancelling a loading blob Response stream | PASS | FAIL | PASS |
Cancelling a closed blob Response stream | PASS | FAIL | PASS |
Cancelling a starting Response stream | PASS | FAIL | PASS |
Cancelling a loading Response stream | PASS | FAIL | PASS |
Cancelling a closed Response stream | PASS | FAIL | PASS |
/fetch/api/response/response-clone.html | OK | OK | OK |
/fetch/api/response/response-clone.html | OK | OK | OK |
Check Response's clone with default values, without body | PASS | PASS | PASS |
Check Response's clone has the expected attribute values | PASS | PASS | PASS |
Check orginal response's body after cloning | PASS | FAIL | PASS |
Check response clone use structureClone for teed ReadableStreams (Float32Arraychunk) | FAIL | FAIL | PASS |
Check response clone use structureClone for teed ReadableStreams (Float64Arraychunk) | FAIL | FAIL | PASS |
Check response clone use structureClone for teed ReadableStreams (DataViewchunk) | FAIL | FAIL | PASS |
/fetch/api/response/response-consume-empty.html | OK | OK | OK |
/fetch/api/response/response-consume-empty.html | OK | OK | OK |
Consume response's body as text | PASS | FAIL | PASS |
Consume response's body as blob | PASS | FAIL | PASS |
Consume response's body as arrayBuffer | PASS | FAIL | PASS |
Consume empty URLSearchParams response body as text | PASS | PASS | PASS |
Consume empty FormData response body as text | FAIL | FAIL | FAIL |
Consume empty ArrayBuffer response body as text | PASS | PASS | PASS |
/fetch/api/response/response-consume-stream.html | OK | OK | OK |
/fetch/api/response/response-consume-stream.html | OK | OK | OK |
Read empty text response's body as readableStream | PASS | FAIL | PASS |
Read empty blob response's body as readableStream | PASS | FAIL | PASS |
Read blob response's body as readableStream | PASS | FAIL | PASS |
Read form data response's body as readableStream | FAIL | FAIL | FAIL |
Getting an error Response stream | PASS | FAIL | PASS |
Getting a redirect Response stream | FAIL | FAIL | FAIL |
/fetch/api/response/response-consume.html | OK | OK | OK |
/fetch/api/response/response-consume.html | OK | OK | OK |
Consume response's body: from text to text | PASS | PASS | PASS |
Consume response's body: from text to blob | PASS | PASS | PASS |
Consume response's body: from text to arrayBuffer | PASS | PASS | PASS |
Consume response's body: from fetch to arrayBuffer | PASS | PASS | PASS |
Consume response's body: from fetch without correct type to formData (error case) | FAIL | PASS | FAIL |
Consume response's body: from multipart form data blob to formData | FAIL | PASS | FAIL |
/fetch/api/response/response-error.html | OK | OK | OK |
/fetch/api/response/response-error.html | OK | OK | OK |
Throws RangeError when responseInit's status is 0 | PASS | PASS | PASS |
Throws RangeError when responseInit's status is 100 | PASS | PASS | PASS |
Throws RangeError when responseInit's status is 199 | PASS | PASS | PASS |
Throws TypeError when building a response with body and a body status of 204 | PASS | PASS | PASS |
Throws TypeError when building a response with body and a body status of 205 | PASS | PASS | PASS |
Throws TypeError when building a response with body and a body status of 304 | PASS | PASS | PASS |
/fetch/api/response/response-idl.html | OK | OK | OK |
/fetch/api/response/response-idl.html | OK | OK | OK |
Response interface: existence and properties of interface object | PASS | PASS | PASS |
Response interface object length | PASS | PASS | PASS |
Response interface object name | PASS | PASS | PASS |
Response interface: attribute ok | PASS | PASS | PASS |
Response interface: attribute statusText | PASS | PASS | PASS |
Response interface: attribute headers | PASS | PASS | PASS |
Response interface: attribute trailer | FAIL | FAIL | FAIL |
Response interface: operation clone() | PASS | PASS | PASS |
Response interface: attribute body | PASS | FAIL | PASS |
Response interface: attribute bodyUsed | PASS | PASS | PASS |
Response interface: new Response() must inherit property "ok" with the proper type (5) | PASS | PASS | PASS |
Response interface: new Response() must inherit property "statusText" with the proper type (6) | PASS | PASS | PASS |
Response interface: new Response() must inherit property "headers" with the proper type (7) | PASS | PASS | PASS |
Response interface: new Response() must inherit property "clone" with the proper type (8) | PASS | PASS | PASS |
Response interface: new Response() must inherit property "body" with the proper type (9) | PASS | FAIL | PASS |
Response interface: new Response() must inherit property "bodyUsed" with the proper type (10) | PASS | PASS | PASS |
Response interface: new Response() must inherit property "arrayBuffer" with the proper type (11) | PASS | PASS | PASS |
Response interface: new Response() must inherit property "blob" with the proper type (12) | PASS | PASS | PASS |
Response interface: new Response() must inherit property "formData" with the proper type (13) | FAIL | PASS | PASS |
Response interface: new Response() must inherit property "json" with the proper type (14) | PASS | PASS | PASS |
Response interface: new Response() must inherit property "text" with the proper type (15) | PASS | PASS | PASS |
/fetch/api/response/response-init-001.html | OK | OK | OK |
Response interface: new Response() must inherit property "trailer" with the proper type (8) | FAIL | FAIL | FAIL |
Response interface: new Response() must inherit property "clone" with the proper type (9) | PASS | PASS | PASS |
Response interface: new Response() must inherit property "body" with the proper type (10) | PASS | FAIL | PASS |
Response interface: new Response() must inherit property "bodyUsed" with the proper type (11) | PASS | PASS | PASS |
Response interface: new Response() must inherit property "arrayBuffer" with the proper type (12) | PASS | PASS | PASS |
Response interface: new Response() must inherit property "blob" with the proper type (13) | PASS | PASS | PASS |
Response interface: new Response() must inherit property "formData" with the proper type (14) | FAIL | PASS | PASS |
Response interface: new Response() must inherit property "json" with the proper type (15) | PASS | PASS | PASS |
Response interface: new Response() must inherit property "text" with the proper type (16) | PASS | PASS | PASS |
/fetch/api/response/response-init-001.html | OK | OK | OK |
Check default value for type attribute | PASS | PASS | PASS |
Check default value for url attribute | PASS | PASS | PASS |
Check default value for ok attribute | PASS | PASS | PASS |
Check default value for body attribute | PASS | FAIL | PASS |
Check status init values and associated getter | PASS | PASS | PASS |
Check statusText init values and associated getter | PASS | PASS | PASS |
/fetch/api/response/response-init-002.html | OK | OK | OK |
/fetch/api/response/response-init-002.html | OK | OK | OK |
Initialize Response with headers values | PASS | PASS | PASS |
Initialize Response's body with application/octet-binary | PASS | PASS | PASS |
Initialize Response's body with multipart/form-data | PASS | PASS | FAIL |
Initialize Response's body with text/plain;charset=UTF-8 | PASS | PASS | PASS |
Read Response's body as readableStream | PASS | FAIL | PASS |
Testing empty Response Content-Type header | PASS | PASS | PASS |
/fetch/api/response/response-static-error.html | OK | OK | OK |
/fetch/api/response/response-static-error.html | OK | OK | OK |
Check response returned by static method error() | PASS | FAIL | PASS |
/fetch/api/response/response-static-redirect.html | OK | OK | OK |
/fetch/api/response/response-static-redirect.html | OK | OK | OK |
Check default redirect response | PASS | PASS | PASS |
Check response returned by static method redirect(), status = 301 | PASS | PASS | PASS |
Check response returned by static method redirect(), status = 302 | PASS | PASS | PASS |
Check error returned when giving invalid status to redirect(), status = 309 | PASS | PASS | PASS |
Check error returned when giving invalid status to redirect(), status = 400 | PASS | PASS | PASS |
Check error returned when giving invalid status to redirect(), status = 500 | PASS | PASS | PASS |
/fetch/api/response/response-stream-disturbed-1.html | OK | OK | OK |
/fetch/api/response/response-stream-disturbed-1.html | OK | OK | OK |
Getting blob after getting the Response body - not disturbed, not locked | PASS | FAIL | PASS |
Getting text after getting the Response body - not disturbed, not locked | PASS | FAIL | PASS |
Getting json after getting the Response body - not disturbed, not locked | PASS | FAIL | PASS |
Getting arrayBuffer after getting the Response body - not disturbed, not locked | PASS | FAIL | PASS |
/fetch/api/response/response-stream-disturbed-2.html | OK | OK | OK |
/fetch/api/response/response-stream-disturbed-2.html | OK | OK | OK |
Getting blob after getting a locked Response body | PASS | FAIL | PASS |
Getting text after getting a locked Response body | PASS | FAIL | PASS |
Getting json after getting a locked Response body | PASS | FAIL | PASS |
Getting arrayBuffer after getting a locked Response body | PASS | FAIL | PASS |
/fetch/api/response/response-stream-disturbed-3.html | OK | OK | OK |
/fetch/api/response/response-stream-disturbed-3.html | OK | OK | OK |
Getting blob after reading the Response body | PASS | FAIL | PASS |
Getting text after reading the Response body | PASS | FAIL | PASS |
Getting json after reading the Response body | PASS | FAIL | PASS |
Getting arrayBuffer after reading the Response body | PASS | FAIL | PASS |
/fetch/api/response/response-stream-disturbed-4.html | OK | OK | OK |
/fetch/api/response/response-stream-disturbed-4.html | OK | OK | OK |
Getting blob after cancelling the Response body | PASS | FAIL | PASS |
Getting text after cancelling the Response body | PASS | FAIL | PASS |
Getting json after cancelling the Response body | PASS | FAIL | PASS |
Getting arrayBuffer after cancelling the Response body | PASS | FAIL | PASS |
/fetch/api/response/response-stream-disturbed-5.html | OK | OK | OK |
/fetch/api/response/response-stream-disturbed-5.html | OK | OK | OK |
Getting a body reader after consuming as blob | PASS | PASS | PASS |
Getting a body reader after consuming as text | PASS | PASS | PASS |
Getting a body reader after consuming as json | PASS | PASS | PASS |
Getting a body reader after consuming as arrayBuffer | PASS | PASS | PASS |
/fetch/nosniff/image.html | OK | OK | OK |
/fetch/api/response/response-trailer.html | OK | OK | OK |
trailer() test | FAIL | FAIL | FAIL |
/fetch/http-cache/304-update.html | OK | OK | OK |
HTTP cache updates returned headers from a Last-Modified 304. | PASS | PASS | PASS |
HTTP cache updates stored headers from a Last-Modified 304. | PASS | PASS | PASS |
HTTP cache updates returned headers from a ETag 304. | PASS | PASS | PASS |
HTTP cache updates stored headers from a ETag 304. | PASS | PASS | PASS |
/fetch/http-cache/cc-request.html | OK | OK | OK |
HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=0. | PASS | PASS | PASS |
HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=1. | FAIL | PASS | FAIL |
HTTP cache doesn't use fresh response with Age header when request contains Cache-Control: max-age that is greater than remaining freshness. | FAIL | PASS | FAIL |
HTTP cache does use aged stale response when request contains Cache-Control: max-stale that permits its use. | FAIL | PASS | PASS |
HTTP cache does reuse stale response with Age header when request contains Cache-Control: max-stale that permits its use. | FAIL | PASS | PASS |
HTTP cache doesn't reuse fresh response when request contains Cache-Control: min-fresh that wants it fresher. | FAIL | PASS | FAIL |
HTTP cache doesn't reuse fresh response with Age header when request contains Cache-Control: min-fresh that wants it fresher. | FAIL | PASS | FAIL |
HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-cache. | PASS | PASS | PASS |
HTTP cache validates fresh response with Last-Modified when request contains Cache-Control: no-cache. | PASS | PASS | PASS |
HTTP cache validates fresh response with ETag when request contains Cache-Control: no-cache. | PASS | PASS | PASS |
HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-store. | FAIL | PASS | FAIL |
HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached. | FAIL | FAIL | FAIL |
/fetch/http-cache/freshness.html | OK | OK | OK |
HTTP cache reuses a response with a future Expires. | PASS | PASS | PASS |
HTTP cache does not reuse a response with a past Expires. | PASS | PASS | PASS |
HTTP cache does not reuse a response with a present Expires. | PASS | PASS | PASS |
HTTP cache does not reuse a response with an invalid Expires. | PASS | PASS | PASS |
HTTP cache reuses a response with positive Cache-Control: max-age. | PASS | PASS | PASS |
HTTP cache does not reuse a response with Cache-Control: max-age=0. | PASS | PASS | PASS |
HTTP cache reuses a response with positive Cache-Control: max-age and a past Expires. | PASS | PASS | PASS |
HTTP cache reuses a response with positive Cache-Control: max-age and an invalid Expires. | PASS | PASS | PASS |
HTTP cache does not reuse a response with Cache-Control: max-age=0 and a future Expires. | PASS | PASS | PASS |
HTTP cache does not prefer Cache-Control: s-maxage over Cache-Control: max-age. | PASS | PASS | PASS |
HTTP cache does not reuse a response when the Age header is greater than its freshness lifetime. | PASS | FAIL | PASS |
HTTP cache does not store a response with Cache-Control: no-store. | PASS | PASS | PASS |
HTTP cache does not store a response with Cache-Control: no-store, even with max-age and Expires. | PASS | PASS | PASS |
HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use. | PASS | PASS | PASS |
HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use, even with max-age and Expires. | PASS | PASS | PASS |
/fetch/http-cache/heuristic.html | OK | OK | OK |
HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present. | FAIL | FAIL | FAIL |
HTTP cache does not reuse an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is not present. | PASS | PASS | PASS |
HTTP cache reuses a 200 OK response with Last-Modified based upon heuristic freshness. | PASS | PASS | PASS |
HTTP cache reuses a 203 Non-Authoritative Information response with Last-Modified based upon heuristic freshness. | PASS | PASS | PASS |
HTTP cache reuses a 204 No Content response with Last-Modified based upon heuristic freshness. | FAIL | FAIL | PASS |
HTTP cache reuses a 404 Not Found response with Last-Modified based upon heuristic freshness. | FAIL | FAIL | PASS |
HTTP cache reuses a 405 Method Not Allowed response with Last-Modified based upon heuristic freshness. | FAIL | FAIL | PASS |
HTTP cache reuses a 410 Gone response with Last-Modified based upon heuristic freshness. | PASS | PASS | PASS |
HTTP cache reuses a 414 URI Too Long response with Last-Modified based upon heuristic freshness. | FAIL | FAIL | PASS |
HTTP cache reuses a 501 Not Implemented response with Last-Modified based upon heuristic freshness. | FAIL | FAIL | PASS |
HTTP cache does not use a 201 Created response with Last-Modified based upon heuristic freshness. | PASS | PASS | PASS |
HTTP cache does not use a 202 Accepted response with Last-Modified based upon heuristic freshness. | PASS | PASS | PASS |
HTTP cache does not use a 403 Forbidden response with Last-Modified based upon heuristic freshness. | PASS | PASS | PASS |
HTTP cache does not use a 502 Bad Gateway response with Last-Modified based upon heuristic freshness. | PASS | PASS | PASS |
HTTP cache does not use a 503 Service Unavailable response with Last-Modified based upon heuristic freshness. | PASS | PASS | PASS |
HTTP cache does not use a 504 Gateway Timeout response with Last-Modified based upon heuristic freshness. | PASS | PASS | PASS |
/fetch/http-cache/invalidate.html | OK | OK | OK |
HTTP cache invalidates after a successful response from a POST | PASS | PASS | PASS |
HTTP cache does not invalidate after a failed response from an unsafe request | PASS | FAIL | FAIL |
HTTP cache invalidates after a successful response from a PUT | PASS | PASS | PASS |
HTTP cache invalidates after a successful response from a DELETE | PASS | PASS | PASS |
HTTP cache invalidates after a successful response from an unknown method | FAIL | PASS | PASS |
HTTP cache invalidates Location URL after a successful response from a POST | FAIL | PASS | FAIL |
HTTP cache does not invalidate Location URL after a failed response from an unsafe request | PASS | FAIL | PASS |
HTTP cache invalidates Location URL after a successful response from a PUT | FAIL | PASS | FAIL |
HTTP cache invalidates Location URL after a successful response from a DELETE | FAIL | PASS | FAIL |
HTTP cache invalidates Location URL after a successful response from an unknown method | FAIL | PASS | FAIL |
HTTP cache invalidates Content-Location URL after a successful response from a POST | FAIL | PASS | FAIL |
HTTP cache does not invalidate Content-Location URL after a failed response from an unsafe request | PASS | FAIL | PASS |
HTTP cache invalidates Content-Location URL after a successful response from a PUT | FAIL | PASS | FAIL |
HTTP cache invalidates Content-Location URL after a successful response from a DELETE | FAIL | PASS | FAIL |
HTTP cache invalidates Content-Location URL after a successful response from an unknown method | FAIL | PASS | FAIL |
/fetch/http-cache/partial.html | OK | OK | OK |
HTTP cache stores partial content and reuses it. | FAIL | FAIL | FAIL |
HTTP cache stores complete response and serves smaller ranges from it. | FAIL | FAIL | FAIL |
HTTP cache stores partial response and serves smaller ranges from it. | FAIL | FAIL | FAIL |
HTTP cache stores partial content and completes it. | FAIL | FAIL | FAIL |
/fetch/http-cache/status.html | OK | OK | OK |
HTTP cache goes to the network if it has a stale 200 response. | PASS | PASS | PASS |
HTTP cache avoids going to the network if it has a fresh 200 response. | PASS | PASS | PASS |
HTTP cache goes to the network if it has a stale 203 response. | PASS | PASS | PASS |
HTTP cache avoids going to the network if it has a fresh 203 response. | PASS | PASS | PASS |
HTTP cache goes to the network if it has a stale 204 response. | PASS | PASS | PASS |
HTTP cache avoids going to the network if it has a fresh 204 response. | PASS | FAIL | PASS |
HTTP cache goes to the network if it has a stale 299 response. | PASS | PASS | PASS |
HTTP cache avoids going to the network if it has a fresh 299 response. | PASS | FAIL | FAIL |
HTTP cache goes to the network if it has a stale 400 response. | PASS | PASS | PASS |
HTTP cache avoids going to the network if it has a fresh 400 response. | PASS | FAIL | FAIL |
HTTP cache goes to the network if it has a stale 404 response. | PASS | PASS | PASS |
HTTP cache avoids going to the network if it has a fresh 404 response. | PASS | FAIL | PASS |
HTTP cache goes to the network if it has a stale 410 response. | PASS | PASS | PASS |
HTTP cache avoids going to the network if it has a fresh 410 response. | PASS | PASS | PASS |
HTTP cache goes to the network if it has a stale 499 response. | PASS | PASS | PASS |
HTTP cache avoids going to the network if it has a fresh 499 response. | PASS | FAIL | FAIL |
HTTP cache goes to the network if it has a stale 500 response. | PASS | PASS | PASS |
HTTP cache avoids going to the network if it has a fresh 500 response. | PASS | FAIL | FAIL |
HTTP cache goes to the network if it has a stale 502 response. | PASS | PASS | PASS |
HTTP cache avoids going to the network if it has a fresh 502 response. | PASS | FAIL | FAIL |
HTTP cache goes to the network if it has a stale 503 response. | PASS | PASS | PASS |
HTTP cache avoids going to the network if it has a fresh 503 response. | PASS | FAIL | FAIL |
HTTP cache goes to the network if it has a stale 504 response. | PASS | PASS | PASS |
HTTP cache avoids going to the network if it has a fresh 504 response. | PASS | FAIL | FAIL |
HTTP cache goes to the network if it has a stale 599 response. | PASS | PASS | PASS |
HTTP cache avoids going to the network if it has a fresh 599 response. | PASS | FAIL | FAIL |
/fetch/http-cache/vary.html | OK | OK | OK |
HTTP cache reuses Vary response when request matches. | PASS | PASS | PASS |
HTTP cache doesn't use Vary response when request doesn't match. | PASS | PASS | PASS |
HTTP cache doesn't use Vary response when request omits variant header. | PASS | PASS | PASS |
HTTP cache doesn't invalidate existing Vary response. | FAIL | FAIL | FAIL |
HTTP cache doesn't pay attention to headers not listed in Vary. | PASS | PASS | PASS |
HTTP cache reuses two-way Vary response when request matches. | PASS | PASS | PASS |
HTTP cache doesn't use two-way Vary response when request doesn't match. | PASS | PASS | PASS |
HTTP cache doesn't use two-way Vary response when request omits variant header. | PASS | PASS | PASS |
HTTP cache reuses three-way Vary response when request matches. | PASS | PASS | PASS |
HTTP cache doesn't use three-way Vary response when request doesn't match. | PASS | PASS | PASS |
HTTP cache doesn't use three-way Vary response when request omits variant header. | PASS | PASS | PASS |
/fetch/nosniff/image.html | OK | OK | OK |
URL query: | PASS | PASS | PASS |
URL query: ?type= | PASS | PASS | PASS |
URL query: ?type=x | PASS | PASS | PASS |
URL query: ?type=image/gif | PASS | PASS | PASS |
URL query: ?type=image/png | PASS | PASS | PASS |
URL query: ?type=image/png;blah | PASS | PASS | PASS |
/fetch/nosniff/importscripts.html | OK | OK | OK |
/fetch/nosniff/importscripts.html | OK | OK | OK |
Test importScripts() | PASS | PASS | FAIL |
/fetch/nosniff/parsing-nosniff.html | OK | OK | OK |
/fetch/nosniff/parsing-nosniff.html | OK | OK | OK |
URL query: first | FAIL | PASS | FAIL |
URL query: uppercase | PASS | PASS | FAIL |
URL query: last | PASS | PASS | PASS |
URL query: quoted | PASS | PASS | PASS |
URL query: quoted-single | PASS | PASS | PASS |
URL query: no-x | PASS | PASS | PASS |
/fetch/nosniff/script.html | OK | OK | OK |
/fetch/nosniff/script.html | OK | OK | OK |
URL query: | PASS | PASS | FAIL |
URL query: ?type= | PASS | PASS | FAIL |
URL query: ?type=x | PASS | PASS | FAIL |
URL query: ?type=text/javascript | PASS | PASS | PASS |
URL query: ?type=text/ecmascript | PASS | PASS | PASS |
URL query: ?type=text/ecmascript;blah | PASS | PASS | PASS |
/fetch/nosniff/stylesheet.html | OK | OK | OK |
/fetch/nosniff/stylesheet.html | OK | OK | OK |
URL query: | FAIL | PASS | FAIL |
URL query: ?type= | FAIL | PASS | FAIL |
URL query: ?type=x | FAIL | PASS | FAIL |
URL query: ?type=x/x | FAIL | PASS | FAIL |
URL query: ?type=text/css | PASS | PASS | PASS |
URL query: ?type=text/css;blah | PASS | PASS | PASS |
/fetch/nosniff/worker.html | OK | OK | OK |
/fetch/nosniff/worker.html | OK | OK | OK |
URL query: | PASS | PASS | FAIL |
URL query: ?type= | PASS | PASS | FAIL |
URL query: ?type=x | PASS | PASS | FAIL |
Test | Ch59 | FF55 | Sa10 |
---|---|---|---|
/fetch/api/basic/mode-no-cors-worker.html (1/3, 33.33%, 0.05% of total) | OK | OK | OK |
/fetch/api/basic/mode-no-cors-worker.html (1/4, 25.00%, 0.05% of total) | OK | OK | OK |
Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with no-cors mode | FAIL | FAIL | FAIL |
/fetch/api/basic/mode-no-cors.html (1/3, 33.33%, 0.05% of total) | OK | OK | OK |
/fetch/api/basic/mode-no-cors.html (1/4, 25.00%, 0.05% of total) | OK | OK | OK |
Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with no-cors mode | FAIL | FAIL | FAIL |
/fetch/api/basic/request-upload-worker.html (6/17, 35.29%, 0.31% of total) | OK | OK | OK |
/fetch/api/basic/request-upload-worker.html (6/17, 35.29%, 0.29% of total) | OK | OK | OK |
Fetch with POST with ReadableStream | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing String | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing null | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing number | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing ArrayBuffer | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing Blob | FAIL | FAIL | FAIL |
/fetch/api/basic/request-upload.html (6/17, 35.29%, 0.31% of total) | OK | OK | OK |
/fetch/api/basic/request-upload.html (6/17, 35.29%, 0.29% of total) | OK | OK | OK |
Fetch with POST with ReadableStream | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing String | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing null | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing number | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing ArrayBuffer | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing Blob | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-basic-worker.html (4/15, 26.67%, 0.21% of total) | OK | OK | OK |
/fetch/api/cors/cors-basic-worker.html (4/15, 26.67%, 0.19% of total) | OK | OK | OK |
Same domain different protocol different port [no-cors mode] | FAIL | FAIL | FAIL |
Same domain different protocol different port [cors mode] | FAIL | FAIL | FAIL |
Cross domain different protocol [no-cors mode] | FAIL | FAIL | FAIL |
Cross domain different protocol [cors mode] | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-basic.html (4/15, 26.67%, 0.21% of total) | OK | OK | OK |
/fetch/api/cors/cors-basic.html (4/15, 26.67%, 0.19% of total) | OK | OK | OK |
Same domain different protocol different port [no-cors mode] | FAIL | FAIL | FAIL |
Same domain different protocol different port [cors mode] | FAIL | FAIL | FAIL |
Cross domain different protocol [no-cors mode] | FAIL | FAIL | FAIL |
Cross domain different protocol [cors mode] | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-multiple-origins-worker.html (5/6, 83.33%, 0.26% of total) | OK | OK | OK |
/fetch/api/cors/cors-expose-star-worker.html (1/2, 50.00%, 0.05% of total) | OK | OK | OK |
Basic Access-Control-Expose-Headers: * support | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-expose-star.html (1/2, 50.00%, 0.05% of total) | OK | OK | OK |
Basic Access-Control-Expose-Headers: * support | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-multiple-origins-worker.html (5/6, 83.33%, 0.24% of total) | OK | OK | OK |
3 origins allowed, match the 3rd (http://web-platform.test:8000) | FAIL | FAIL | FAIL |
3 origins allowed, match the 3rd ("*") | FAIL | FAIL | FAIL |
3 origins allowed, match twice (http://web-platform.test:8000) | FAIL | FAIL | FAIL |
3 origins allowed, match twice ("*") | FAIL | FAIL | FAIL |
3 origins allowed, match twice ("*" and http://web-platform.test:8000) | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-multiple-origins.html (5/6, 83.33%, 0.26% of total) | OK | OK | OK |
/fetch/api/cors/cors-multiple-origins.html (5/6, 83.33%, 0.24% of total) | OK | OK | OK |
3 origins allowed, match the 3rd (http://web-platform.test:8000) | FAIL | FAIL | FAIL |
3 origins allowed, match the 3rd ("*") | FAIL | FAIL | FAIL |
3 origins allowed, match twice (http://web-platform.test:8000) | FAIL | FAIL | FAIL |
3 origins allowed, match twice ("*") | FAIL | FAIL | FAIL |
3 origins allowed, match twice ("*" and http://web-platform.test:8000) | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-no-preflight-worker.html (2/15, 13.33%, 0.10% of total) | OK | OK | OK |
/fetch/api/cors/cors-no-preflight-worker.html (2/15, 13.33%, 0.10% of total) | OK | OK | OK |
Cross domain different protocol [GET] | FAIL | FAIL | FAIL |
Same domain different protocol different port [GET] | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-no-preflight.html (2/15, 13.33%, 0.10% of total) | OK | OK | OK |
/fetch/api/cors/cors-no-preflight.html (2/15, 13.33%, 0.10% of total) | OK | OK | OK |
Cross domain different protocol [GET] | FAIL | FAIL | FAIL |
Same domain different protocol different port [GET] | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-origin-worker.html (2/17, 11.76%, 0.10% of total) | OK | OK | OK |
/fetch/api/cors/cors-origin-worker.html (2/17, 11.76%, 0.10% of total) | OK | OK | OK |
Cross domain different protocol [origin OK] | FAIL | FAIL | FAIL |
Same domain different protocol different port [origin OK] | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-origin.html (2/17, 11.76%, 0.10% of total) | OK | OK | OK |
/fetch/api/cors/cors-origin.html (2/17, 11.76%, 0.10% of total) | OK | OK | OK |
Cross domain different protocol [origin OK] | FAIL | FAIL | FAIL |
Same domain different protocol different port [origin OK] | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-preflight-redirect-worker.html (10/10, 100.00%, 0.52% of total) | OK | OK | OK |
/fetch/api/cors/cors-preflight-redirect-worker.html (10/10, 100.00%, 0.48% of total) | OK | OK | OK |
Redirection 301 on preflight failed | FAIL | FAIL | FAIL |
Redirection 301 after preflight failed | FAIL | FAIL | FAIL |
Redirection 302 on preflight failed | FAIL | FAIL | FAIL |
Redirection 307 after preflight failed | FAIL | FAIL | FAIL |
Redirection 308 on preflight failed | FAIL | FAIL | FAIL |
Redirection 308 after preflight failed | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-preflight-redirect.html (10/10, 100.00%, 0.52% of total) | OK | OK | OK |
/fetch/api/cors/cors-preflight-redirect.html (10/10, 100.00%, 0.48% of total) | OK | OK | OK |
Redirection 301 on preflight failed | FAIL | FAIL | FAIL |
Redirection 301 after preflight failed | FAIL | FAIL | FAIL |
Redirection 302 on preflight failed | FAIL | FAIL | FAIL |
Redirection 307 after preflight failed | FAIL | FAIL | FAIL |
Redirection 308 on preflight failed | FAIL | FAIL | FAIL |
Redirection 308 after preflight failed | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-preflight-status-worker.html (27/27, 100.00%, 1.41% of total) | OK | OK | OK |
/fetch/api/cors/cors-preflight-star-worker.html (2/8, 25.00%, 0.10% of total) | OK | OK | OK |
CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test) | FAIL | FAIL | FAIL |
CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *) | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-preflight-star.html (2/8, 25.00%, 0.10% of total) | OK | OK | OK |
CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test) | FAIL | FAIL | FAIL |
CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *) | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-preflight-status-worker.html (27/27, 100.00%, 1.31% of total) | OK | OK | OK |
Preflight answered with status 200 | FAIL | FAIL | FAIL |
Preflight answered with status 201 | FAIL | FAIL | FAIL |
Preflight answered with status 202 | FAIL | FAIL | FAIL |
Preflight answered with status 503 | FAIL | FAIL | FAIL |
Preflight answered with status 504 | FAIL | FAIL | FAIL |
Preflight answered with status 505 | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-preflight-status.html (27/27, 100.00%, 1.41% of total) | OK | OK | OK |
/fetch/api/cors/cors-preflight-status.html (27/27, 100.00%, 1.31% of total) | OK | OK | OK |
Preflight answered with status 200 | FAIL | FAIL | FAIL |
Preflight answered with status 201 | FAIL | FAIL | FAIL |
Preflight answered with status 202 | FAIL | FAIL | FAIL |
Preflight answered with status 503 | FAIL | FAIL | FAIL |
Preflight answered with status 504 | FAIL | FAIL | FAIL |
Preflight answered with status 505 | FAIL | FAIL | FAIL |
/fetch/api/headers/headers-basic.html (1/19, 5.26%, 0.05% of total) | OK | OK | OK |
/fetch/api/headers/headers-basic.html (1/19, 5.26%, 0.05% of total) | OK | OK | OK |
Create headers with existing headers with custom iterator | FAIL | FAIL | FAIL |
/fetch/api/request/request-consume-empty.html (2/12, 16.67%, 0.10% of total) | OK | OK | OK |
/fetch/api/policies/referrer-no-referrer-service-worker.https.html (1/1, 100.00%, 0.05% of total) | OK | OK | OK |
Fetch in service worker: referrer with no-referrer policy | FAIL | FAIL | FAIL |
/fetch/api/policies/referrer-origin-service-worker.https.html (1/1, 100.00%, 0.05% of total) | OK | OK | OK |
Fetch in service worker: referrer with no-referrer policy | FAIL | FAIL | FAIL |
/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https.html (1/1, 100.00%, 0.05% of total) | OK | OK | OK |
Fetch in service worker: referrer with origin-when-cross-origin policy | FAIL | FAIL | FAIL |
/fetch/api/policies/referrer-origin-when-cross-origin-worker.html (1/1, 100.00%, 0.05% of total) | OK | OK | OK |
Request's referrer is origin | FAIL | FAIL | FAIL |
/fetch/api/policies/referrer-origin-when-cross-origin.html (1/1, 100.00%, 0.05% of total) | OK | OK | OK |
Request's referrer is origin | FAIL | FAIL | FAIL |
/fetch/api/policies/referrer-unsafe-url-service-worker.https.html (1/1, 100.00%, 0.05% of total) | OK | OK | OK |
Fetch in worker: referrer with unsafe-url policy | FAIL | FAIL | FAIL |
/fetch/api/request/request-consume-empty.html (2/12, 16.67%, 0.10% of total) | OK | OK | OK |
Consume request's body as formData | FAIL | FAIL | FAIL |
Consume empty FormData request body as text | FAIL | FAIL | FAIL |
/fetch/api/request/request-disturbed.html (3/8, 37.50%, 0.16% of total) | OK | OK | OK |
/fetch/api/request/request-disturbed.html (3/8, 37.50%, 0.15% of total) | OK | OK | OK |
Request's body: initial state | FAIL | FAIL | FAIL |
Input request used for creating new request became disturbed | FAIL | FAIL | FAIL |
Input request used for creating new request became disturbed even if body is not used | FAIL | FAIL | FAIL |
/fetch/api/request/request-idl.html (2/47, 4.26%, 0.10% of total) | OK | OK | OK |
/fetch/api/request/request-idl.html (2/47, 4.26%, 0.10% of total) | OK | OK | OK |
Request interface: attribute body | FAIL | FAIL | FAIL |
Request interface: new Request("") must inherit property "body" with the proper type (13) | FAIL | FAIL | FAIL |
/fetch/api/request/request-init-003.sub.html (1/4, 25.00%, 0.05% of total) | OK | OK | OK |
/fetch/api/request/request-init-003.sub.html (1/4, 25.00%, 0.05% of total) | OK | OK | OK |
Check request values when initialized from url string | FAIL | FAIL | FAIL |
/fetch/api/request/request-keepalive-quota.html (2/6, 33.33%, 0.10% of total) | OK | OK | OK |
/fetch/api/request/request-keepalive-quota.html (2/6, 33.33%, 0.10% of total) | OK | OK | OK |
A Keep-Alive fetch() with a body over the Quota Limit should reject. | FAIL | FAIL | FAIL |
A Keep-Alive fetch() should not be allowed if the Quota is used up. | FAIL | FAIL | FAIL |
/fetch/api/response/response-consume-empty.html (2/12, 16.67%, 0.10% of total) | OK | OK | OK |
/fetch/api/response/response-consume-empty.html (2/12, 16.67%, 0.10% of total) | OK | OK | OK |
Consume response's body as formData | FAIL | FAIL | FAIL |
Consume empty FormData response body as text | FAIL | FAIL | FAIL |
/fetch/api/response/response-consume-stream.html (2/9, 22.22%, 0.10% of total) | OK | OK | OK |
/fetch/api/response/response-consume-stream.html (2/9, 22.22%, 0.10% of total) | OK | OK | OK |
Read form data response's body as readableStream | FAIL | FAIL | FAIL |
Getting a redirect Response stream | FAIL | FAIL | FAIL |
/fetch/api/response/response-consume.html (4/39, 10.26%, 0.21% of total) | OK | OK | OK |
/fetch/api/response/response-consume.html (4/39, 10.26%, 0.19% of total) | OK | OK | OK |
Consume response's body: from stream with correct multipart type to formData | FAIL | FAIL | FAIL |
Consume response's body: from stream without correct multipart type to formData (error case) | FAIL | FAIL | FAIL |
Consume response's body: from stream with correct urlencoded type to formData | FAIL | FAIL | FAIL |
Consume response's body: from stream without correct urlencoded type to formData (error case) | FAIL | FAIL | FAIL |
/fetch/api/response/response-idl.html (2/42, 4.76%, 0.10% of total) | OK | OK | OK |
Response interface: attribute trailer | FAIL | FAIL | FAIL |
Response interface: new Response() must inherit property "trailer" with the proper type (8) | FAIL | FAIL | FAIL |
/fetch/api/response/response-trailer.html (1/1, 100.00%, 0.05% of total) | OK | OK | OK |
trailer() test | FAIL | FAIL | FAIL |
/fetch/http-cache/cc-request.html (1/12, 8.33%, 0.05% of total) | OK | OK | OK |
HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached. | FAIL | FAIL | FAIL |
/fetch/http-cache/heuristic.html (1/16, 6.25%, 0.05% of total) | OK | OK | OK |
HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present. | FAIL | FAIL | FAIL |
/fetch/http-cache/partial.html (4/4, 100.00%, 0.19% of total) | OK | OK | OK |
HTTP cache stores partial content and reuses it. | FAIL | FAIL | FAIL |
HTTP cache stores complete response and serves smaller ranges from it. | FAIL | FAIL | FAIL |
HTTP cache stores partial response and serves smaller ranges from it. | FAIL | FAIL | FAIL |
HTTP cache stores partial content and completes it. | FAIL | FAIL | FAIL |
/fetch/http-cache/vary.html (1/11, 9.09%, 0.05% of total) | OK | OK | OK |
HTTP cache doesn't invalidate existing Vary response. | FAIL | FAIL | FAIL |
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 | Ch59 | FF55 | Sa10 |
---|---|---|---|
/fetch/api/basic/mode-no-cors-worker.html (1/3, 33.33%, 0.05% of total) | OK | OK | OK |
/fetch/api/basic/mode-no-cors-worker.html (1/4, 25.00%, 0.05% of total) | OK | OK | OK |
Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with no-cors mode | FAIL | FAIL | FAIL |
/fetch/api/basic/mode-no-cors.html (1/3, 33.33%, 0.05% of total) | OK | OK | OK |
/fetch/api/basic/mode-no-cors.html (1/4, 25.00%, 0.05% of total) | OK | OK | OK |
Fetch https://web-platform.test:8443/fetch/api/resources/top.txt with no-cors mode | FAIL | FAIL | FAIL |
/fetch/api/basic/request-headers-worker.html (1/24, 4.17%, 0.05% of total) | OK | OK | OK |
Fetch with HEAD | PASS | FAIL | FAIL |
/fetch/api/basic/request-headers.html (1/24, 4.17%, 0.05% of total) | OK | OK | OK |
Fetch with HEAD | PASS | FAIL | FAIL |
/fetch/api/basic/request-upload-worker.html (6/17, 35.29%, 0.31% of total) | OK | OK | OK |
/fetch/api/basic/request-upload-worker.html (6/17, 35.29%, 0.29% of total) | OK | OK | OK |
Fetch with POST with ReadableStream | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing String | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing null | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing number | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing ArrayBuffer | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing Blob | FAIL | FAIL | FAIL |
/fetch/api/basic/request-upload.html (6/17, 35.29%, 0.31% of total) | OK | OK | OK |
/fetch/api/basic/request-upload.html (6/17, 35.29%, 0.29% of total) | OK | OK | OK |
Fetch with POST with ReadableStream | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing String | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing null | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing number | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing ArrayBuffer | FAIL | FAIL | FAIL |
Fetch with POST with ReadableStream containing Blob | FAIL | FAIL | FAIL |
/fetch/api/basic/scheme-about-worker.html (3/6, 50.00%, 0.16% of total) | OK | OK | OK |
/fetch/api/basic/scheme-about-worker.html (3/6, 50.00%, 0.15% of total) | OK | OK | OK |
Fetching about:blank (GET) is OK | FAIL | PASS | FAIL |
Fetching about:blank (PUT) is OK | FAIL | PASS | FAIL |
Fetching about:blank (POST) is OK | FAIL | PASS | FAIL |
/fetch/api/basic/scheme-about.html (3/6, 50.00%, 0.16% of total) | OK | OK | OK |
/fetch/api/basic/scheme-about.html (3/6, 50.00%, 0.15% of total) | OK | OK | OK |
Fetching about:blank (GET) is OK | FAIL | PASS | FAIL |
Fetching about:blank (PUT) is OK | FAIL | PASS | FAIL |
Fetching about:blank (POST) is OK | FAIL | PASS | FAIL |
/fetch/api/cors/cors-basic-worker.html (4/15, 26.67%, 0.21% of total) | OK | OK | OK |
/fetch/api/cors/cors-basic-worker.html (4/15, 26.67%, 0.19% of total) | OK | OK | OK |
Same domain different protocol different port [no-cors mode] | FAIL | FAIL | FAIL |
Same domain different protocol different port [cors mode] | FAIL | FAIL | FAIL |
Cross domain different protocol [no-cors mode] | FAIL | FAIL | FAIL |
Cross domain different protocol [cors mode] | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-basic.html (4/15, 26.67%, 0.21% of total) | OK | OK | OK |
/fetch/api/cors/cors-basic.html (4/15, 26.67%, 0.19% of total) | OK | OK | OK |
Same domain different protocol different port [no-cors mode] | FAIL | FAIL | FAIL |
Same domain different protocol different port [cors mode] | FAIL | FAIL | FAIL |
Cross domain different protocol [no-cors mode] | FAIL | FAIL | FAIL |
Cross domain different protocol [cors mode] | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-multiple-origins-worker.html (5/6, 83.33%, 0.26% of total) | OK | OK | OK |
/fetch/api/cors/cors-expose-star-worker.html (1/2, 50.00%, 0.05% of total) | OK | OK | OK |
Basic Access-Control-Expose-Headers: * support | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-expose-star.html (1/2, 50.00%, 0.05% of total) | OK | OK | OK |
Basic Access-Control-Expose-Headers: * support | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-multiple-origins-worker.html (5/6, 83.33%, 0.24% of total) | OK | OK | OK |
3 origins allowed, match the 3rd (http://web-platform.test:8000) | FAIL | FAIL | FAIL |
3 origins allowed, match the 3rd ("*") | FAIL | FAIL | FAIL |
3 origins allowed, match twice (http://web-platform.test:8000) | FAIL | FAIL | FAIL |
3 origins allowed, match twice ("*") | FAIL | FAIL | FAIL |
3 origins allowed, match twice ("*" and http://web-platform.test:8000) | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-multiple-origins.html (5/6, 83.33%, 0.26% of total) | OK | OK | OK |
/fetch/api/cors/cors-multiple-origins.html (5/6, 83.33%, 0.24% of total) | OK | OK | OK |
3 origins allowed, match the 3rd (http://web-platform.test:8000) | FAIL | FAIL | FAIL |
3 origins allowed, match the 3rd ("*") | FAIL | FAIL | FAIL |
3 origins allowed, match twice (http://web-platform.test:8000) | FAIL | FAIL | FAIL |
3 origins allowed, match twice ("*") | FAIL | FAIL | FAIL |
3 origins allowed, match twice ("*" and http://web-platform.test:8000) | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-no-preflight-worker.html (2/15, 13.33%, 0.10% of total) | OK | OK | OK |
/fetch/api/cors/cors-no-preflight-worker.html (2/15, 13.33%, 0.10% of total) | OK | OK | OK |
Cross domain different protocol [GET] | FAIL | FAIL | FAIL |
Same domain different protocol different port [GET] | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-no-preflight.html (2/15, 13.33%, 0.10% of total) | OK | OK | OK |
/fetch/api/cors/cors-no-preflight.html (2/15, 13.33%, 0.10% of total) | OK | OK | OK |
Cross domain different protocol [GET] | FAIL | FAIL | FAIL |
Same domain different protocol different port [GET] | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-origin-worker.html (2/17, 11.76%, 0.10% of total) | OK | OK | OK |
/fetch/api/cors/cors-origin-worker.html (2/17, 11.76%, 0.10% of total) | OK | OK | OK |
Cross domain different protocol [origin OK] | FAIL | FAIL | FAIL |
Same domain different protocol different port [origin OK] | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-origin.html (2/17, 11.76%, 0.10% of total) | OK | OK | OK |
/fetch/api/cors/cors-origin.html (2/17, 11.76%, 0.10% of total) | OK | OK | OK |
Cross domain different protocol [origin OK] | FAIL | FAIL | FAIL |
Same domain different protocol different port [origin OK] | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-preflight-redirect-worker.html (10/10, 100.00%, 0.52% of total) | OK | OK | OK |
/fetch/api/cors/cors-preflight-redirect-worker.html (10/10, 100.00%, 0.48% of total) | OK | OK | OK |
Redirection 301 on preflight failed | FAIL | FAIL | FAIL |
Redirection 301 after preflight failed | FAIL | FAIL | FAIL |
Redirection 302 on preflight failed | FAIL | FAIL | FAIL |
Redirection 307 after preflight failed | FAIL | FAIL | FAIL |
Redirection 308 on preflight failed | FAIL | FAIL | FAIL |
Redirection 308 after preflight failed | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-preflight-redirect.html (10/10, 100.00%, 0.52% of total) | OK | OK | OK |
/fetch/api/cors/cors-preflight-redirect.html (10/10, 100.00%, 0.48% of total) | OK | OK | OK |
Redirection 301 on preflight failed | FAIL | FAIL | FAIL |
Redirection 301 after preflight failed | FAIL | FAIL | FAIL |
Redirection 302 on preflight failed | FAIL | FAIL | FAIL |
Redirection 307 after preflight failed | FAIL | FAIL | FAIL |
Redirection 308 on preflight failed | FAIL | FAIL | FAIL |
Redirection 308 after preflight failed | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-preflight-referrer-worker.html (8/10, 80.00%, 0.42% of total) | OK | OK | OK |
/fetch/api/cors/cors-preflight-referrer-worker.html (8/10, 80.00%, 0.39% of total) | OK | OK | OK |
Referrer policy: "" and referrer: default | FAIL | FAIL | PASS |
Referrer policy: "" and referrer: 'myreferrer' | FAIL | FAIL | PASS |
Referrer policy: origin and referrer: default | FAIL | FAIL | PASS |
Referrer policy: origin-when-cross-origin and referrer: 'myreferrer' | FAIL | FAIL | PASS |
Referrer policy: unsafe-url and referrer: default | FAIL | FAIL | PASS |
Referrer policy: unsafe-url and referrer: 'myreferrer' | FAIL | FAIL | PASS |
/fetch/api/cors/cors-preflight-referrer.html (6/10, 60.00%, 0.31% of total) | OK | OK | OK |
/fetch/api/cors/cors-preflight-referrer.html (6/10, 60.00%, 0.29% of total) | OK | OK | OK |
Referrer policy: "" and referrer: 'myreferrer' | FAIL | FAIL | PASS |
Referrer policy: origin and referrer: default | FAIL | FAIL | PASS |
Referrer policy: origin and referrer: 'myreferrer' | FAIL | FAIL | PASS |
Referrer policy: origin-when-cross-origin and referrer: default | FAIL | FAIL | PASS |
Referrer policy: origin-when-cross-origin and referrer: 'myreferrer' | FAIL | FAIL | PASS |
Referrer policy: unsafe-url and referrer: 'myreferrer' | FAIL | FAIL | PASS |
/fetch/api/cors/cors-preflight-status-worker.html (27/27, 100.00%, 1.41% of total) | OK | OK | OK |
/fetch/api/cors/cors-preflight-star-worker.html (2/8, 25.00%, 0.10% of total) | OK | OK | OK |
CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test) | FAIL | FAIL | FAIL |
CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *) | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-preflight-star.html (2/8, 25.00%, 0.10% of total) | OK | OK | OK |
CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test) | FAIL | FAIL | FAIL |
CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *) | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-preflight-status-worker.html (27/27, 100.00%, 1.31% of total) | OK | OK | OK |
Preflight answered with status 200 | FAIL | FAIL | FAIL |
Preflight answered with status 201 | FAIL | FAIL | FAIL |
Preflight answered with status 202 | FAIL | FAIL | FAIL |
Preflight answered with status 503 | FAIL | FAIL | FAIL |
Preflight answered with status 504 | FAIL | FAIL | FAIL |
Preflight answered with status 505 | FAIL | FAIL | FAIL |
/fetch/api/cors/cors-preflight-status.html (27/27, 100.00%, 1.41% of total) | OK | OK | OK |
/fetch/api/cors/cors-preflight-status.html (27/27, 100.00%, 1.31% of total) | OK | OK | OK |
Preflight answered with status 200 | FAIL | FAIL | FAIL |
Preflight answered with status 201 | FAIL | FAIL | FAIL |
Preflight answered with status 202 | FAIL | FAIL | FAIL |
Preflight answered with status 503 | FAIL | FAIL | FAIL |
Preflight answered with status 504 | FAIL | FAIL | FAIL |
Preflight answered with status 505 | FAIL | FAIL | FAIL |
/fetch/api/headers/header-values-normalize.html (2/62, 3.23%, 0.10% of total) | OK | OK | OK |
/fetch/api/credentials/cookies-worker.html (5/7, 71.43%, 0.24% of total) | OK | OK | OK |
Include mode: 1 cookie | FAIL | FAIL | PASS |
Include mode: 2 cookies | FAIL | FAIL | PASS |
Omit mode: no cookie is stored | FAIL | FAIL | PASS |
Same-origin mode: 1 cookie | FAIL | FAIL | PASS |
Same-origin mode: 2 cookies | FAIL | FAIL | PASS |
/fetch/api/credentials/cookies.html (5/7, 71.43%, 0.24% of total) | OK | OK | OK |
Include mode: 1 cookie | FAIL | FAIL | PASS |
Include mode: 2 cookies | FAIL | FAIL | PASS |
Omit mode: no cookie is stored | FAIL | FAIL | PASS |
Same-origin mode: 1 cookie | FAIL | FAIL | PASS |
Same-origin mode: 2 cookies | FAIL | FAIL | PASS |
/fetch/api/headers/header-values-normalize.html (2/62, 3.23%, 0.10% of total) | OK | OK | OK |
fetch() with value %0A | FAIL | FAIL | PASS |
fetch() with value %0D | FAIL | FAIL | PASS |
/fetch/api/headers/headers-basic.html (4/19, 21.05%, 0.21% of total) | OK | OK | OK |
/fetch/api/headers/headers-basic.html (4/19, 21.05%, 0.19% of total) | OK | OK | OK |
Create headers with existing headers with custom iterator | FAIL | FAIL | FAIL |
Check keys method | FAIL | FAIL | PASS |
Check values method | FAIL | FAIL | PASS |
Check entries method | FAIL | FAIL | PASS |
/fetch/api/headers/headers-idl.html (2/33, 6.06%, 0.10% of total) | OK | OK | OK |
/fetch/api/headers/headers-combine.html (2/4, 50.00%, 0.10% of total) | OK | OK | OK |
Create headers using same name for different values | FAIL | FAIL | PASS |
Check append methods when called with already used name | FAIL | FAIL | PASS |
/fetch/api/headers/headers-idl.html (2/33, 6.06%, 0.10% of total) | OK | OK | OK |
Testing Symbol.iterator property of iterable interface Headers | FAIL | PASS | FAIL |
Testing pair iterable interface Headers | FAIL | PASS | FAIL |
/fetch/api/headers/headers-normalize.html (3/3, 100.00%, 0.16% of total) | OK | OK | OK |
/fetch/api/headers/headers-normalize.html (3/3, 100.00%, 0.15% of total) | OK | OK | OK |
Create headers with not normalized values | FAIL | FAIL | PASS |
Check append method with not normalized values | FAIL | FAIL | PASS |
Check set method with not normalized values | FAIL | FAIL | PASS |
/fetch/api/headers/headers-record.html (8/11, 72.73%, 0.42% of total) | OK | OK | OK |
/fetch/api/headers/headers-record.html (8/11, 72.73%, 0.39% of total) | OK | OK | OK |
Basic operation with one property | FAIL | PASS | FAIL |
Basic operation with one property and a proto | FAIL | PASS | FAIL |
Correct operation ordering with two properties | FAIL | PASS | FAIL |
Correct operation ordering with non-enumerable properties | FAIL | PASS | FAIL |
Correct operation ordering with undefined descriptors | FAIL | PASS | FAIL |
Correct operation ordering with repeated keys | FAIL | PASS | FAIL |
/fetch/api/policies/referrer-origin-worker.html (1/2, 50.00%, 0.05% of total) | OK | OK | OK |
/fetch/api/policies/referrer-no-referrer-service-worker.https.html (1/1, 100.00%, 0.05% of total) | OK | OK | OK |
Fetch in service worker: referrer with no-referrer policy | FAIL | FAIL | FAIL |
/fetch/api/policies/referrer-origin-service-worker.https.html (1/1, 100.00%, 0.05% of total) | OK | OK | OK |
Fetch in service worker: referrer with no-referrer policy | FAIL | FAIL | FAIL |
/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https.html (1/1, 100.00%, 0.05% of total) | OK | OK | OK |
Fetch in service worker: referrer with origin-when-cross-origin policy | FAIL | FAIL | FAIL |
/fetch/api/policies/referrer-origin-when-cross-origin-worker.html (1/1, 100.00%, 0.05% of total) | OK | OK | OK |
Request's referrer is origin | FAIL | FAIL | FAIL |
/fetch/api/policies/referrer-origin-when-cross-origin.html (1/1, 100.00%, 0.05% of total) | OK | OK | OK |
Request's referrer is origin | FAIL | FAIL | FAIL |
/fetch/api/policies/referrer-origin-worker.html (1/2, 50.00%, 0.05% of total) | OK | OK | OK |
Cross-origin referrer is overridden by client origin | FAIL | PASS | FAIL |
/fetch/api/policies/referrer-origin.html (1/2, 50.00%, 0.05% of total) | OK | OK | OK |
/fetch/api/policies/referrer-origin.html (1/2, 50.00%, 0.05% of total) | OK | OK | OK |
Cross-origin referrer is overridden by client origin | FAIL | PASS | FAIL |
/fetch/api/redirect/redirect-referrer-worker.html (9/32, 28.13%, 0.47% of total) | OK | OK | OK |
/fetch/api/policies/referrer-unsafe-url-service-worker.https.html (1/1, 100.00%, 0.05% of total) | OK | OK | OK |
Fetch in worker: referrer with unsafe-url policy | FAIL | FAIL | FAIL |
/fetch/api/redirect/redirect-referrer-worker.html (9/32, 28.13%, 0.44% of total) | OK | OK | OK |
Same origin redirection, empty init, strict-origin redirect header | FAIL | PASS | FAIL |
Same origin redirection, empty redirect header, same-origin init | FAIL | PASS | FAIL |
Same origin redirection, empty redirect header, strict-origin init | FAIL | PASS | FAIL |
Cross origin redirection, empty redirect header, same-origin init | FAIL | PASS | FAIL |
Cross origin redirection, empty redirect header, strict-origin init | FAIL | PASS | FAIL |
Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init | FAIL | PASS | FAIL |
/fetch/api/redirect/redirect-referrer.html (9/32, 28.13%, 0.47% of total) | OK | OK | OK |
/fetch/api/redirect/redirect-referrer.html (9/32, 28.13%, 0.44% of total) | OK | OK | OK |
Same origin redirection, empty init, strict-origin redirect header | FAIL | PASS | FAIL |
Same origin redirection, empty redirect header, same-origin init | FAIL | PASS | FAIL |
Same origin redirection, empty redirect header, strict-origin init | FAIL | PASS | FAIL |
Cross origin redirection, empty redirect header, same-origin init | FAIL | PASS | FAIL |
Cross origin redirection, empty redirect header, strict-origin init | FAIL | PASS | FAIL |
Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init | FAIL | PASS | FAIL |
/fetch/api/request/request-cache-no-store.html (4/8, 50.00%, 0.21% of total) | OK | OK | OK |
/fetch/api/request/request-cache-no-store.html (4/8, 50.00%, 0.19% of total) | OK | OK | OK |
RequestCache "no-store" mode does not store the response in the cache with Etag and stale response | FAIL | PASS | FAIL |
RequestCache "no-store" mode does not store the response in the cache with date and stale response | FAIL | PASS | FAIL |
RequestCache "no-store" mode does not store the response in the cache with Last-Modified and stale response | FAIL | PASS | FAIL |
RequestCache "no-store" mode does not store the response in the cache with Etag and fresh response | FAIL | PASS | FAIL |
RequestCache "no-store" mode does not store the response in the cache with date and fresh response | FAIL | PASS | FAIL |
/fetch/api/request/request-consume-empty.html (2/12, 16.67%, 0.10% of total) | OK | OK | OK |
RequestCache "no-store" mode does not store the response in the cache with Last-Modified and fresh response | FAIL | PASS | FAIL |
/fetch/api/request/request-consume-empty.html (2/12, 16.67%, 0.10% of total) | OK | OK | OK |
Consume request's body as formData | FAIL | FAIL | FAIL |
Consume empty FormData request body as text | FAIL | FAIL | FAIL |
/fetch/api/request/request-consume.html (1/38, 2.63%, 0.05% of total) | OK | OK | OK |
/fetch/api/request/request-consume.html (1/38, 2.63%, 0.05% of total) | OK | OK | OK |
Consume FormData request's body as FormData | FAIL | PASS | FAIL |
/fetch/api/request/request-disturbed.html (3/8, 37.50%, 0.16% of total) | OK | OK | OK |
/fetch/api/request/request-disturbed.html (3/8, 37.50%, 0.15% of total) | OK | OK | OK |
Request's body: initial state | FAIL | FAIL | FAIL |
Input request used for creating new request became disturbed | FAIL | FAIL | FAIL |
Input request used for creating new request became disturbed even if body is not used | FAIL | FAIL | FAIL |
/fetch/api/request/request-error.html (1/21, 4.76%, 0.05% of total) | OK | OK | OK |
/fetch/api/request/request-error.html (1/21, 4.76%, 0.05% of total) | OK | OK | OK |
RequestInit's window is not null | FAIL | FAIL | PASS |
/fetch/api/request/request-idl.html (8/47, 17.02%, 0.42% of total) | OK | OK | OK |
/fetch/api/request/request-idl.html (8/47, 17.02%, 0.39% of total) | OK | OK | OK |
Request interface: attribute type | FAIL | FAIL | PASS |
Request interface: attribute destination | FAIL | FAIL | PASS |
Request interface: attribute body | FAIL | FAIL | FAIL |
Request interface: new Request("") must inherit property "destination" with the proper type (4) | FAIL | FAIL | PASS |
Request interface: new Request("") must inherit property "body" with the proper type (13) | FAIL | FAIL | FAIL |
Request interface: new Request("") must inherit property "formData" with the proper type (17) | FAIL | PASS | FAIL |
/fetch/api/request/request-init-001.sub.html (5/35, 14.29%, 0.26% of total) | OK | OK | OK |
/fetch/api/request/request-init-001.sub.html (5/35, 14.29%, 0.24% of total) | OK | OK | OK |
Check referrer init value of http://test.url and associated getter | FAIL | PASS | FAIL |
Check referrerPolicy init value of same-origin and associated getter | FAIL | PASS | FAIL |
Check referrerPolicy init value of strict-origin and associated getter | FAIL | PASS | FAIL |
Check referrerPolicy init value of strict-origin-when-cross-origin and associated getter | FAIL | PASS | FAIL |
Check mode init value of navigate and associated getter | FAIL | PASS | FAIL |
/fetch/api/request/request-init-003.sub.html (1/4, 25.00%, 0.05% of total) | OK | OK | OK |
/fetch/api/request/request-init-003.sub.html (1/4, 25.00%, 0.05% of total) | OK | OK | OK |
Check request values when initialized from url string | FAIL | FAIL | FAIL |
/fetch/api/request/request-keepalive-quota.html (2/6, 33.33%, 0.10% of total) | OK | OK | OK |
/fetch/api/request/request-keepalive-quota.html (2/6, 33.33%, 0.10% of total) | OK | OK | OK |
A Keep-Alive fetch() with a body over the Quota Limit should reject. | FAIL | FAIL | FAIL |
A Keep-Alive fetch() should not be allowed if the Quota is used up. | FAIL | FAIL | FAIL |
/fetch/api/request/request-structure.html (3/19, 15.79%, 0.16% of total) | OK | OK | OK |
/fetch/api/request/request-structure.html (3/19, 15.79%, 0.15% of total) | OK | OK | OK |
Request has formData method | FAIL | PASS | FAIL |
Check type attribute | FAIL | FAIL | PASS |
Check destination attribute | FAIL | FAIL | PASS |
/fetch/api/response/response-clone.html (11/18, 61.11%, 0.57% of total) | OK | OK | OK |
/fetch/api/response/response-clone.html (11/18, 61.11%, 0.53% of total) | OK | OK | OK |
Check response clone use structureClone for teed ReadableStreams (Int8Arraychunk) | FAIL | FAIL | PASS |
Check response clone use structureClone for teed ReadableStreams (Int16Arraychunk) | FAIL | FAIL | PASS |
Check response clone use structureClone for teed ReadableStreams (Int32Arraychunk) | FAIL | FAIL | PASS |
Check response clone use structureClone for teed ReadableStreams (Float32Arraychunk) | FAIL | FAIL | PASS |
Check response clone use structureClone for teed ReadableStreams (Float64Arraychunk) | FAIL | FAIL | PASS |
Check response clone use structureClone for teed ReadableStreams (DataViewchunk) | FAIL | FAIL | PASS |
/fetch/api/response/response-consume-empty.html (2/12, 16.67%, 0.10% of total) | OK | OK | OK |
/fetch/api/response/response-consume-empty.html (2/12, 16.67%, 0.10% of total) | OK | OK | OK |
Consume response's body as formData | FAIL | FAIL | FAIL |
Consume empty FormData response body as text | FAIL | FAIL | FAIL |
/fetch/api/response/response-consume-stream.html (2/9, 22.22%, 0.10% of total) | OK | OK | OK |
/fetch/api/response/response-consume-stream.html (2/9, 22.22%, 0.10% of total) | OK | OK | OK |
Read form data response's body as readableStream | FAIL | FAIL | FAIL |
Getting a redirect Response stream | FAIL | FAIL | FAIL |
/fetch/api/response/response-consume.html (19/39, 48.72%, 0.99% of total) | OK | OK | OK |
/fetch/api/response/response-consume.html (19/39, 48.72%, 0.92% of total) | OK | OK | OK |
Consume response's body: from text with correct multipart type to formData | FAIL | PASS | FAIL |
Consume response's body: from text without correct multipart type to formData (error case) | FAIL | PASS | FAIL |
Consume response's body: from text with correct urlencoded type to formData | FAIL | PASS | FAIL |
Consume response's body: from stream without correct urlencoded type to formData (error case) | FAIL | FAIL | FAIL |
Consume response's body: from fetch without correct type to formData (error case) | FAIL | PASS | FAIL |
Consume response's body: from multipart form data blob to formData | FAIL | PASS | FAIL |
/fetch/nosniff/parsing-nosniff.html (1/6, 16.67%, 0.05% of total) | OK | OK | OK |
/fetch/api/response/response-idl.html (2/42, 4.76%, 0.10% of total) | OK | OK | OK |
Response interface: attribute trailer | FAIL | FAIL | FAIL |
Response interface: new Response() must inherit property "trailer" with the proper type (8) | FAIL | FAIL | FAIL |
/fetch/api/response/response-trailer.html (1/1, 100.00%, 0.05% of total) | OK | OK | OK |
trailer() test | FAIL | FAIL | FAIL |
/fetch/http-cache/cc-request.html (6/12, 50.00%, 0.29% of total) | OK | OK | OK |
HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=1. | FAIL | PASS | FAIL |
HTTP cache doesn't use fresh response with Age header when request contains Cache-Control: max-age that is greater than remaining freshness. | FAIL | PASS | FAIL |
HTTP cache doesn't reuse fresh response when request contains Cache-Control: min-fresh that wants it fresher. | FAIL | PASS | FAIL |
HTTP cache doesn't reuse fresh response with Age header when request contains Cache-Control: min-fresh that wants it fresher. | FAIL | PASS | FAIL |
HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-store. | FAIL | PASS | FAIL |
HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached. | FAIL | FAIL | FAIL |
/fetch/http-cache/heuristic.html (6/16, 37.50%, 0.29% of total) | OK | OK | OK |
HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present. | FAIL | FAIL | FAIL |
HTTP cache reuses a 204 No Content response with Last-Modified based upon heuristic freshness. | FAIL | FAIL | PASS |
HTTP cache reuses a 404 Not Found response with Last-Modified based upon heuristic freshness. | FAIL | FAIL | PASS |
HTTP cache reuses a 405 Method Not Allowed response with Last-Modified based upon heuristic freshness. | FAIL | FAIL | PASS |
HTTP cache reuses a 414 URI Too Long response with Last-Modified based upon heuristic freshness. | FAIL | FAIL | PASS |
HTTP cache reuses a 501 Not Implemented response with Last-Modified based upon heuristic freshness. | FAIL | FAIL | PASS |
/fetch/http-cache/invalidate.html (9/15, 60.00%, 0.44% of total) | OK | OK | OK |
HTTP cache does not invalidate after a failed response from an unsafe request | PASS | FAIL | FAIL |
HTTP cache invalidates Location URL after a successful response from a POST | FAIL | PASS | FAIL |
HTTP cache invalidates Location URL after a successful response from a PUT | FAIL | PASS | FAIL |
HTTP cache invalidates Location URL after a successful response from a DELETE | FAIL | PASS | FAIL |
HTTP cache invalidates Location URL after a successful response from an unknown method | FAIL | PASS | FAIL |
HTTP cache invalidates Content-Location URL after a successful response from a POST | FAIL | PASS | FAIL |
HTTP cache invalidates Content-Location URL after a successful response from a PUT | FAIL | PASS | FAIL |
HTTP cache invalidates Content-Location URL after a successful response from a DELETE | FAIL | PASS | FAIL |
HTTP cache invalidates Content-Location URL after a successful response from an unknown method | FAIL | PASS | FAIL |
/fetch/http-cache/partial.html (4/4, 100.00%, 0.19% of total) | OK | OK | OK |
HTTP cache stores partial content and reuses it. | FAIL | FAIL | FAIL |
HTTP cache stores complete response and serves smaller ranges from it. | FAIL | FAIL | FAIL |
HTTP cache stores partial response and serves smaller ranges from it. | FAIL | FAIL | FAIL |
HTTP cache stores partial content and completes it. | FAIL | FAIL | FAIL |
/fetch/http-cache/status.html (8/26, 30.77%, 0.39% of total) | OK | OK | OK |
HTTP cache avoids going to the network if it has a fresh 299 response. | PASS | FAIL | FAIL |
HTTP cache avoids going to the network if it has a fresh 400 response. | PASS | FAIL | FAIL |
HTTP cache avoids going to the network if it has a fresh 499 response. | PASS | FAIL | FAIL |
HTTP cache avoids going to the network if it has a fresh 500 response. | PASS | FAIL | FAIL |
HTTP cache avoids going to the network if it has a fresh 502 response. | PASS | FAIL | FAIL |
HTTP cache avoids going to the network if it has a fresh 503 response. | PASS | FAIL | FAIL |
HTTP cache avoids going to the network if it has a fresh 504 response. | PASS | FAIL | FAIL |
HTTP cache avoids going to the network if it has a fresh 599 response. | PASS | FAIL | FAIL |
/fetch/http-cache/vary.html (1/11, 9.09%, 0.05% of total) | OK | OK | OK |
HTTP cache doesn't invalidate existing Vary response. | FAIL | FAIL | FAIL |
/fetch/nosniff/parsing-nosniff.html (1/6, 16.67%, 0.05% of total) | OK | OK | OK |
URL query: first | FAIL | PASS | FAIL |
/fetch/nosniff/stylesheet.html (4/6, 66.67%, 0.21% of total) | OK | OK | OK |
/fetch/nosniff/stylesheet.html (4/6, 66.67%, 0.19% of total) | OK | OK | OK |
URL query: | FAIL | PASS | FAIL |
URL query: ?type= | FAIL | PASS | FAIL |
URL query: ?type=x | FAIL | PASS | FAIL |