client-hints

edit

WPT coverage of the tests of client-hints at the revision 5602b0f210e3. The tests link to their results in the browsers on wpt.fyi. The tentative tests (experimental features) and the reftests are listed separately from the stable tests.

GroupPassingTestsDisabledPass rate
Stable121132092%
Tentative000–
Reftests000–
All121132092%

Failure reasons

The tests that do not pass (failing or disabled), by kind of reason. A test with several reasons counts once per kind.

  • TEST BUG: 9
  • NOT IMPLEMENTED: 1
  • TEST RUNNER: 1

Stable tests

TestResultSubtestsKindDescription
accept-ch-change.https.htmlPass1 / 1
accept-ch-malformed-header.https.htmlPass1 / 1
accept-ch-stickiness/cross-origin-iframe-not-setting-other-origins.https.htmlPass3 / 3
accept-ch-stickiness/cross-origin-iframe-not-setting-own-origin.https.htmlPass3 / 3
accept-ch-stickiness/cross-origin-iframe-redirect-with-fp-delegation.https.htmlPass1 / 1
accept-ch-stickiness/cross-origin-navigation-redirect.https.htmlPass1 / 1
accept-ch-stickiness/cross-origin-navigation.https.htmlPass3 / 3
accept-ch-stickiness/cross-origin-subresource-redirect-with-fp-delegation.https.htmlPass1 / 1
accept-ch-stickiness/cross-origin-subresource-redirect.https.htmlPass1 / 1
accept-ch-stickiness/cross-origin-subresource-with-permissions-policy.https.htmlPass3 / 3
accept-ch-stickiness/cross-origin-subresource.https.htmlPass3 / 3
accept-ch-stickiness/cross-origin-syncxhr-redirect.https.htmlPass1 / 1
accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-other-origins.https.htmlPass3 / 3
accept-ch-stickiness/http-equiv-cross-origin-iframe-not-setting-own-origin.https.htmlPass3 / 3
accept-ch-stickiness/http-equiv-cross-origin-navigation.https.htmlPass3 / 3
accept-ch-stickiness/http-equiv-cross-origin-subresource.https.htmlPass3 / 3
accept-ch-stickiness/http-equiv-same-origin-iframe.https.htmlPass3 / 3
accept-ch-stickiness/http-equiv-same-origin-navigation.https.htmlPass3 / 3
accept-ch-stickiness/http-equiv-same-origin-subresource.https.htmlPass3 / 3
accept-ch-stickiness/meta-equiv-cross-origin-iframe-not-setting-other-origins.https.htmlPass3 / 3
accept-ch-stickiness/meta-equiv-cross-origin-iframe-not-setting-own-origin.https.htmlPass3 / 3
accept-ch-stickiness/meta-equiv-cross-origin-navigation.https.htmlPass3 / 3
accept-ch-stickiness/meta-equiv-cross-origin-subresource.https.htmlPass3 / 3
accept-ch-stickiness/meta-equiv-delegate-ch-cross-origin-iframe-with-hints.https.sub.htmlPass1 / 1
accept-ch-stickiness/meta-equiv-delegate-ch-cross-origin-iframe-without-hints.https.sub.htmlPass1 / 1
accept-ch-stickiness/meta-equiv-delegate-ch-cross-origin-subresource-with-hints.https.sub.htmlPass1 / 1
accept-ch-stickiness/meta-equiv-delegate-ch-cross-origin-subresource-without-hints.https.sub.htmlPass1 / 1
accept-ch-stickiness/meta-equiv-same-origin-iframe.https.htmlPass3 / 3
accept-ch-stickiness/meta-equiv-same-origin-navigation.https.htmlPass3 / 3
accept-ch-stickiness/meta-equiv-same-origin-subresource.https.htmlPass3 / 3
accept-ch-stickiness/same-origin-iframe.https.htmlPass3 / 3
accept-ch-stickiness/same-origin-navigation-empty-accept-ch.https.htmlPass4 / 4
accept-ch-stickiness/same-origin-navigation-no-accept-ch.https.htmlPass4 / 4
accept-ch-stickiness/same-origin-navigation-redirect.https.htmlPass2 / 2
accept-ch-stickiness/same-origin-navigation.https.htmlPass3 / 3
accept-ch-stickiness/same-origin-subresource-redirect-opted-in.https.htmlPass1 / 1
accept-ch-stickiness/same-origin-subresource-redirect.https.htmlPass2 / 2
accept-ch-stickiness/same-origin-subresource.https.htmlPass3 / 3
accept-ch.wildcard.https.sub.htmlPass1 / 1
accept-ch/answers.sub.https.htmlPass2 / 2
accept-ch/cache-revalidation.https.htmlFail0 / 1NOT IMPLEMENTEDthe stale-while-revalidate directive of the HTTP cache: the stale response (Cache-Control: private, max-age=0, stale-while-revalidate=60) is validated before it is used, instead of being used while it is revalidated in the background
accept-ch/meta/resource-in-markup-accept-ch.https.htmlFail0 / 1TEST BUGthe <meta http-equiv="Accept-CH"> element follows two script elements that have executed: the Delegate-CH algorithm of the spec (whose rules the library applies to the accept-ch pragma, which is not specified anymore) ignores the element once a link, style or script element has begun to execute; only Chromium applies it
accept-ch/meta/resource-in-markup-delegate-ch.https.htmlFail0 / 1TEST BUGthe <meta http-equiv="Delegate-CH"> element follows two script elements that have executed: step 2 of the Delegate-CH algorithm of the spec ignores the element once a link, style or script element has begun to execute; only Chromium applies it
accept-ch/no-feature-policy.sub.https.htmlPass2 / 2
accept-ch/non-secure.http.htmlPass1 / 1
accept-ch/permissions-policy-navigation/no-permissions-policy.https.htmlError0 / 0TEST BUGthe tests load /client-hints/resources/permissions-policy-navigation.js, which does not exist (the file is feature-policy-navigation.js): test_frame is not defined, and the harness reports the unhandled rejection as an error in every browser
accept-ch/permissions-policy-navigation/permissions-policy.https.htmlError0 / 0TEST BUGthe tests load /client-hints/resources/permissions-policy-navigation.js, which does not exist (the file is feature-policy-navigation.js): test_frame is not defined, and the harness reports the unhandled rejection as an error in every browser
accept-ch/permissions-policy.sub.https.htmlFail0 / 2TEST BUGthe Permissions-Policy header that the test expects is in feature-policy.sub.https.html.headers, which is not the headers file of the test: without it Sec-CH-DPR is sent to the origin of the document and no hint is delegated to the other origin (the test fails in every browser)
clear-site-data/clear-site-data-all.https.htmlPass1 / 1
clear-site-data/clear-site-data-cache.https.htmlPass1 / 1
clear-site-data/clear-site-data-client-hints-third-party.https.sub.htmlTimeout0 / 1TEST BUGin step 6, the cross-site iframe navigates its top-level traversable to a cross-site URL without user activation, which the framebusting intervention blocks (as in Firefox and Safari), so the page that reports the client hints never loads; fails in every browser
clear-site-data/clear-site-data-client-hints.https.htmlPass1 / 1
clear-site-data/clear-site-data-cookies.https.htmlPass1 / 1
clear-site-data/clear-site-data-storage.https.htmlPass1 / 1
clear-site-data/set-client-hints-after-clear-all.https.htmlPass1 / 1
clear-site-data/set-client-hints-after-clear-cache.https.htmlPass1 / 1
clear-site-data/set-client-hints-after-clear-client-hints.https.htmlPass1 / 1
clear-site-data/set-client-hints-after-clear-cookies.https.htmlPass1 / 1
clear-site-data/set-client-hints-after-clear-storage.https.htmlPass1 / 1
clear-site-data/set-critical-client-hints-after-clear-all.https.htmlPass1 / 1
clear-site-data/set-critical-client-hints-after-clear-cache.https.htmlPass1 / 1
clear-site-data/set-critical-client-hints-after-clear-client-hints.https.htmlPass1 / 1
clear-site-data/set-critical-client-hints-after-clear-cookies.https.htmlPass1 / 1
clear-site-data/set-critical-client-hints-after-clear-storage.https.htmlPass1 / 1
critical-ch/critical-ch.navigation-timing.no-restart.https.htmlPass1 / 1
critical-ch/critical-ch.navigation-timing.restart.https.htmlFail0 / 1TEST RUNNERthe test page is given to the library as the response of a navigation (BrowsingContext.Navigate(url, response)): no request is sent, so its Critical-CH header cannot restart the navigation and criticalCHRestart is 0 (the restart of a fetched navigation is covered by the other critical-ch tests)
critical-ch/iframe.https.window.jsPass2 / 2
critical-ch/mis-matched-count.https.window.jsPass2 / 2
critical-ch/mis-matched.https.window.jsPass1 / 1
critical-ch/mis-matched.multiple.https.window.jsPass1 / 1
critical-ch/navigation.cross-origin.https.window.jsPass1 / 1
critical-ch/navigation.cross-origin.multiple.https.window.jsPass1 / 1
critical-ch/navigation.same-origin.https.window.jsPass1 / 1
critical-ch/navigation.same-origin.multiple.https.window.jsPass1 / 1
critical-ch/non-secure.http.window.jsPass2 / 2
critical-ch/redirect.critical.cross-origin.https.window.jsPass1 / 1
critical-ch/redirect.critical.cross-origin.multiple.https.window.jsPass1 / 1
critical-ch/redirect.critical.same-origin.https.window.jsPass1 / 1
critical-ch/redirect.critical.same-origin.multiple.https.window.jsPass1 / 1
critical-ch/redirect.cross-origin.https.window.jsPass1 / 1
critical-ch/redirect.cross-origin.multiple.https.window.jsPass1 / 1
critical-ch/redirect.same-origin.https.window.jsPass1 / 1
critical-ch/redirect.same-origin.multiple.https.window.jsPass1 / 1
critical-ch/request-count.https.window.jsPass1 / 1
critical-ch/request-count.multiple.https.window.jsPass1 / 1
critical-ch/subresource.https.window.jsPass2 / 2
critical-ch/unsafe-method.https.window.jsPass2 / 2
http-equiv-accept-ch-iframe.https.htmlError0 / 0TEST BUGthe test loads resources/permissions-policy-navigation.js, which does not exist (the file is feature-policy-navigation.js): test_frame is not defined, and the harness reports the unhandled rejection as an error in every browser
http-equiv-accept-ch-malformed-header.https.htmlPass1 / 1
http-equiv-accept-ch-merge.https.htmlPass1 / 1
http-equiv-accept-ch-non-secure.http.htmlPass1 / 1
inner-delegation/accept_ch_delegation_to_all.sub.https.htmlPass1 / 1
inner-delegation/accept_ch_delegation_to_none.sub.https.htmlPass1 / 1
inner-delegation/accept_ch_delegation_to_self.sub.https.htmlPass1 / 1
inner-delegation/accept_ch_delegation_to_some.sub.https.htmlPass1 / 1
inner-delegation/accept_ch_delegation_to_src.sub.https.htmlPass1 / 1
meta-equiv-delegate-ch-iframe.https.htmlError0 / 0TEST BUGthe test loads resources/permissions-policy-navigation.js, which does not exist (the file is feature-policy-navigation.js): test_frame is not defined, and the harness reports the unhandled rejection as an error in every browser
meta-equiv-delegate-ch-injection.https.htmlPass1 / 1
meta-equiv-delegate-ch-malformed-header.https.htmlPass1 / 1
meta-equiv-delegate-ch-merge.https.htmlPass1 / 1
meta-equiv-delegate-ch-non-secure.http.htmlPass1 / 1
permissions-policy/ch-ua-high-entropy-values-allowed-by-permissions-policy-attribute-redirect-on-load.https.sub.htmlPass4 / 4
permissions-policy/ch-ua-high-entropy-values-default-permissions-policy.https.sub.htmlPass3 / 3
permissions-policy/ch-ua-high-entropy-values-disabled-by-permissions-policy.https.sub.htmlPass3 / 3
permissions-policy/ch-ua-high-entropy-values-enabled-by-permissions-policy.https.sub.htmlPass3 / 3
permissions-policy/ch-ua-high-entropy-values-enabled-on-self-origin-by-permissions-policy.https.sub.htmlPass3 / 3
permissions-policy/ch-ua-high-entropy-values-permissions-policy-attribute.https.sub.htmlPass5 / 5
sandbox/iframe-csp-same-origin.https.htmlPass1 / 1
sandbox/iframe-csp.https.htmlPass1 / 1
sandbox/iframe-iframe-popups.https.htmlPass1 / 1
sandbox/iframe-popups-escape-sandbox.https.htmlPass1 / 1
sandbox/iframe-popups.https.htmlPass1 / 1
sandbox/iframe-same-origin.https.htmlPass1 / 1
sandbox/iframe.https.htmlPass1 / 1
sec-ch-quotes.https.htmlPass1 / 1
sec-ch-ua.http.htmlPass1 / 1
sec-ch-ua.https.htmlPass3 / 3
sec-ch-width-auto-sizes-img.https.htmlPass1 / 1
sec-ch-width-auto-sizes-picture.https.htmlPass1 / 1
sec-ch-width.https.htmlPass1 / 1
service-workers/intercept-request-critical.https.window.jsPass1 / 1
service-workers/intercept-request.https.htmlFail0 / 1TEST BUGthe test expects the request of the fetch event of the service worker to have the Sec-CH-Device-Memory and Device-Memory headers: the spec appends the client hints in HTTP-network-or-cache fetch, after the service worker handled the request (Chromium, the only browser that passes, adds them to the navigation request before)
service-workers/navigation-preload-critical.https.window.jsPass1 / 1
service-workers/navigation-preload.https.htmlPass1 / 1
service-workers/new-request-critical.https.window.jsPass1 / 1
service-workers/new-request.https.htmlPass1 / 1
service-workers/passthrough-request-critical.https.window.jsPass1 / 1
service-workers/passthrough-request.https.htmlPass1 / 1
viewport-size/viewport-size-iframe.https.htmlPass1 / 1
viewport-size/viewport-size-subresource.https.htmlPass1 / 1
viewport-size/viewport-size-window-different-dimensions.https.htmlPass1 / 1
viewport-size/viewport-size-window.https.htmlPass1 / 1