diff --git a/results/apache.json b/results/apache.json index 9129283..a7932c9 100644 --- a/results/apache.json +++ b/results/apache.json @@ -479,7 +479,7 @@ "other-cookie": true, "other-date-update": [ "Assertion", - "Response 2 header Date is \"Tue, 11 Jul 2023 13:10:51 GMT\", not \"Tue, 11 Jul 2023 13:10:48 GMT\"" + "Response 2 header Date is \"Wed, 12 Jul 2023 03:34:20 GMT\", not \"Wed, 12 Jul 2023 03:34:17 GMT\"" ], "other-fresh-content-disposition-attachment": true, "other-heuristic-content-disposition-attachment": true, @@ -547,6 +547,14 @@ "stale-sie-close": true, "stale-warning-become": true, "stale-warning-stored": true, + "stale-while-revalidate": [ + "Assertion", + "Response 2 does not come from cache" + ], + "stale-while-revalidate-window": [ + "Setup", + "Response 2 does not come from cache" + ], "status-200-fresh": true, "status-200-must-understand": [ "Assertion", @@ -600,69 +608,6 @@ ], "status-599-must-understand": true, "status-599-stale": true, - "surrogate-append-capabilities": [ - "Assertion", - "Request 1 Surrogate-Capability header not present." - ], - "surrogate-fresh-cc-nostore": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-0": true, - "surrogate-max-age-0-expires": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-max-age-age": true, - "surrogate-max-age-case-insensitive": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-cc-max-age-invalid-expires": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-expires": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-extension": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-long-cc-max-age": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-max-age-max": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-max-plus": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-me-target": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-other-target": true, - "surrogate-max-age-short-cc-max-age": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-space-after-equals": true, - "surrogate-max-age-space-before-equals": true, - "surrogate-no-store": true, - "surrogate-no-store-cc-fresh": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-remove-header": true, "vary-2-match": true, "vary-2-match-omit": true, "vary-2-no-match": true, diff --git a/results/caddy.json b/results/caddy.json index 540a700..cc3bd3f 100644 --- a/results/caddy.json +++ b/results/caddy.json @@ -464,12 +464,21 @@ "head-writethrough": true, "headers-omit-headers-listed-in-Cache-Control-no-cache": true, "headers-omit-headers-listed-in-Cache-Control-no-cache-single": true, - "headers-omit-headers-listed-in-Connection": true, + "headers-omit-headers-listed-in-Connection": [ + "Setup", + "Response 2 header c is \"null\", not \"3\"" + ], "headers-store-Cache-Control": true, "headers-store-Clear-Site-Data": true, "headers-store-Connection": true, - "headers-store-Content-Encoding": true, - "headers-store-Content-Foo": true, + "headers-store-Content-Encoding": [ + "Assertion", + "Response 2 header Content-Encoding is \"null\", not \"apetixmbqfujync\"" + ], + "headers-store-Content-Foo": [ + "Assertion", + "Response 2 header Content-Foo is \"null\", not \"auoicwqkeysmgau\"" + ], "headers-store-Content-Length": true, "headers-store-Content-Location": true, "headers-store-Content-MD5": [ @@ -484,52 +493,49 @@ "Assertion", "Response 2 header Content-Security-Policy is \"null\", not \"default-src 'self' cdn.example.com\"" ], - "headers-store-Content-Type": true, - "headers-store-ETag": [ + "headers-store-Content-Type": [ "Assertion", - "Response 2 header ETag is \"null\", not \"\"ghijkl\"\"" + "Response 2 header Content-Type is \"text/plain\", not \"text/plain;charset=utf-8\"" ], + "headers-store-ETag": true, "headers-store-Expires": [ "Assertion", "Response 2 header Expires is \"null\", not \"Mon, 11 Jan 2038 11:11:11 GMT\"" ], "headers-store-Keep-Alive": true, "headers-store-Proxy-Authenticate": true, - "headers-store-Proxy-Authentication-Info": true, + "headers-store-Proxy-Authentication-Info": [ + "Setup", + "Response body is \"8e6d6f27-15a0-49d3-aef6-1fc7f5fdb8b93ca64a19b5aa\", not \"a2365ffe-e071-48da-9065-3ca64a19b5aa\"" + ], "headers-store-Proxy-Authorization": true, "headers-store-Proxy-Connection": true, "headers-store-Public-Key-Pins": [ "Assertion", "Response 2 header Public-Key-Pins is \"null\", not \"askcumewogyqias\"" ], - "headers-store-Set-Cookie": true, - "headers-store-Set-Cookie2": true, + "headers-store-Set-Cookie": [ + "Assertion", + "Response 2 header Set-Cookie is \"null\", not \"a=c\"" + ], + "headers-store-Set-Cookie2": [ + "Assertion", + "Response 2 header Set-Cookie2 is \"null\", not \"a=c\"" + ], "headers-store-TE": true, "headers-store-Test-Header": true, "headers-store-Transfer-Encoding": [ "Setup", "Response 1 status is 502, not 200" ], - "headers-store-Upgrade": [ - "Setup", - "Response body is \"c5b8d010-6a54-44d5-add9-ea9bc242e1aa\", not \"dfcb3fc0-41be-4d3a-81b7-a614d3bf0477\"" - ], - "headers-store-X-Content-Foo": [ - "Assertion", - "Response 2 header X-Content-Foo is \"null\", not \"axurolifczwtqnk\"" - ], + "headers-store-Upgrade": true, + "headers-store-X-Content-Foo": true, "headers-store-X-Frame-Options": [ "Assertion", "Response 2 header X-Frame-Options is \"null\", not \"sameorigin\"" ], - "headers-store-X-Test-Header": [ - "Assertion", - "Response 2 header X-Test-Header is \"null\", not \"abcdefghijklmno\"" - ], - "headers-store-X-XSS-Protection": [ - "Assertion", - "Response 2 header X-XSS-Protection is \"null\", not \"1; mode=block\"" - ], + "headers-store-X-Test-Header": true, + "headers-store-X-XSS-Protection": true, "heuristic-200-cached": [ "Assertion", "Response 2 does not come from cache" @@ -621,42 +627,66 @@ "Assertion", "Response 3 comes from cache" ], - "invalidate-DELETE-cl": true, + "invalidate-DELETE-cl": [ + "Assertion", + "Response 3 comes from cache" + ], "invalidate-DELETE-failed": [ "Setup", - "Response body is \"1afbc6d8-f144-4d1b-befd-22b4ac802cb5erver-Request-Count: 1\r\nX-Souin-Stored-Ttl: 2m0s\r\n\r\n64f5d4aa-de3c-4c8a-8384-b2895771dcf0\", not \"64f5d4aa-de3c-4c8a-8384-b2895771dcf0\"" + "Response body is \"7fd2ae5a-def5-4783-8593-3e2c59a0f6abRequest-Count: 1\r\nX-Souin-Stored-Ttl: 2m0s\r\n\r\n93459012-22b4-4575-8a7a-2fb7167c8aaf\", not \"93459012-22b4-4575-8a7a-2fb7167c8aaf\"" + ], + "invalidate-DELETE-location": [ + "Assertion", + "Response 3 comes from cache" ], - "invalidate-DELETE-location": true, "invalidate-M-SEARCH": [ "Assertion", "Response 3 comes from cache" ], - "invalidate-M-SEARCH-cl": true, + "invalidate-M-SEARCH-cl": [ + "Assertion", + "Response 3 comes from cache" + ], "invalidate-M-SEARCH-failed": [ "Setup", - "Response body is \"37ca36c6-a5a2-4214-8f68-21050bb99a99unt: 1\r\nX-Souin-Stored-Ttl: 2m0s\r\n\r\n7b7cdd4e-cb96-4c47-87fe-d2409e999fdb\", not \"7b7cdd4e-cb96-4c47-87fe-d2409e999fdb\"" + "Response body is \"e1034ac4-af63-4886-b0f9-22dd6d6eccaared-Ttl: 2m0s\r\n\r\n28b84a90-9f1e-43cf-acfd-bdcd75889b6c\", not \"28b84a90-9f1e-43cf-acfd-bdcd75889b6c\"" + ], + "invalidate-M-SEARCH-location": [ + "Assertion", + "Response 3 comes from cache" ], - "invalidate-M-SEARCH-location": true, "invalidate-POST": [ "Assertion", "Response 3 comes from cache" ], - "invalidate-POST-cl": true, + "invalidate-POST-cl": [ + "Assertion", + "Response 3 comes from cache" + ], "invalidate-POST-failed": [ "Setup", - "Response body is \"078b9747-18a7-4e82-99b1-0e7932b2c9d12m0s\r\n\r\n520e7cd8-470c-47c3-a277-3500960ad0f2\", not \"520e7cd8-470c-47c3-a277-3500960ad0f2\"" + "Response body is \"d2507136-d622-46a8-8397-fb78ebdeb62dunt: 1\r\nX-Souin-Stored-Ttl: 2m0s\r\n\r\n16bc7405-95ae-4a72-a981-c4ea5a8b5004\", not \"16bc7405-95ae-4a72-a981-c4ea5a8b5004\"" + ], + "invalidate-POST-location": [ + "Assertion", + "Response 3 comes from cache" ], - "invalidate-POST-location": true, "invalidate-PUT": [ "Assertion", "Response 3 comes from cache" ], - "invalidate-PUT-cl": true, + "invalidate-PUT-cl": [ + "Assertion", + "Response 3 comes from cache" + ], "invalidate-PUT-failed": [ "Setup", - "Response body is \"5a451448-1c42-4944-b8df-4af2d3a836f3st-Count: 1\r\nX-Souin-Stored-Ttl: 2m0s\r\n\r\n99caad01-70b2-4128-9069-dbba830dfdcb\", not \"99caad01-70b2-4128-9069-dbba830dfdcb\"" + "Response body is \"7cc80304-9c79-4c1f-a93d-8668fc6ff7e9erver-Request-Count: 1\r\nX-Souin-Stored-Ttl: 2m0s\r\n\r\nbcc44f3b-b95a-4aa5-8947-94890e880dc5\", not \"bcc44f3b-b95a-4aa5-8947-94890e880dc5\"" + ], + "invalidate-PUT-location": [ + "Assertion", + "Response 3 comes from cache" ], - "invalidate-PUT-location": true, "method-POST": [ "Assertion", "Response 2 does not come from cache" @@ -671,7 +701,7 @@ ], "other-age-update-max-age": [ "Assertion", - "Response 2 header Age is 10, should be bigger than 32" + "Response 2 header Age is 4, should be bigger than 32" ], "other-authorization": true, "other-authorization-must-revalidate": [ @@ -691,10 +721,7 @@ "Assertion", "Response 2 does not come from cache" ], - "other-fresh-content-disposition-attachment": [ - "Setup", - "Response body is \"01234567890quest-Count: 1\r\nX-Souin-Stored-Ttl: 2m0s\r\n\r\n10ee00e6-e27f-459a-a6d4-867b7151e9ec\", not \"10ee00e6-e27f-459a-a6d4-867b7151e9ec\"" - ], + "other-fresh-content-disposition-attachment": true, "other-heuristic-content-disposition-attachment": [ "Assertion", "Response 2 does not come from cache" @@ -723,11 +750,11 @@ ], "partial-store-partial-reuse-partial-byterange": [ "Assertion", - "Response body is \"01234\", not \"234\"" + "Response 2 status is 200, not 206" ], "partial-store-partial-reuse-partial-suffix": [ "Assertion", - "Response 2 status is 200, not 206" + "Response body is \"01234\", not \"4\"" ], "partial-use-headers": [ "Setup", @@ -743,12 +770,18 @@ "Response 2 does not come from cache" ], "pragma-response-extension": true, - "pragma-response-no-cache": true, - "pragma-response-no-cache-heuristic": true, + "pragma-response-no-cache": [ + "Setup", + "Response body is \"be841406-ff03-4152-8079-d9c8e2c4a6a99c\", not \"47d4aebd-3fc2-419c-abd1-63843d542a9c\"" + ], + "pragma-response-no-cache-heuristic": [ + "Setup", + "Response body is \"944b4542-4cfe-438b-88da-ef592c0cbd3el: 2m0s\r\n\r\n2a36fe30-0d55-45f6-a9af-880bb415835e\", not \"2a36fe30-0d55-45f6-a9af-880bb415835e\"" + ], "query-args-different": true, "query-args-same": [ "Setup", - "Response body is \"6a0f2ae4-c906-4288-a652-8a5219543bbbNow: 1689081135305\r\nServer-Request-Count: 1\r\nX-Souin-Stored-Ttl: 2m0s\r\n\r\n9553059e-246d-4e6e-856e-669d8b1534af\", not \"9553059e-246d-4e6e-856e-669d8b1534af\"" + "Response body is \"1e766a5d-bd92-4893-8572-c0af404f3e6aNow: 1689133007676\r\nServer-Request-Count: 1\r\nX-Souin-Stored-Ttl: 2m0s\r\n\r\n74dbfddb-98c2-4b42-bb92-af76291f43f2\", not \"74dbfddb-98c2-4b42-bb92-af76291f43f2\"" ], "stale-503": [ "Assertion", @@ -790,6 +823,14 @@ "Setup", "Response 2 does not come from cache" ], + "stale-while-revalidate": [ + "Assertion", + "Response 2 does not come from cache" + ], + "stale-while-revalidate-window": [ + "Setup", + "Response 2 does not come from cache" + ], "status-200-fresh": true, "status-200-must-understand": [ "Assertion", @@ -834,7 +875,10 @@ "status-400-stale": true, "status-404-fresh": true, "status-404-stale": true, - "status-410-fresh": true, + "status-410-fresh": [ + "Setup", + "Response 2 status is 200, not 410" + ], "status-410-stale": true, "status-499-fresh": [ "Assertion", @@ -867,66 +911,6 @@ ], "status-599-must-understand": true, "status-599-stale": true, - "surrogate-append-capabilities": [ - "Assertion", - "Request 1 Surrogate-Capability header not present." - ], - "surrogate-fresh-cc-nostore": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-0": true, - "surrogate-max-age-0-expires": true, - "surrogate-max-age-age": true, - "surrogate-max-age-case-insensitive": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-cc-max-age-invalid-expires": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-expires": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-extension": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-long-cc-max-age": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-max-age-max": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-max-plus": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-me-target": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-other-target": true, - "surrogate-max-age-short-cc-max-age": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-space-after-equals": true, - "surrogate-max-age-space-before-equals": true, - "surrogate-no-store": true, - "surrogate-no-store-cc-fresh": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-remove-header": true, "vary-2-match": [ "Assertion", "Response 2 does not come from cache" @@ -943,12 +927,15 @@ "Response 2 does not come from cache" ], "vary-3-order": true, - "vary-cache-key": true, - "vary-invalidate": true, - "vary-match": [ + "vary-cache-key": [ + "Setup", + "Response body is \"f5db50eb-c803-4141-8758-1f9b552d372b-Ttl: 2m0s\r\n\r\n84b6190c-ae7b-48d9-95d0-3f199469ca1c\", not \"84b6190c-ae7b-48d9-95d0-3f199469ca1c\"" + ], + "vary-invalidate": [ "Setup", - "Response body is \"93b5469a-88c2-4fb7-8b19-236b8b866990t: 1\r\nVary: Foo\r\nX-Souin-Stored-Ttl: 2m0s\r\n\r\n0fc58570-ea99-4275-b679-914b2faa722b\", not \"0fc58570-ea99-4275-b679-914b2faa722b\"" + "Response body is \"e640e060-3d98-4266-8ef1-177286c4881bary: Foo\r\nX-Souin-Stored-Ttl: 2m0s\r\n\r\naaaaaaaaaaaaaaa\", not \"aaaaaaaaaaaaaaa\"" ], + "vary-match": true, "vary-no-match": true, "vary-normalise-combine": [ "Assertion", diff --git a/results/chrome.json b/results/chrome.json index 7ba0eb0..14f0207 100644 --- a/results/chrome.json +++ b/results/chrome.json @@ -495,14 +495,6 @@ "TypeError", "Failed to fetch" ], - "stale-close-proxy-revalidate": [ - "TypeError", - "Failed to fetch" - ], - "stale-close-s-maxage=2": [ - "TypeError", - "Failed to fetch" - ], "stale-sie-503": [ "TypeError", "Failed to fetch" @@ -519,6 +511,8 @@ "TypeError", "Failed to fetch" ], + "stale-while-revalidate": true, + "stale-while-revalidate-window": true, "status-200-fresh": true, "status-200-must-understand": [ "Assertion", diff --git a/results/fastly.json b/results/fastly.json index cd3bfcc..b1d41eb 100644 --- a/results/fastly.json +++ b/results/fastly.json @@ -623,7 +623,7 @@ "other-cookie": true, "other-date-update": [ "Assertion", - "Response 2 header Date is \"Tue, 01 Feb 2022 01:02:35 GMT\", not \"Tue, 01 Feb 2022 01:02:32 GMT\"" + "Response 2 header Date is \"Wed, 12 Jul 2023 03:59:28 GMT\", not \"Wed, 12 Jul 2023 03:59:25 GMT\"" ], "other-fresh-content-disposition-attachment": true, "other-heuristic-content-disposition-attachment": [ @@ -709,6 +709,8 @@ "Setup", "Response 2 does not come from cache" ], + "stale-while-revalidate": true, + "stale-while-revalidate-window": true, "status-200-fresh": true, "status-200-must-understand": true, "status-200-stale": true, @@ -789,45 +791,6 @@ ], "status-599-must-understand": true, "status-599-stale": true, - "surrogate-append-capabilities": [ - "Assertion", - "Request 1 Surrogate-Capability header not present." - ], - "surrogate-fresh-cc-nostore": true, - "surrogate-max-age": true, - "surrogate-max-age-0": true, - "surrogate-max-age-0-expires": true, - "surrogate-max-age-age": true, - "surrogate-max-age-case-insensitive": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-cc-max-age-invalid-expires": true, - "surrogate-max-age-expires": true, - "surrogate-max-age-extension": true, - "surrogate-max-age-long-cc-max-age": true, - "surrogate-max-age-max": true, - "surrogate-max-age-max-plus": true, - "surrogate-max-age-me-target": true, - "surrogate-max-age-other-target": true, - "surrogate-max-age-short-cc-max-age": true, - "surrogate-max-age-space-after-equals": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-max-age-space-before-equals": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-no-store": true, - "surrogate-no-store-cc-fresh": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-remove-header": [ - "Assertion", - "Response 1 header Surrogate-Control is \"null\", not \"foo\"" - ], "vary-2-match": true, "vary-2-match-omit": true, "vary-2-no-match": true, diff --git a/results/firefox.json b/results/firefox.json index 5e015a3..e1c2844 100644 --- a/results/firefox.json +++ b/results/firefox.json @@ -456,14 +456,6 @@ "TypeError", "NetworkError when attempting to fetch resource." ], - "stale-close-proxy-revalidate": [ - "TypeError", - "NetworkError when attempting to fetch resource." - ], - "stale-close-s-maxage=2": [ - "TypeError", - "NetworkError when attempting to fetch resource." - ], "stale-sie-503": [ "TypeError", "NetworkError when attempting to fetch resource." @@ -480,6 +472,8 @@ "TypeError", "NetworkError when attempting to fetch resource." ], + "stale-while-revalidate": true, + "stale-while-revalidate-window": true, "status-200-fresh": true, "status-200-must-understand": [ "Assertion", diff --git a/results/nginx.json b/results/nginx.json index d59a247..81dafa7 100644 --- a/results/nginx.json +++ b/results/nginx.json @@ -1,28 +1,28 @@ { "304-etag-update-response-Cache-Control": [ - "Setup", - "Response 2 status is 504, not 200" + "Assertion", + "Response 2 header Cache-Control is \"max-age=1\", not \"max-age=3600\"" ], "304-etag-update-response-Clear-Site-Data": [ - "Setup", - "Response 2 status is 504, not 200" + "Assertion", + "Response 2 header Clear-Site-Data is \"cache\", not \"cookies\"" ], "304-etag-update-response-Content-Encoding": [ - "Setup", - "Response 1 status is 504, not 200" + "Assertion", + "Response 2 header Content-Encoding is \"arizqhypgxofwne\", not \"askcumewogyqias\"" ], "304-etag-update-response-Content-Foo": [ - "Setup", - "Response 2 status is 504, not 200" + "Assertion", + "Response 2 header Content-Foo is \"awsokgcyuqmieaw\", not \"axurolifczwtqnk\"" ], "304-etag-update-response-Content-Length": true, "304-etag-update-response-Content-Location": [ - "Setup", - "Response 2 status is 504, not 200" + "Assertion", + "Response 2 header Content-Location is \"/foo\", not \"/bar\"" ], "304-etag-update-response-Content-MD5": [ - "Setup", - "Response 2 status is 504, not 200" + "Assertion", + "Response 2 header Content-MD5 is \"rL0Y20zC+Fzt72VPzMSk2A==\", not \"N7UdGUp1E+RbVvZSTy1R8g==\"" ], "304-etag-update-response-Content-Range": [ "Assertion", @@ -33,16 +33,16 @@ "Response 2 header Content-Security-Policy is \"default-src 'self'\", not \"default-src 'self' cdn.example.com\"" ], "304-etag-update-response-Content-Type": [ - "Setup", - "Response 2 status is 504, not 200" + "Assertion", + "Response 2 header Content-Type is \"text/plain\", not \"text/plain;charset=utf-8\"" ], "304-etag-update-response-ETag": [ - "Setup", - "Response 1 status is 504, not 200" + "Assertion", + "Response 2 header ETag is \"\"abcdef\"\", not \"\"ghijkl\"\"" ], "304-etag-update-response-Expires": [ - "Setup", - "Response 2 status is 504, not 200" + "Assertion", + "Response 2 header Expires is \"Fri, 01 Jan 2038 01:01:01 GMT\", not \"Mon, 11 Jan 2038 11:11:11 GMT\"" ], "304-etag-update-response-Public-Key-Pins": [ "Assertion", @@ -53,8 +53,8 @@ "Request 2 should have been conditional, but it was not." ], "304-etag-update-response-Set-Cookie2": [ - "Setup", - "Response 1 status is 504, not 200" + "Assertion", + "Response 2 header Set-Cookie2 is \"a=b\", not \"a=c\"" ], "304-etag-update-response-Test-Header": [ "Assertion", @@ -65,12 +65,12 @@ "Response 2 header X-Content-Foo is \"azyxwvutsrqponm\", not \"aaaaaaaaaaaaaaa\"" ], "304-etag-update-response-X-Frame-Options": [ - "Setup", - "Response 1 status is 504, not 200" + "Assertion", + "Response 2 header X-Frame-Options is \"deny\", not \"sameorigin\"" ], "304-etag-update-response-X-Test-Header": [ - "Setup", - "Response 2 status is 504, not 200" + "Assertion", + "Response 2 header X-Test-Header is \"adgjmpsvybehknq\", not \"aeimquycgkoswae\"" ], "304-etag-update-response-X-XSS-Protection": [ "Assertion", @@ -245,8 +245,8 @@ "Request 1 header If-None-Match is \"undefined\", not \"\"abcdef\"\"" ], "conditional-etag-forward-unquoted": [ - "Assertion", - "Request 1 header If-None-Match is \"undefined\", not \"\"abcdef\"\"" + "Setup", + "Response 1 status is 504, not 200" ], "conditional-etag-precedence": [ "Assertion", @@ -261,7 +261,10 @@ "Assertion", "Request 2 header If-None-Match is \"abcdef\", not \"\"abcdef\"\"" ], - "conditional-etag-strong-respond": true, + "conditional-etag-strong-respond": [ + "Setup", + "Response 1 status is 504, not 200" + ], "conditional-etag-strong-respond-multiple-first": true, "conditional-etag-strong-respond-multiple-last": true, "conditional-etag-strong-respond-multiple-second": true, @@ -274,24 +277,42 @@ "Response 2 status is 200, not 304" ], "conditional-etag-unquoted-respond-unquoted": true, - "conditional-etag-vary-headers": true, - "conditional-etag-vary-headers-mismatch": true, + "conditional-etag-vary-headers": [ + "Setup", + "request 2 wasn't sent to server" + ], + "conditional-etag-vary-headers-mismatch": [ + "TypeError", + "Cannot read properties of undefined (reading 'request_headers')" + ], "conditional-etag-weak-generate-weak": true, "conditional-etag-weak-respond": true, - "conditional-etag-weak-respond-backslash": true, - "conditional-etag-weak-respond-lowercase": true, + "conditional-etag-weak-respond-backslash": [ + "Setup", + "PUT config resulted in 504 Gateway Time-out - server: nginx/1.22.1 (Ubuntu) " + ], + "conditional-etag-weak-respond-lowercase": [ + "Setup", + "Response 1 status is 504, not 200" + ], "conditional-etag-weak-respond-omit-slash": true, - "conditional-lm-fresh": true, + "conditional-lm-fresh": [ + "Setup", + "PUT config resulted in 504 Gateway Time-out - server: nginx/1.22.1 (Ubuntu) " + ], "conditional-lm-fresh-earlier": [ "Assertion", "Response 2 status is 200, not 304" ], "conditional-lm-fresh-no-lm": [ - "Assertion", - "Response 2 status is 200, not 304" + "Setup", + "Response 1 status is 504, not 200" ], "conditional-lm-fresh-rfc850": true, - "conditional-lm-stale": true, + "conditional-lm-stale": [ + "Setup", + "Response 1 status is 504, not 200" + ], "freshness-expires-32bit": true, "freshness-expires-age-fast-date": [ "Assertion", @@ -401,16 +422,16 @@ "freshness-none": true, "freshness-s-maxage-shared": true, "head-200-freshness-update": [ - "Setup", - "Response 1 status is 504, not 200" + "Assertion", + "Request 2 had method GET, not HEAD" ], "head-200-retain": [ "Assertion", "Response 2 header Template-A is \"null\", not \"1\"" ], "head-200-update": [ - "Setup", - "Response 2 status is 504, not 200" + "Assertion", + "Request 2 had method GET, not HEAD" ], "head-410-update": [ "Setup", @@ -432,12 +453,21 @@ "Assertion", "Response 2 includes unexpected header a: \"1\"" ], - "headers-store-Cache-Control": true, + "headers-store-Cache-Control": [ + "Setup", + "PUT config resulted in 504 Gateway Time-out - server: nginx/1.22.1 (Ubuntu) " + ], "headers-store-Clear-Site-Data": true, - "headers-store-Connection": true, + "headers-store-Connection": [ + "Setup", + "PUT config resulted in 504 Gateway Time-out - server: nginx/1.22.1 (Ubuntu) " + ], "headers-store-Content-Encoding": true, "headers-store-Content-Foo": true, - "headers-store-Content-Length": true, + "headers-store-Content-Length": [ + "Setup", + "PUT config resulted in 504 Gateway Time-out - server: nginx/1.22.1 (Ubuntu) " + ], "headers-store-Content-Location": true, "headers-store-Content-MD5": true, "headers-store-Content-Range": true, @@ -453,11 +483,14 @@ "headers-store-Public-Key-Pins": true, "headers-store-Set-Cookie": [ "Setup", - "Response 1 status is 504, not 200" + "Response 2 does not come from cache" ], "headers-store-Set-Cookie2": true, "headers-store-TE": true, - "headers-store-Test-Header": true, + "headers-store-Test-Header": [ + "Setup", + "Response 1 status is 504, not 200" + ], "headers-store-Transfer-Encoding": true, "headers-store-Upgrade": true, "headers-store-X-Content-Foo": true, @@ -552,8 +585,8 @@ "Response 2 does not come from cache" ], "invalidate-DELETE": [ - "Setup", - "Response 1 status is 504, not 200" + "Assertion", + "Response 3 comes from cache" ], "invalidate-DELETE-cl": [ "Assertion", @@ -565,8 +598,8 @@ "Response 3 comes from cache" ], "invalidate-M-SEARCH": [ - "Setup", - "Response 2 status is 504, not 200" + "Assertion", + "Response 3 comes from cache" ], "invalidate-M-SEARCH-cl": [ "Assertion", @@ -591,8 +624,8 @@ "Response 3 comes from cache" ], "invalidate-PUT": [ - "Setup", - "Response 2 status is 504, not 200" + "Assertion", + "Response 3 comes from cache" ], "invalidate-PUT-cl": [ "Assertion", @@ -629,7 +662,7 @@ "other-cookie": true, "other-date-update": [ "Assertion", - "Response 2 header Date is \"Tue, 11 Jul 2023 13:10:18 GMT\", not \"Tue, 11 Jul 2023 13:10:15 GMT\"" + "Response 2 header Date is \"Wed, 12 Jul 2023 03:33:46 GMT\", not \"Wed, 12 Jul 2023 03:33:43 GMT\"" ], "other-fresh-content-disposition-attachment": true, "other-heuristic-content-disposition-attachment": [ @@ -724,6 +757,14 @@ "Setup", "Response 2 does not come from cache" ], + "stale-while-revalidate": [ + "Assertion", + "Response 2 does not come from cache" + ], + "stale-while-revalidate-window": [ + "Setup", + "Response 2 does not come from cache" + ], "status-200-fresh": true, "status-200-must-understand": [ "Assertion", @@ -765,69 +806,6 @@ "status-599-fresh": true, "status-599-must-understand": true, "status-599-stale": true, - "surrogate-append-capabilities": [ - "Assertion", - "Request 1 Surrogate-Capability header not present." - ], - "surrogate-fresh-cc-nostore": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-0": true, - "surrogate-max-age-0-expires": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-max-age-age": true, - "surrogate-max-age-case-insensitive": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-cc-max-age-invalid-expires": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-expires": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-extension": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-long-cc-max-age": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-max-age-max": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-max-plus": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-me-target": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-other-target": true, - "surrogate-max-age-short-cc-max-age": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-space-after-equals": true, - "surrogate-max-age-space-before-equals": true, - "surrogate-no-store": true, - "surrogate-no-store-cc-fresh": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-remove-header": true, "vary-2-match": true, "vary-2-match-omit": true, "vary-2-no-match": true, @@ -855,7 +833,10 @@ "Assertion", "Response 2 does not come from cache" ], - "vary-normalise-lang-space": true, + "vary-normalise-lang-space": [ + "Setup", + "PUT config resulted in 504 Gateway Time-out - server: nginx/1.22.1 (Ubuntu) " + ], "vary-normalise-space": [ "Assertion", "Response 2 does not come from cache" @@ -867,12 +848,18 @@ "Assertion", "Response 2 comes from cache" ], - "vary-syntax-empty-star-lines": true, + "vary-syntax-empty-star-lines": [ + "Setup", + "PUT config resulted in 504 Gateway Time-out - server: nginx/1.22.1 (Ubuntu) " + ], "vary-syntax-foo-star": [ - "Assertion", - "Response 2 comes from cache" + "Setup", + "Response 1 status is 504, not 200" + ], + "vary-syntax-star": [ + "TypeError", + "Cannot read properties of undefined (reading 'request_num')" ], - "vary-syntax-star": true, "vary-syntax-star-foo": [ "Assertion", "Response 2 comes from cache" @@ -881,5 +868,8 @@ "Assertion", "Response 2 comes from cache" ], - "vary-syntax-star-star-lines": true + "vary-syntax-star-star-lines": [ + "Setup", + "PUT config resulted in 504 Gateway Time-out - server: nginx/1.22.1 (Ubuntu) " + ] } diff --git a/results/nuster.json b/results/nuster.json index 293d9d5..e2ddadf 100644 --- a/results/nuster.json +++ b/results/nuster.json @@ -624,30 +624,54 @@ "Assertion", "Response 3 comes from cache" ], - "invalidate-DELETE-cl": true, + "invalidate-DELETE-cl": [ + "Assertion", + "Response 3 comes from cache" + ], "invalidate-DELETE-failed": true, - "invalidate-DELETE-location": true, + "invalidate-DELETE-location": [ + "Assertion", + "Response 3 comes from cache" + ], "invalidate-M-SEARCH": [ "Assertion", "Response 3 comes from cache" ], - "invalidate-M-SEARCH-cl": true, + "invalidate-M-SEARCH-cl": [ + "Assertion", + "Response 3 comes from cache" + ], "invalidate-M-SEARCH-failed": true, - "invalidate-M-SEARCH-location": true, + "invalidate-M-SEARCH-location": [ + "Assertion", + "Response 3 comes from cache" + ], "invalidate-POST": [ "Assertion", "Response 3 comes from cache" ], - "invalidate-POST-cl": true, + "invalidate-POST-cl": [ + "Assertion", + "Response 3 comes from cache" + ], "invalidate-POST-failed": true, - "invalidate-POST-location": true, + "invalidate-POST-location": [ + "Assertion", + "Response 3 comes from cache" + ], "invalidate-PUT": [ "Assertion", "Response 3 comes from cache" ], - "invalidate-PUT-cl": true, + "invalidate-PUT-cl": [ + "Assertion", + "Response 3 comes from cache" + ], "invalidate-PUT-failed": true, - "invalidate-PUT-location": true, + "invalidate-PUT-location": [ + "Assertion", + "Response 3 comes from cache" + ], "method-POST": [ "Assertion", "Response 2 does not come from cache" @@ -766,6 +790,14 @@ "Setup", "Response 2 does not come from cache" ], + "stale-while-revalidate": [ + "Assertion", + "Response 2 does not come from cache" + ], + "stale-while-revalidate-window": [ + "Setup", + "Response 2 does not come from cache" + ], "status-200-fresh": true, "status-200-must-understand": true, "status-200-stale": true, @@ -807,66 +839,6 @@ "Response 2 comes from cache" ], "status-599-stale": true, - "surrogate-append-capabilities": [ - "Assertion", - "Request 1 Surrogate-Capability header not present." - ], - "surrogate-fresh-cc-nostore": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-0": true, - "surrogate-max-age-0-expires": true, - "surrogate-max-age-age": true, - "surrogate-max-age-case-insensitive": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-cc-max-age-invalid-expires": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-expires": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-extension": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-long-cc-max-age": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-max-age-max": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-max-plus": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-me-target": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-other-target": true, - "surrogate-max-age-short-cc-max-age": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-space-after-equals": true, - "surrogate-max-age-space-before-equals": true, - "surrogate-no-store": true, - "surrogate-no-store-cc-fresh": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-remove-header": true, "vary-2-match": [ "Assertion", "Response 2 does not come from cache" diff --git a/results/safari.json b/results/safari.json index 347af64..8fc68f9 100644 --- a/results/safari.json +++ b/results/safari.json @@ -483,14 +483,6 @@ "TypeError", "Load failed" ], - "stale-close-proxy-revalidate": [ - "TypeError", - "Load failed" - ], - "stale-close-s-maxage=2": [ - "TypeError", - "Load failed" - ], "stale-sie-503": [ "TypeError", "Load failed" @@ -507,6 +499,8 @@ "TypeError", "Load failed" ], + "stale-while-revalidate": true, + "stale-while-revalidate-window": true, "status-200-fresh": true, "status-200-must-understand": [ "Assertion", diff --git a/results/squid.json b/results/squid.json index 5f2e945..21a9c47 100644 --- a/results/squid.json +++ b/results/squid.json @@ -538,6 +538,14 @@ "stale-sie-close": true, "stale-warning-become": true, "stale-warning-stored": true, + "stale-while-revalidate": [ + "Assertion", + "Response 2 does not come from cache" + ], + "stale-while-revalidate-window": [ + "Setup", + "Response 2 does not come from cache" + ], "status-200-fresh": true, "status-200-must-understand": [ "Assertion", @@ -612,60 +620,6 @@ ], "status-599-must-understand": true, "status-599-stale": true, - "surrogate-append-capabilities": true, - "surrogate-fresh-cc-nostore": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-0": true, - "surrogate-max-age-0-expires": true, - "surrogate-max-age-age": true, - "surrogate-max-age-case-insensitive": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-cc-max-age-invalid-expires": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-expires": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-extension": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-long-cc-max-age": true, - "surrogate-max-age-max": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-max-plus": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-me-target": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-other-target": true, - "surrogate-max-age-short-cc-max-age": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-space-after-equals": true, - "surrogate-max-age-space-before-equals": true, - "surrogate-no-store": true, - "surrogate-no-store-cc-fresh": true, - "surrogate-remove-header": [ - "Assertion", - "Response 1 header Surrogate-Control is \"null\", not \"foo\"" - ], "vary-2-match": true, "vary-2-match-omit": true, "vary-2-no-match": true, diff --git a/results/trafficserver.json b/results/trafficserver.json index f9518ae..782b771 100644 --- a/results/trafficserver.json +++ b/results/trafficserver.json @@ -241,10 +241,7 @@ "Assertion", "Response 2 comes from cache" ], - "freshness-expires-invalid-time-periods": [ - "Assertion", - "Response 2 comes from cache" - ], + "freshness-expires-invalid-time-periods": true, "freshness-expires-invalid-utc": [ "Assertion", "Response 2 comes from cache" @@ -583,6 +580,14 @@ "stale-sie-close": true, "stale-warning-become": true, "stale-warning-stored": true, + "stale-while-revalidate": [ + "Assertion", + "Response 2 does not come from cache" + ], + "stale-while-revalidate-window": [ + "Setup", + "Response 2 does not come from cache" + ], "status-200-fresh": true, "status-200-must-understand": [ "Assertion", @@ -623,73 +628,7 @@ "status-504-stale": true, "status-599-fresh": true, "status-599-must-understand": true, - "status-599-stale": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-append-capabilities": [ - "Assertion", - "Request 1 Surrogate-Capability header not present." - ], - "surrogate-fresh-cc-nostore": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-0": true, - "surrogate-max-age-0-expires": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-max-age-age": true, - "surrogate-max-age-case-insensitive": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-cc-max-age-invalid-expires": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-expires": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-extension": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-long-cc-max-age": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-max-age-max": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-max-plus": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-me-target": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-other-target": true, - "surrogate-max-age-short-cc-max-age": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-space-after-equals": true, - "surrogate-max-age-space-before-equals": true, - "surrogate-no-store": true, - "surrogate-no-store-cc-fresh": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-remove-header": true, + "status-599-stale": true, "vary-2-match": true, "vary-2-match-omit": true, "vary-2-no-match": true, diff --git a/results/varnish.json b/results/varnish.json index d2353c2..7b59df0 100644 --- a/results/varnish.json +++ b/results/varnish.json @@ -652,6 +652,8 @@ "Setup", "Response 2 does not come from cache" ], + "stale-while-revalidate": true, + "stale-while-revalidate-window": true, "status-200-fresh": true, "status-200-must-understand": [ "Assertion", @@ -723,66 +725,6 @@ ], "status-599-must-understand": true, "status-599-stale": true, - "surrogate-append-capabilities": [ - "Assertion", - "Request 1 Surrogate-Capability header not present." - ], - "surrogate-fresh-cc-nostore": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-0": true, - "surrogate-max-age-0-expires": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-max-age-age": true, - "surrogate-max-age-case-insensitive": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-cc-max-age-invalid-expires": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-expires": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-extension": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-long-cc-max-age": [ - "Assertion", - "Response 2 comes from cache" - ], - "surrogate-max-age-max": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-max-plus": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-me-target": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-other-target": true, - "surrogate-max-age-short-cc-max-age": [ - "Assertion", - "Response 2 does not come from cache" - ], - "surrogate-max-age-space-after-equals": true, - "surrogate-max-age-space-before-equals": true, - "surrogate-no-store": true, - "surrogate-no-store-cc-fresh": true, - "surrogate-remove-header": true, "vary-2-match": true, "vary-2-match-omit": true, "vary-2-no-match": true,