diff --git a/goals.json b/goals.json index b543c7d6..6c4b8d16 100644 --- a/goals.json +++ b/goals.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "generatedAt": "2026-08-02T06:39:53.375Z", + "generatedAt": "2026-09-06T19:12:20.128Z", "goals": [ { "id": "v147-css-border-shape-121qq4j", @@ -119,6 +119,24 @@ "status": "open", "createdAt": "2026-07-29" }, + { + "id": "v152-suspicious-site-warnings-mi753d", + "sourcePage": "v152/suspicious-site-warnings", + "goal": "If Google publishes documentation of a review/appeal path specific to suspicious-site (WARN) verdicts, replace the recorded gap in the site-owners section with the sourced flow.", + "kind": "targeted-fix", + "priority": "high", + "status": "open", + "createdAt": "2026-09-06" + }, + { + "id": "v152-user-agent-image-replacement-api-1o48ngc", + "sourcePage": "v152/user-agent-image-replacement-api", + "goal": "Re-check feature 5076374013476864 at each new milestone listing: if the origin trial converts to Intent to Ship (or is extended past 157), update the warn-block, baseline banner, and compat tables on all three pages.", + "kind": "targeted-fix", + "priority": "high", + "status": "open", + "createdAt": "2026-09-06" + }, { "id": "v152-window-shape-api-t6qq8c", "sourcePage": "v152/window-shape-api", @@ -218,6 +236,15 @@ "status": "open", "createdAt": "2026-08-02" }, + { + "id": "v147-css-update-decoupling-of-width-and-style-properties-1y2zrah", + "sourcePage": "v147/css-update-decoupling-of-width-and-style-properties", + "goal": "When BCD grows sub-feature keys (or notes) for the width/style decoupling under css/properties/{border-width,outline-width,column-rule-width}.json, replace the interim compat table with BCD-anchored per-version rows including first Firefox/Safari versions.", + "kind": "targeted-fix", + "priority": "medium", + "status": "open", + "createdAt": "2026-09-06" + }, { "id": "v147-device-bound-session-credentials-1u0l9sw", "sourcePage": "v147/device-bound-session-credentials", @@ -227,6 +254,15 @@ "status": "open", "createdAt": "2026-07-19" }, + { + "id": "v147-update-device-memory-api-limits-14lebmz", + "sourcePage": "v147/update-device-memory-api-limits", + "goal": "Re-verify the wpt.fyi device-memory results once CL 7410045 (test updates for the new limits) lands and refresh the WPT section numbers.", + "kind": "targeted-fix", + "priority": "medium", + "status": "open", + "createdAt": "2026-09-06" + }, { "id": "v148-prompt-api-1g07j1x", "sourcePage": "v148/prompt-api", @@ -607,6 +643,24 @@ "createdAt": "2026-07-28", "suggestedSlug": "sub-apps" }, + { + "id": "v152-suspicious-site-warnings-6lqtov", + "sourcePage": "v152/suspicious-site-warnings", + "goal": "When the Chrome 152 enterprise release notes for this feature are published on the Chrome Enterprise release-notes page, add the direct release-note link to the specifications table (the record is marked releasenotes-publish-ready but the public notes page had no Chrome 152 entry at fetch time).", + "kind": "targeted-fix", + "priority": "medium", + "status": "open", + "createdAt": "2026-09-06" + }, + { + "id": "v152-suspicious-site-warnings-anhldf", + "sourcePage": "v152/suspicious-site-warnings", + "goal": "Re-check kSuspiciousSiteWarnings in components/safe_browsing/core/common/features.cc after milestone 155 (the flag-metadata expiry); when the compiled default flips or the flag entry is removed, simplify the rollout warn-block and compat rows accordingly.", + "kind": "targeted-fix", + "priority": "medium", + "status": "open", + "createdAt": "2026-09-06" + }, { "id": "v152-unframed-display-mode-for-isolated-web-apps-1wo6dlt", "sourcePage": "v152/unframed-display-mode-for-isolated-web-apps", @@ -625,6 +679,24 @@ "status": "open", "createdAt": "2026-07-29" }, + { + "id": "v152-user-agent-image-replacement-api-1rzgfpb", + "sourcePage": "v152/user-agent-image-replacement-api", + "goal": "If the proposal gains a formal spec document (currently explainer-only, 'Unknown status' maturity), swap the Specifications table to it and re-verify the member contracts against its IDL.", + "kind": "targeted-fix", + "priority": "medium", + "status": "open", + "createdAt": "2026-09-06" + }, + { + "id": "v152-user-agent-image-replacement-api-j00ai1", + "sourcePage": "v152/user-agent-image-replacement-api", + "goal": "Link BCD keys and MDN pages for replacedByUserAgent / uareplacestart_event / uareplaceend_event once they exist (all absent 2026-09-06), replacing the interim compat tables.", + "kind": "targeted-fix", + "priority": "medium", + "status": "open", + "createdAt": "2026-09-06" + }, { "id": "v152-webgpu-subgroup-size-control-1lrsdxi", "sourcePage": "v152/webgpu-subgroup-size-control", @@ -724,6 +796,15 @@ "status": "open", "createdAt": "2026-07-29" }, + { + "id": "v153-iterator-join-169hyq3", + "sourcePage": "v153/iterator-join", + "goal": "Update the v153/iterator-join Spec row when tc39/proposal-iterator-join reaches Stage 4 and merges into ECMA-262 (link the integration PR, as the joint-iteration stub does).", + "kind": "targeted-fix", + "priority": "medium", + "status": "open", + "createdAt": "2026-09-06" + }, { "id": "v153-joint-iteration-1kkgey6", "sourcePage": "v153/joint-iteration", @@ -805,6 +886,60 @@ "status": "open", "createdAt": "2026-07-29" }, + { + "id": "v153-xml-parsing-in-rust-for-non-xslt-scenarios-125c24j", + "sourcePage": "v153/xml-parsing-in-rust-for-non-xslt-scenarios", + "goal": "If the tracking bug or a follow-up post publicly enumerates the experiment-phase compatibility issues that were fixed, cite them in the #flags section so developers can recognize the known-fixed patterns.", + "kind": "targeted-fix", + "priority": "medium", + "status": "open", + "createdAt": "2026-09-06" + }, + { + "id": "v153-xml-parsing-in-rust-for-non-xslt-scenarios-td0b9d", + "sourcePage": "v153/xml-parsing-in-rust-for-non-xslt-scenarios", + "goal": "When Chrome removes XSLT and flips full Rust XML parsing (XMLParsingRust, crbug.com/441911594), add a new page for that successor change (new slug) and update this page's lifecycle note with the landed milestone — keeping this route intact.", + "kind": "additive-page", + "priority": "medium", + "status": "open", + "createdAt": "2026-09-06" + }, + { + "id": "v147-css-update-decoupling-of-width-and-style-properties-1u63nyj", + "sourcePage": "v147/css-update-decoupling-of-width-and-style-properties", + "goal": "Re-check the ChromeStatus security/privacy review fields and update the security-privacy section when they move off 'Pending'.", + "kind": "targeted-fix", + "priority": "low", + "status": "open", + "createdAt": "2026-09-06" + }, + { + "id": "v147-css-update-decoupling-of-width-and-style-properties-kehekb", + "sourcePage": "v147/css-update-decoupling-of-width-and-style-properties", + "goal": "Quote the CSSWG resolution text from csswg-drafts issue #11494 once the issue page is reachable (session proxy returned 403), strengthening the specifications table entry.", + "kind": "targeted-fix", + "priority": "low", + "status": "open", + "createdAt": "2026-09-06" + }, + { + "id": "v147-update-device-memory-api-limits-12etgi2", + "sourcePage": "v147/update-device-memory-api-limits", + "goal": "If Chrome revises the Android upper bound (>8 GiB), update the value tables and the security/privacy rationale with the new evidence.", + "kind": "targeted-fix", + "priority": "low", + "status": "open", + "createdAt": "2026-09-06" + }, + { + "id": "v147-update-device-memory-api-limits-8f0fui", + "sourcePage": "v147/update-device-memory-api-limits", + "goal": "Watch BCD/web-features for a dedicated entry keyed on the 147 limits change (currently recorded only as notes on the four existing keys) and tighten the Baseline banner citation if one appears.", + "kind": "targeted-fix", + "priority": "low", + "status": "open", + "createdAt": "2026-09-06" + }, { "id": "v149-css-gap-decorations-fr1umo", "sourcePage": "v149/css-gap-decorations", @@ -1104,6 +1239,15 @@ "status": "open", "createdAt": "2026-07-28" }, + { + "id": "v152-suspicious-site-warnings-1tud1wa", + "sourcePage": "v152/suspicious-site-warnings", + "goal": "If a settings surface for reviewing/revoking 'Marked as safe' sites ships (the allowlist API supports revocation), document the user-facing management path with screenshots-in-words and cite the settings page.", + "kind": "targeted-fix", + "priority": "low", + "status": "open", + "createdAt": "2026-09-06" + }, { "id": "v152-unframed-display-mode-for-isolated-web-apps-1lfnrpc", "sourcePage": "v152/unframed-display-mode-for-isolated-web-apps", @@ -1113,6 +1257,16 @@ "status": "open", "createdAt": "2026-07-29" }, + { + "id": "v152-user-agent-image-replacement-api-frbnik", + "sourcePage": "v152/user-agent-image-replacement-api", + "goal": "Add a reference page for the :replaced-by-user-agent CSS pseudo-class if the explainer's noted future enhancement ships as a separate chromestatus feature.", + "kind": "additive-page", + "priority": "low", + "status": "open", + "createdAt": "2026-09-06", + "suggestedSlug": "replaced-by-user-agent-pseudo-class" + }, { "id": "v152-webgpu-subgroup-size-control-42yubd", "sourcePage": "v152/webgpu-subgroup-size-control", @@ -1167,6 +1321,24 @@ "status": "open", "createdAt": "2026-07-29" }, + { + "id": "v153-iterator-join-19228zm", + "sourcePage": "v153/iterator-join", + "goal": "Replace the 'no webstatus.dev entry' Baseline explanation on v153/iterator-join with a direct webstatus.dev citation once the tc39-iterator-join web-feature is published there.", + "kind": "targeted-fix", + "priority": "low", + "status": "open", + "createdAt": "2026-09-06" + }, + { + "id": "v153-iterator-join-1sojjsg", + "sourcePage": "v153/iterator-join", + "goal": "Simplify the v153/iterator-join browser-compatibility row once BCD records a stable Safari version (currently 'preview').", + "kind": "targeted-fix", + "priority": "low", + "status": "open", + "createdAt": "2026-09-06" + }, { "id": "v153-joint-iteration-12lj3u1", "sourcePage": "v153/joint-iteration", @@ -1211,6 +1383,24 @@ "priority": "low", "status": "open", "createdAt": "2026-07-29" + }, + { + "id": "v153-xml-parsing-in-rust-for-non-xslt-scenarios-1qk4kyo", + "sourcePage": "v153/xml-parsing-in-rust-for-non-xslt-scenarios", + "goal": "When the Chrome Platform Showcase ships a /v153/xml-parsing-in-rust-for-non-xslt-scenarios/ route, replace the text-link fallback in #examples with the live embed.", + "kind": "targeted-fix", + "priority": "low", + "status": "open", + "createdAt": "2026-09-06" + }, + { + "id": "v153-xml-parsing-in-rust-for-non-xslt-scenarios-lnutb2", + "sourcePage": "v153/xml-parsing-in-rust-for-non-xslt-scenarios", + "goal": "Re-verify the vendored xml crate version (currently 1.4.0 per README.chromium) and the M153-branch flag status once 153 reaches stable; update the at-a-glance and compat rows if the rollout used Finch staging.", + "kind": "targeted-fix", + "priority": "low", + "status": "open", + "createdAt": "2026-09-06" } ] } diff --git a/migrations.json b/migrations.json index 694acf0c..5905a7a5 100644 --- a/migrations.json +++ b/migrations.json @@ -304,7 +304,7 @@ "action": "assertion-migrate", "assertion": "vendor-positions-linked", "from": "Requires a direct link to mozilla/standards-positions #1245 (generic PEPC take-2 thread)", - "to": "Requires a direct link to mozilla/standards-positions #1392 (Capability Element former PEPC) — the ChromeStatus record's ff.view.url", + "to": "Requires a direct link to mozilla/standards-positions #1392 (Capability Element former PEPC) \u2014 the ChromeStatus record's ff.view.url", "reason": "The immutable assertion hard-coded the wrong Firefox position issue: #1245 is the older generic Page Embedded Permission Control thread, while the ChromeStatus record cites #1392 for this feature. Factual correction of the assertion target, not a weakening.", "evidence": "Independent cycle-17 re-review finding 4, verified against the live ChromeStatus feature 4926233538330624 record (browsers.ff.view.url = mozilla/standards-positions/issues/1392) on 2026-07-26.", "date": "2026-07-26" @@ -528,5 +528,15 @@ "reason": "Listing correction per CLAUDE.md invariants #1 (slug source: milestone listing name) and #2 (milestone gating: listing position only): chromestatus feature 6035800057839616 is ABSENT from the live milestone=149 listing and PRESENT in the milestone=149 listing ('In developer trial (Behind a flag)'; listing name 'Platform-provided behaviors for custom elements'). The feature was also renamed on chromestatus, so the slug follows the current listing name. Same chromestatus feature id; recording as a move so the old route 301-redirects to the corrected route and old inbound links resolve instead of 404. Note: same-milestone listing rename.", "evidence": "Live chromestatus listings queried 2026-07-28: feature 6035800057839616 present in features_by_type for milestone=149 ('In developer trial (Behind a flag)'), absent from milestone=149. Page identity link (invariant #3) unchanged: chromestatus.com/feature/6035800057839616.", "date": "2026-07-28" + }, + { + "id": "v151/xml-parsing-in-rust-for-non-xslt-scenarios", + "action": "move", + "from": "/v151/xml-parsing-in-rust-for-non-xslt-scenarios/", + "to": "/v153/xml-parsing-in-rust-for-non-xslt-scenarios/", + "feature": "5309598397497344", + "reason": "Listing correction per CLAUDE.md invariant #2 (milestone gating: listing position only): chromestatus feature 5309598397497344 is ABSENT from the live milestone=151 listing and PRESENT in the milestone=153 listing ('Enabled by default'; listing name unchanged, so the slug is identical). The v151 filing came from the 2026-08-08 accuracy pass (ea6b879) when the feature was then listed at 151; chromestatus has since refiled the ship milestone at 153 (the Intent to Ship estimated M151; the shipped milestone is 153). The v153 destination page is a new, fuller reference written 2026-09-06 that keeps the same chromestatus identity; recording as a move so the old route 301-redirects and old inbound links resolve instead of 404.", + "evidence": "Live chromestatus listings queried 2026-09-06: feature 5309598397497344 absent from features_by_type for milestone=151, present for milestone=153 ('Enabled by default'). Destination page identity link (invariant #3): chromestatus.com/feature/5309598397497344.", + "date": "2026-09-06" } ] diff --git a/reports/conformance/index.html b/reports/conformance/index.html index 6680ae32..25970457 100644 --- a/reports/conformance/index.html +++ b/reports/conformance/index.html @@ -21,13 +21,211 @@

conformance

conformance rollup

Deterministic headless-Chrome run of every reference page's immutable conformance suite. Blocked = manual-evidenced (needs agent review) or genuinely unavailable — never a pass.

-
1
suites
-
23
assertions
-
18
pass
-
0
fail
-
5
blocked
+
199
suites
+
4788
assertions
+
3731
pass
+
20
fail
+
1037
blocked
-
pagestatustested/totalpassfailblocked
v147/css-border-shapebuilt18/231805
+ v147/auto-sizes-for-lazy-loaded-images-with-srcsetstub17/221705 +v147/autofill-eventbuilt19/241905 +v147/clip-text-overflow-on-user-interactionbuilt19/241905 +v147/corner-shaping-corner-shape-superellipse-squirclestub17/221705 +v147/css-border-shapebuilt18/231805 +v147/css-contrast-colorstub17/221705 +v147/css-update-decoupling-of-width-and-style-propertiesbuilt18/231805 +v147/csspseudoelement-interfacestub17/221705 +v147/device-bound-session-credentialsbuilt63/696306 +v147/document-policy-in-dedicated-workersbuilt19/241725 +v147/element-scoped-view-transitionsbuilt18/231805 +v147/gamepad-event-driven-input-apibuilt19/241905 +v147/js-profiling-in-dedicated-workersbuilt19/241815 +v147/json-and-style-support-for-link-rel-modulepreloadstub17/221705 +v147/lazy-loading-for-video-and-audio-elementsbuilt19/241905 +v147/local-network-access-restrictions-for-websocketsbuilt19/241815 +v147/local-network-access-restrictions-for-webtransportbuilt19/241815 +v147/local-network-access-restrictions-on-service-worker-windowclient-navigatebuilt18/231715 +v147/local-network-access-restrictionsbuilt18/231625 +v147/math-sumprecisestub17/221705 +v147/prerendering-cross-origin-iframesstub17/221705 +v147/pseudo-target-on-eventsbuilt18/231805 +v147/pwa-origin-migrationbuilt19/241905 +v147/remove-inline-xslt-for-production-of-svgbuilt16/211605 +v147/support-path-attribute-on-svg-textpath-elementstub17/221705 +v147/timeline-named-range-scrollstub17/221705 +v147/update-device-memory-api-limitsbuilt18/231805 +v147/web-neural-network-api-webnnbuilt19/241905 +v147/web-printing-apibuilt36/413605 +v147/webnnbuilt19/241905 +v147/webxr-layersstub17/221705 +v147/webxr-plane-detectionbuilt18/231805 +v147/x25519kyber768-key-encapsulation-for-tlsbuilt18/231625 +v148/agentic-federated-loginbuilt19/241815 +v148/at-rule-css-feature-detectionbuilt18/231805 +v148/container-timingbuilt19/241905 +v148/content-type-in-resource-timingstub17/221705 +v148/correctly-set-dropeffect-for-dragenter-dragleave-and-dragover-eventsbuilt18/231805 +v148/css-name-only-container-queriesstub17/221705 +v148/deprecate-and-remove-non-allowlisted-event-interfaces-from-document-createeventbuilt17/221705 +v148/extended-lifetime-shared-workersbuilt19/241815 +v148/get-secure-payment-confirmation-capabilitiesbuilt18/231805 +v148/html-in-canvasbuilt19/241815 +v148/idna-contextj-rulesbuilt18/231805 +v148/language-detector-apistub17/221705 +v148/lazy-loading-for-video-and-audio-elementsstub17/221705 +v148/long-animation-frames-style-durationbuilt19/241905 +v148/manifest-localizationbuilt18/231805 +v148/open-font-format-avar2-text-shaping-and-glyph-renderingbuilt18/231805 +v148/out-of-order-streamingbuilt18/231805 +v148/parse-processing-instructions-in-htmlbuilt19/241905 +v148/pointer-event-suppression-on-drag-startbuilt18/231805 +v148/predictable-reported-storage-quotabuilt18/231805 +v148/prompt-api-sampling-parametersbuilt19/241905 +v148/prompt-apibuilt19/241905 +v148/remove-explicit-border-color-ua-stylesheet-rule-for-tablesbuilt17/221705 +v148/renewed-html-insertion-streaming-methodsbuilt19/241905 +v148/sharedworker-on-androidstub17/221705 +v148/summarizer-api-performance-preferencebuilt19/241905 +v148/text-decoration-skip-ink-allstub17/221705 +v148/the-revert-rule-keywordstub17/221705 +v148/translator-apistub17/221705 +v148/user-action-pseudo-class-top-layer-boundarybuilt19/241905 +v148/web-app-html-install-elementbuilt19/241905 +v148/web-authentication-immediate-ui-modebuilt19/241815 +v148/web-serial-api-on-androidstub17/221705 +v148/webgpu-compatibility-modebuilt19/241905 +v148/webgpu-linear-indexing-featurebuilt18/231805 +v148/webrtc-datachannel-always-negotiate-data-channelsbuilt18/231805 +v149/android-ime-media-insertionbuilt18/231805 +v149/clip-text-overflow-on-user-interactionbuilt18/231805 +v149/comma-separated-container-queriesbuilt19/241905 +v149/css-gap-decorationsbuilt18/231805 +v149/css-scroll-state-container-queriesbuilt18/231805 +v149/css-text-boxbuilt18/231805 +v149/disconnect-websockets-on-bfcache-entrybuilt18/231805 +v149/flex-wrap-balancebuilt19/241905 +v149/gamepad-event-driven-input-apibuilt19/241905 +v149/image-rendering-crisp-edgesstub17/221705 +v149/indexeddb-sqlite-backendbuilt19/241905 +v149/inline-script-cachebuilt19/241905 +v149/intl-locale-prototype-variantsstub17/221705 +v149/overscroll-gesturesbuilt19/241905 +v149/payment-request-allow-payment-handlers-to-report-back-internal-errorsbuilt18/231805 +v149/permissions-policy-focus-without-user-activationbuilt19/241905 +v149/platform-provided-behaviors-for-custom-elementsbuilt19/241905 +v149/popover-hint-behavior-changesbuilt19/241905 +v149/remove-explicit-border-color-ua-stylesheet-rule-for-tablesbuilt16/211605 +v149/request-isreloadnavigation-attributebuilt18/231805 +v149/respect-autocorrect-off-for-windows-touch-keyboard-in-tsfbuilt18/231805 +v149/selective-clipboard-format-readstub17/221705 +v149/support-path-and-shape-in-shape-outsidestub17/221705 +v149/support-rect-and-xywh-in-shape-outsidebuilt18/231805 +v149/uint8array-base64-hexstub17/221705 +v149/user-action-pseudo-class-top-layer-boundarybuilt18/231805 +v149/web-app-scope-system-accent-colorbuilt18/231805 +v149/webassembly-custom-descriptorsbuilt19/241905 +v149/webmcpbuilt19/241905 +v150/accentcolor-and-accentcolortext-system-colorsstub17/221705 +v150/allow-optional-rounding-parameter-for-polygonstub17/221705 +v150/animatable-zoombuilt18/231805 +v150/clone-into-all-descendant-selectedcontent-elementsbuilt18/231805 +v150/comma-separated-container-queriesbuilt18/231805 +v150/css-background-clip-border-areastub17/221705 +v150/css-image-color-functionstub17/221705 +v150/css-light-dark-with-image-valuesstub17/221705 +v150/css-text-fit-propertybuilt18/231805 +v150/css-url-request-modifiersbuilt18/231805 +v150/css4-text-decoration-skip-spacesbuilt19/241905 +v150/disable-svg-filters-on-plugins-and-iframesbuilt24/292405 +v150/email-verification-protocolbuilt19/241905 +v150/expose-unprintable-areas-via-cssbuilt18/231805 +v150/flex-wrap-balancestub17/221705 +v150/focusgroupbuilt19/241815 +v150/indexeddb-sqlite-backendbuilt18/231805 +v150/media-element-pseudo-classesstub17/221705 +v150/mediastreamtrackprocessor-frame-countersbuilt18/231805 +v150/named-feature-function-for-css-supportsbuilt18/231805 +v150/opaque-origin-for-data-urlsbuilt18/231805 +v150/out-of-order-streamingbuilt19/241815 +v150/overscroll-behavior-chainbuilt18/231805 +v150/parse-processing-instructions-in-htmlbuilt18/231805 +v150/popover-hint-behavior-changesstub17/221705 +v150/programmatic-scroll-promisesbuilt18/231805 +v150/pwa-origin-migrationbuilt18/231715 +v150/speculative-load-measurementbuilt20/262006 +v150/support-path-length-as-a-css-propertystub17/221705 +v150/update-text-selection-on-mouseup-before-dispatching-click-eventbuilt19/241905 +v150/web-speech-api-on-device-recognition-qualitybuilt18/231805 +v150/web-speech-api-unspoken-punctuationbuilt19/241905 +v150/webgpu-immediatesbuilt18/231805 +v150/webrtc-diagnostic-logging-apibuilt20/262006 +v151/algorithm-updates-in-webcryptobuilt20/262006 +v151/animation-accessor-on-animation-and-transition-eventsbuilt26/352609 +v151/aria-actionsbuilt20/262006 +v151/capability-elements-usermedia-mvpbuilt32/383206 +v151/change-the-position-anchor-initial-value-to-normalstub19/241905 +v151/chrome-151-removes-support-for-macos-12built16/211605 +v151/cross-origin-redirect-timing-opt-inbuilt30/383008 +v151/css-ruby-overhang-propertybuilt18/231805 +v151/declarative-performance-observerbuilt19/241905 +v151/declarative-shadow-dom-shadowrootslotassignment-attributestub17/221705 +v151/deviceorientation-events-permission-request-apistub17/221705 +v151/incognitostaticstoragequotabuilt18/231805 +v151/languagedetector-support-for-traditional-vs-simplified-chinesestub19/251906 +v151/navigation-ignore-duplicate-navigationsbuilt19/251906 +v151/no-auto-rewind-for-animationtrigger-play-methodsbuilt20/262006 +v151/performancesoftnavigation-and-interactioncontentfulpaint-performance-entrybuilt19/241815 +v151/permission-policy-merger-direct-sockets-private-with-local-network-and-loopback-built18/231805 +v151/permissions-policy-focus-without-user-activationbuilt18/231805 +v151/prefetch-activation-beaconbuilt20/262006 +v151/protocol-filtering-in-digital-credential-apibuilt25/332508 +v151/remove-legacynointerfaceobject-from-fontfaceset-idlbuilt16/211605 +v151/resource-timing-add-spec-compliant-service-worker-router-timing-fieldsbuilt18/231805 +v151/speculation-rules-form-submission-fieldbuilt20/262006 +v151/textstream-for-response-request-blobbuilt27/3727010 +v151/web-speech-api-unspoken-punctuationbuilt18/231805 +v151/webrtc-data-channel-sctp-negotiation-acceleration-protocolbuilt20/262006 +v151/wheel-event-momentumbuilt31/403109 +v152/audiopreferred-capture-in-getdisplaymedia-apibuilt20/262006 +v152/connection-allowlistsbuilt19/241905 +v152/cpu-performance-apibuilt18/231805 +v152/csspseudoelement-support-for-backdrop-scroll-marker-and-view-transitionsbuilt19/241725 +v152/deprecate-and-remove-attribution-reporting-apibuilt16/211605 +v152/deprecate-and-remove-private-aggregation-apibuilt16/211605 +v152/deprecate-and-remove-xsltbuilt18/241806 +v152/expose-the-autocorrect-global-html-attributebuilt18/231805 +v152/gamepad-button-type-attributebuilt19/241905 +v152/media-element-pseudo-classesstub17/221705 +v152/mediacapabilities-decodinginfo-encryptionschemestub17/221705 +v152/notification-attribution-for-pwas-on-macosbuilt20/262006 +v152/opaquerangebuilt19/241905 +v152/reference-target-for-cross-root-ariabuilt19/241905 +v152/relative-alpha-colors-css-color-5-alpha-functionbuilt18/231805 +v152/speculation-rules-moderate-viewport-heuristics-controlsbuilt20/262006 +v152/sub-appsbuilt20/262006 +v152/suspicious-site-warningsbuilt20/262006 +v152/unframed-display-mode-for-isolated-web-appsbuilt20/262006 +v152/user-agent-image-replacement-apibuilt20/262006 +v152/webgpu-subgroup-size-controlbuilt19/251906 +v152/window-dragbuilt18/231805 +v152/window-shape-apibuilt20/262006 +v153/capability-elements-camera-and-microphonebuilt18/231805 +v153/declarative-shadow-dom-shadowrootadoptedstylesheetsbuilt19/241905 +v153/deprecate-and-remove-document-requeststorageaccessforbuilt16/211605 +v153/deprecate-and-remove-related-website-sets-rwsbuilt16/211605 +v153/expose-cssstylevalue-hierarchy-to-worker-contextsbuilt19/241905 +v153/immersive-audio-model-and-formats-iamf-decoding-supportbuilt19/241905 +v153/interoperable-dispatch-timing-for-transitionrun-and-media-query-eventsbuilt19/241905 +v153/iterator-joinstub17/221705 +v153/joint-iterationstub17/221705 +v153/renewed-html-insertion-streaming-methodsbuilt18/231805 +v153/responsively-sized-iframebuilt18/231805 +v153/scroll-axis-lockbuilt19/241905 +v153/single-axis-scroll-containersbuilt19/241905 +v153/speechrecognitionresult-timestamps-webspeech-apibuilt20/262006 +v153/webaudio-configurable-render-quantumbuilt18/231805 +v153/webgpu-buffer-view-featurebuilt19/241905 +v153/xml-parsing-in-rust-for-non-xslt-scenariosbuilt18/231805
generated by scripts/conformance.mjs
\ No newline at end of file diff --git a/reports/conformance/responsive.json b/reports/conformance/responsive.json index a51bbf10..20670911 100644 --- a/reports/conformance/responsive.json +++ b/reports/conformance/responsive.json @@ -1,20 +1,20 @@ [ { - "id": "v147/css-border-shape", - "route": "/v147/css-border-shape/", + "id": "v147/css-update-decoupling-of-width-and-style-properties", + "route": "/v147/css-update-decoupling-of-width-and-style-properties/", "desktop": { "noOverflow": true, "controlsInView": true, "consoleClean": true, "networkClean": true, - "screenshot": "reports/conformance/shots/v147__css-border-shape.desktop.png" + "screenshot": "reports/conformance/shots/v147__css-update-decoupling-of-width-and-style-properties.desktop.png" }, "mobile": { "noOverflow": true, "controlsInView": false, "consoleClean": true, "networkClean": true, - "screenshot": "reports/conformance/shots/v147__css-border-shape.mobile.png" + "screenshot": "reports/conformance/shots/v147__css-update-decoupling-of-width-and-style-properties.mobile.png" } } ] diff --git a/reports/conformance/results.json b/reports/conformance/results.json index c4dbf9d2..e403157a 100644 --- a/reports/conformance/results.json +++ b/reports/conformance/results.json @@ -1,12 +1,628 @@ { - "generatedAt": "2026-08-02T06:55:28.440Z", + "generatedAt": "2026-09-06T20:57:07.610Z", "agg": { - "total": 23, - "pass": 18, - "fail": 0, - "blocked": 5 + "total": 4788, + "pass": 3731, + "fail": 20, + "blocked": 1037 }, "suites": [ + { + "id": "v147/auto-sizes-for-lazy-loaded-images-with-srcset", + "route": "/v147/auto-sizes-for-lazy-loaded-images-with-srcset/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/autofill-event", + "route": "/v147/autofill-event/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v147/clip-text-overflow-on-user-interaction", + "route": "/v147/clip-text-overflow-on-user-interaction/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v147/corner-shaping-corner-shape-superellipse-squircle", + "route": "/v147/corner-shaping-corner-shape-superellipse-squircle/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, { "id": "v147/css-border-shape", "route": "/v147/css-border-shape/", @@ -160,6 +776,31210 @@ "reason": "manual-pending (needs agent screenshot/source review)" } ] + }, + { + "id": "v147/css-contrast-color", + "route": "/v147/css-contrast-color/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/css-update-decoupling-of-width-and-style-properties", + "route": "/v147/css-update-decoupling-of-width-and-style-properties/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/csspseudoelement-interface", + "route": "/v147/csspseudoelement-interface/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/device-bound-session-credentials", + "route": "/v147/device-bound-session-credentials/", + "status": "built", + "total": 69, + "pass": 63, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "protocol-reference-navigation", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "source-fidelity-status-boundary", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "current-header-name", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "semantic-scrollable-examples", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "route-registration-header-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "route-challenge-header-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "route-response-header-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "route-session-id-header-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "route-skipped-header-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "route-session-instructions-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "route-registration-exchange-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "route-refresh-exchange-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "route-lifecycle-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "route-federation-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "surface-secure-session-registration", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "surface-secure-session-challenge", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "surface-secure-session-response", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "surface-sec-secure-session-id", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "surface-secure-session-skipped", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "surface-json-session-instructions-root", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "surface-json-session-scope", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "surface-json-session-scope-rule", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "surface-json-session-credential", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "surface-dbsc-proof-jwt", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "source-w3c-editor-draft", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "source-chrome-developer-guide", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "source-chromestatus", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "source-chromium-fetcher", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "intent-to-prototype-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "intent-to-experiment-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "intent-to-ship-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mozilla-standards-position-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "webkit-standards-position-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "challenge-grammar-divergence-source-review", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "none-security-separate-path", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "overview-href-registration-header", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "overview-href-challenge-header", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "overview-href-response-header", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "overview-href-session-id-header", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "overview-href-skipped-header", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "overview-href-session-instructions", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "overview-href-registration-exchange", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "overview-href-refresh-exchange", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "overview-href-lifecycle", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "overview-href-federated-well-known", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "source-fidelity-status-boundary-structured-evidence", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v147/document-policy-in-dedicated-workers", + "route": "/v147/document-policy-in-dedicated-workers/", + "status": "built", + "total": 24, + "pass": 17, + "fail": 2, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v147/element-scoped-view-transitions", + "route": "/v147/element-scoped-view-transitions/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/gamepad-event-driven-input-api", + "route": "/v147/gamepad-event-driven-input-api/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v147/js-profiling-in-dedicated-workers", + "route": "/v147/js-profiling-in-dedicated-workers/", + "status": "built", + "total": 24, + "pass": 18, + "fail": 1, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v147/json-and-style-support-for-link-rel-modulepreload", + "route": "/v147/json-and-style-support-for-link-rel-modulepreload/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/lazy-loading-for-video-and-audio-elements", + "route": "/v147/lazy-loading-for-video-and-audio-elements/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v147/local-network-access-restrictions-for-websockets", + "route": "/v147/local-network-access-restrictions-for-websockets/", + "status": "built", + "total": 24, + "pass": 18, + "fail": 1, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v147/local-network-access-restrictions-for-webtransport", + "route": "/v147/local-network-access-restrictions-for-webtransport/", + "status": "built", + "total": 24, + "pass": 18, + "fail": 1, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v147/local-network-access-restrictions-on-service-worker-windowclient-navigate", + "route": "/v147/local-network-access-restrictions-on-service-worker-windowclient-navigate/", + "status": "built", + "total": 23, + "pass": 17, + "fail": 1, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/local-network-access-restrictions", + "route": "/v147/local-network-access-restrictions/", + "status": "built", + "total": 23, + "pass": 16, + "fail": 2, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/math-sumprecise", + "route": "/v147/math-sumprecise/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/prerendering-cross-origin-iframes", + "route": "/v147/prerendering-cross-origin-iframes/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/pseudo-target-on-events", + "route": "/v147/pseudo-target-on-events/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/pwa-origin-migration", + "route": "/v147/pwa-origin-migration/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v147/remove-inline-xslt-for-production-of-svg", + "route": "/v147/remove-inline-xslt-for-production-of-svg/", + "status": "built", + "total": 21, + "pass": 16, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/support-path-attribute-on-svg-textpath-element", + "route": "/v147/support-path-attribute-on-svg-textpath-element/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/timeline-named-range-scroll", + "route": "/v147/timeline-named-range-scroll/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/update-device-memory-api-limits", + "route": "/v147/update-device-memory-api-limits/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/web-neural-network-api-webnn", + "route": "/v147/web-neural-network-api-webnn/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v147/web-printing-api", + "route": "/v147/web-printing-api/", + "status": "built", + "total": 41, + "pass": 36, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "source-derived-member-route-index", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "current-surface-spelling-correction", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "web-printing-canonical-chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "iwa-prerequisite-link-retained", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "normative-window-entry-point-not-worker-surface", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "media-size-dimension-reference-route", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "compatibility-proposed-chromeos-cups-and-android-null", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "canonical-identity-exact", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "every-inventory-route-linked", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "typedef-exact-route-and-spelling", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "iwa-and-chromeos-caveat", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "explicit-mobile-status", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "exact-source-links", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "compatibility-status-separation", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "typedef-legacy-index-and-exact-route", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "compatibility-enclosing-section-evidence", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "iwa-prerequisite-prose-and-canonical-separation", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "web-printing-exact-canonical-identity-and-iwa-history", + "category": "identity", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v147/webnn", + "route": "/v147/webnn/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v147/webxr-layers", + "route": "/v147/webxr-layers/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/webxr-plane-detection", + "route": "/v147/webxr-plane-detection/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v147/x25519kyber768-key-encapsulation-for-tls", + "route": "/v147/x25519kyber768-key-encapsulation-for-tls/", + "status": "built", + "total": 23, + "pass": 16, + "fail": 2, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/agentic-federated-login", + "route": "/v148/agentic-federated-login/", + "status": "built", + "total": 24, + "pass": 18, + "fail": 1, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v148/at-rule-css-feature-detection", + "route": "/v148/at-rule-css-feature-detection/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/container-timing", + "route": "/v148/container-timing/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v148/content-type-in-resource-timing", + "route": "/v148/content-type-in-resource-timing/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/correctly-set-dropeffect-for-dragenter-dragleave-and-dragover-events", + "route": "/v148/correctly-set-dropeffect-for-dragenter-dragleave-and-dragover-events/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/css-name-only-container-queries", + "route": "/v148/css-name-only-container-queries/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/deprecate-and-remove-non-allowlisted-event-interfaces-from-document-createevent", + "route": "/v148/deprecate-and-remove-non-allowlisted-event-interfaces-from-document-createevent/", + "status": "built", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v148/extended-lifetime-shared-workers", + "route": "/v148/extended-lifetime-shared-workers/", + "status": "built", + "total": 24, + "pass": 18, + "fail": 1, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + } + ] + }, + { + "id": "v148/get-secure-payment-confirmation-capabilities", + "route": "/v148/get-secure-payment-confirmation-capabilities/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/html-in-canvas", + "route": "/v148/html-in-canvas/", + "status": "built", + "total": 24, + "pass": 18, + "fail": 1, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v148/idna-contextj-rules", + "route": "/v148/idna-contextj-rules/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/language-detector-api", + "route": "/v148/language-detector-api/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/lazy-loading-for-video-and-audio-elements", + "route": "/v148/lazy-loading-for-video-and-audio-elements/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/long-animation-frames-style-duration", + "route": "/v148/long-animation-frames-style-duration/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v148/manifest-localization", + "route": "/v148/manifest-localization/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/open-font-format-avar2-text-shaping-and-glyph-rendering", + "route": "/v148/open-font-format-avar2-text-shaping-and-glyph-rendering/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/out-of-order-streaming", + "route": "/v148/out-of-order-streaming/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/parse-processing-instructions-in-html", + "route": "/v148/parse-processing-instructions-in-html/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v148/pointer-event-suppression-on-drag-start", + "route": "/v148/pointer-event-suppression-on-drag-start/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/predictable-reported-storage-quota", + "route": "/v148/predictable-reported-storage-quota/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/prompt-api-sampling-parameters", + "route": "/v148/prompt-api-sampling-parameters/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v148/prompt-api", + "route": "/v148/prompt-api/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v148/remove-explicit-border-color-ua-stylesheet-rule-for-tables", + "route": "/v148/remove-explicit-border-color-ua-stylesheet-rule-for-tables/", + "status": "built", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v148/renewed-html-insertion-streaming-methods", + "route": "/v148/renewed-html-insertion-streaming-methods/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v148/sharedworker-on-android", + "route": "/v148/sharedworker-on-android/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/summarizer-api-performance-preference", + "route": "/v148/summarizer-api-performance-preference/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v148/text-decoration-skip-ink-all", + "route": "/v148/text-decoration-skip-ink-all/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/the-revert-rule-keyword", + "route": "/v148/the-revert-rule-keyword/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/translator-api", + "route": "/v148/translator-api/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/user-action-pseudo-class-top-layer-boundary", + "route": "/v148/user-action-pseudo-class-top-layer-boundary/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v148/web-app-html-install-element", + "route": "/v148/web-app-html-install-element/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v148/web-authentication-immediate-ui-mode", + "route": "/v148/web-authentication-immediate-ui-mode/", + "status": "built", + "total": 24, + "pass": 18, + "fail": 1, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + } + ] + }, + { + "id": "v148/web-serial-api-on-android", + "route": "/v148/web-serial-api-on-android/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/webgpu-compatibility-mode", + "route": "/v148/webgpu-compatibility-mode/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v148/webgpu-linear-indexing-feature", + "route": "/v148/webgpu-linear-indexing-feature/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v148/webrtc-datachannel-always-negotiate-data-channels", + "route": "/v148/webrtc-datachannel-always-negotiate-data-channels/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/android-ime-media-insertion", + "route": "/v149/android-ime-media-insertion/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/clip-text-overflow-on-user-interaction", + "route": "/v149/clip-text-overflow-on-user-interaction/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/comma-separated-container-queries", + "route": "/v149/comma-separated-container-queries/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v149/css-gap-decorations", + "route": "/v149/css-gap-decorations/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/css-scroll-state-container-queries", + "route": "/v149/css-scroll-state-container-queries/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/css-text-box", + "route": "/v149/css-text-box/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/disconnect-websockets-on-bfcache-entry", + "route": "/v149/disconnect-websockets-on-bfcache-entry/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/flex-wrap-balance", + "route": "/v149/flex-wrap-balance/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v149/gamepad-event-driven-input-api", + "route": "/v149/gamepad-event-driven-input-api/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v149/image-rendering-crisp-edges", + "route": "/v149/image-rendering-crisp-edges/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/indexeddb-sqlite-backend", + "route": "/v149/indexeddb-sqlite-backend/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v149/inline-script-cache", + "route": "/v149/inline-script-cache/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v149/intl-locale-prototype-variants", + "route": "/v149/intl-locale-prototype-variants/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/overscroll-gestures", + "route": "/v149/overscroll-gestures/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v149/payment-request-allow-payment-handlers-to-report-back-internal-errors", + "route": "/v149/payment-request-allow-payment-handlers-to-report-back-internal-errors/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/permissions-policy-focus-without-user-activation", + "route": "/v149/permissions-policy-focus-without-user-activation/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v149/platform-provided-behaviors-for-custom-elements", + "route": "/v149/platform-provided-behaviors-for-custom-elements/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v149/popover-hint-behavior-changes", + "route": "/v149/popover-hint-behavior-changes/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v149/remove-explicit-border-color-ua-stylesheet-rule-for-tables", + "route": "/v149/remove-explicit-border-color-ua-stylesheet-rule-for-tables/", + "status": "built", + "total": 21, + "pass": 16, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/request-isreloadnavigation-attribute", + "route": "/v149/request-isreloadnavigation-attribute/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/respect-autocorrect-off-for-windows-touch-keyboard-in-tsf", + "route": "/v149/respect-autocorrect-off-for-windows-touch-keyboard-in-tsf/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/selective-clipboard-format-read", + "route": "/v149/selective-clipboard-format-read/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/support-path-and-shape-in-shape-outside", + "route": "/v149/support-path-and-shape-in-shape-outside/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/support-rect-and-xywh-in-shape-outside", + "route": "/v149/support-rect-and-xywh-in-shape-outside/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/uint8array-base64-hex", + "route": "/v149/uint8array-base64-hex/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/user-action-pseudo-class-top-layer-boundary", + "route": "/v149/user-action-pseudo-class-top-layer-boundary/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/web-app-scope-system-accent-color", + "route": "/v149/web-app-scope-system-accent-color/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v149/webassembly-custom-descriptors", + "route": "/v149/webassembly-custom-descriptors/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v149/webmcp", + "route": "/v149/webmcp/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v150/accentcolor-and-accentcolortext-system-colors", + "route": "/v150/accentcolor-and-accentcolortext-system-colors/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/allow-optional-rounding-parameter-for-polygon", + "route": "/v150/allow-optional-rounding-parameter-for-polygon/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/animatable-zoom", + "route": "/v150/animatable-zoom/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/clone-into-all-descendant-selectedcontent-elements", + "route": "/v150/clone-into-all-descendant-selectedcontent-elements/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/comma-separated-container-queries", + "route": "/v150/comma-separated-container-queries/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/css-background-clip-border-area", + "route": "/v150/css-background-clip-border-area/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/css-image-color-function", + "route": "/v150/css-image-color-function/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/css-light-dark-with-image-values", + "route": "/v150/css-light-dark-with-image-values/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/css-text-fit-property", + "route": "/v150/css-text-fit-property/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/css-url-request-modifiers", + "route": "/v150/css-url-request-modifiers/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/css4-text-decoration-skip-spaces", + "route": "/v150/css4-text-decoration-skip-spaces/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v150/disable-svg-filters-on-plugins-and-iframes", + "route": "/v150/disable-svg-filters-on-plugins-and-iframes/", + "status": "built", + "total": 29, + "pass": 24, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "old-route-redirects", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "spec-pr-linked", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "wpt-tests-linked", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "vendor-positions-linked", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "reference-contract-anchors", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "showcase-embed-present", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "showcase-feature-linked", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "compat-tables-tabular", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v150/email-verification-protocol", + "route": "/v150/email-verification-protocol/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v150/expose-unprintable-areas-via-css", + "route": "/v150/expose-unprintable-areas-via-css/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/flex-wrap-balance", + "route": "/v150/flex-wrap-balance/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/focusgroup", + "route": "/v150/focusgroup/", + "status": "built", + "total": 24, + "pass": 18, + "fail": 1, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + } + ] + }, + { + "id": "v150/indexeddb-sqlite-backend", + "route": "/v150/indexeddb-sqlite-backend/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/media-element-pseudo-classes", + "route": "/v150/media-element-pseudo-classes/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/mediastreamtrackprocessor-frame-counters", + "route": "/v150/mediastreamtrackprocessor-frame-counters/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/named-feature-function-for-css-supports", + "route": "/v150/named-feature-function-for-css-supports/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/opaque-origin-for-data-urls", + "route": "/v150/opaque-origin-for-data-urls/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/out-of-order-streaming", + "route": "/v150/out-of-order-streaming/", + "status": "built", + "total": 24, + "pass": 18, + "fail": 1, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + } + ] + }, + { + "id": "v150/overscroll-behavior-chain", + "route": "/v150/overscroll-behavior-chain/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/parse-processing-instructions-in-html", + "route": "/v150/parse-processing-instructions-in-html/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/popover-hint-behavior-changes", + "route": "/v150/popover-hint-behavior-changes/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/programmatic-scroll-promises", + "route": "/v150/programmatic-scroll-promises/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/pwa-origin-migration", + "route": "/v150/pwa-origin-migration/", + "status": "built", + "total": 23, + "pass": 17, + "fail": 1, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/speculative-load-measurement", + "route": "/v150/speculative-load-measurement/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/support-path-length-as-a-css-property", + "route": "/v150/support-path-length-as-a-css-property/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/update-text-selection-on-mouseup-before-dispatching-click-event", + "route": "/v150/update-text-selection-on-mouseup-before-dispatching-click-event/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v150/web-speech-api-on-device-recognition-quality", + "route": "/v150/web-speech-api-on-device-recognition-quality/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/web-speech-api-unspoken-punctuation", + "route": "/v150/web-speech-api-unspoken-punctuation/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v150/webgpu-immediates", + "route": "/v150/webgpu-immediates/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v150/webrtc-diagnostic-logging-api", + "route": "/v150/webrtc-diagnostic-logging-api/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/algorithm-updates-in-webcrypto", + "route": "/v151/algorithm-updates-in-webcrypto/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/animation-accessor-on-animation-and-transition-events", + "route": "/v151/animation-accessor-on-animation-and-transition-events/", + "status": "built", + "total": 35, + "pass": 26, + "fail": 0, + "blocked": 9, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "member-routes-resolve", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "overview-links-member-routes", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "null-semantics-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "type-divergence-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "compat-source-separation", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "anchor-divergence-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "same-object-semantics-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "child-pages-geometry-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "child-pages-geometry-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "runtime-capability-honest", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/aria-actions", + "route": "/v151/aria-actions/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/capability-elements-usermedia-mvp", + "route": "/v151/capability-elements-usermedia-mvp/", + "status": "built", + "total": 38, + "pass": 32, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "old-route-redirects-v150", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "old-route-redirects-v149", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "member-routes-resolve", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "overview-links-member-routes", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "spec-section-linked", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "vendor-positions-linked", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromium-idl-linked", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "shipping-shape-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "superseded-draft-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "legacy-surface-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "compat-tables-tabular", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "showcase-feature-linked", + "category": "links", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v151/change-the-position-anchor-initial-value-to-normal", + "route": "/v151/change-the-position-anchor-initial-value-to-normal/", + "status": "stub", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "stub-evolution-accurate", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stub-migration-scope-accurate", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v151/chrome-151-removes-support-for-macos-12", + "route": "/v151/chrome-151-removes-support-for-macos-12/", + "status": "built", + "total": 21, + "pass": 16, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/cross-origin-redirect-timing-opt-in", + "route": "/v151/cross-origin-redirect-timing-opt-in/", + "status": "built", + "total": 38, + "pass": 30, + "fail": 0, + "blocked": 8, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "member-routes-resolve", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "member-pages-nine-dimensions", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "overview-links-member-routes", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "nav-tao-contract-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "compat-source-separation", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "child-pages-geometry-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "child-pages-geometry-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "no-referrer-gate-scoped-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "every-hop-rule-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "wildcard-semantics-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "internal-state-algorithms-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "bcd-source-accuracy", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "internal-routes-resolve", + "category": "structure", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v151/css-ruby-overhang-property", + "route": "/v151/css-ruby-overhang-property/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/declarative-performance-observer", + "route": "/v151/declarative-performance-observer/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v151/declarative-shadow-dom-shadowrootslotassignment-attribute", + "route": "/v151/declarative-shadow-dom-shadowrootslotassignment-attribute/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/deviceorientation-events-permission-request-api", + "route": "/v151/deviceorientation-events-permission-request-api/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/incognitostaticstoragequota", + "route": "/v151/incognitostaticstoragequota/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/languagedetector-support-for-traditional-vs-simplified-chinese", + "route": "/v151/languagedetector-support-for-traditional-vs-simplified-chinese/", + "status": "stub", + "total": 25, + "pass": 19, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "stub-classifier-boundary-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stub-wpt-proof-linked", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "runtime-verification-blocked", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/navigation-ignore-duplicate-navigations", + "route": "/v151/navigation-ignore-duplicate-navigations/", + "status": "built", + "total": 25, + "pass": 19, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/no-auto-rewind-for-animationtrigger-play-methods", + "route": "/v151/no-auto-rewind-for-animationtrigger-play-methods/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/performancesoftnavigation-and-interactioncontentfulpaint-performance-entry", + "route": "/v151/performancesoftnavigation-and-interactioncontentfulpaint-performance-entry/", + "status": "built", + "total": 24, + "pass": 18, + "fail": 1, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + } + ] + }, + { + "id": "v151/permission-policy-merger-direct-sockets-private-with-local-network-and-loopback-", + "route": "/v151/permission-policy-merger-direct-sockets-private-with-local-network-and-loopback-/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/permissions-policy-focus-without-user-activation", + "route": "/v151/permissions-policy-focus-without-user-activation/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/prefetch-activation-beacon", + "route": "/v151/prefetch-activation-beacon/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/protocol-filtering-in-digital-credential-api", + "route": "/v151/protocol-filtering-in-digital-credential-api/", + "status": "built", + "total": 33, + "pass": 25, + "fail": 0, + "blocked": 8, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "member-routes-resolve", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "overview-links-member-routes", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "uaallows-error-contract-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "enum-and-required-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "timeline-source-separation", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "child-pages-geometry-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "child-pages-geometry-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/remove-legacynointerfaceobject-from-fontfaceset-idl", + "route": "/v151/remove-legacynointerfaceobject-from-fontfaceset-idl/", + "status": "built", + "total": 21, + "pass": 16, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/resource-timing-add-spec-compliant-service-worker-router-timing-fields", + "route": "/v151/resource-timing-add-spec-compliant-service-worker-router-timing-fields/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/speculation-rules-form-submission-field", + "route": "/v151/speculation-rules-form-submission-field/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/textstream-for-response-request-blob", + "route": "/v151/textstream-for-response-request-blob/", + "status": "built", + "total": 37, + "pass": 27, + "fail": 0, + "blocked": 10, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "member-routes-resolve", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "member-pages-nine-dimensions", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "overview-links-member-routes", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "null-body-lifecycle-contract", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "blob-failure-reason-set-contract", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "compat-source-separation", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "child-pages-table-containment", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "child-pages-geometry-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "child-pages-geometry-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "null-body-contract-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "blob-failure-reasons-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "vendor-signals-sourced-from-chromestatus-api", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v151/web-speech-api-unspoken-punctuation", + "route": "/v151/web-speech-api-unspoken-punctuation/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/webrtc-data-channel-sctp-negotiation-acceleration-protocol", + "route": "/v151/webrtc-data-channel-sctp-negotiation-acceleration-protocol/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v151/wheel-event-momentum", + "route": "/v151/wheel-event-momentum/", + "status": "built", + "total": 40, + "pass": 31, + "fail": 0, + "blocked": 9, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "member-route-resolves", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "overview-links-member-route", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "momentum-contract-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "compat-source-separation", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "spec-anchor-divergence-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "child-page-geometry-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "child-page-geometry-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "cps-presence-not-runtime-proof", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "runtime-qualification-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "istrusted-separation-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "webidl-conversion-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "dead-anchors-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "privacy-pending-documented", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "bounded-absence-sources-linked", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "cps-boundary-note", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/audiopreferred-capture-in-getdisplaymedia-api", + "route": "/v152/audiopreferred-capture-in-getdisplaymedia-api/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/connection-allowlists", + "route": "/v152/connection-allowlists/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v152/cpu-performance-api", + "route": "/v152/cpu-performance-api/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/csspseudoelement-support-for-backdrop-scroll-marker-and-view-transitions", + "route": "/v152/csspseudoelement-support-for-backdrop-scroll-marker-and-view-transitions/", + "status": "built", + "total": 24, + "pass": 17, + "fail": 2, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "fail", + "reason": "assertion false" + } + ] + }, + { + "id": "v152/deprecate-and-remove-attribution-reporting-api", + "route": "/v152/deprecate-and-remove-attribution-reporting-api/", + "status": "built", + "total": 21, + "pass": 16, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/deprecate-and-remove-private-aggregation-api", + "route": "/v152/deprecate-and-remove-private-aggregation-api/", + "status": "built", + "total": 21, + "pass": 16, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/deprecate-and-remove-xslt", + "route": "/v152/deprecate-and-remove-xslt/", + "status": "built", + "total": 24, + "pass": 18, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/expose-the-autocorrect-global-html-attribute", + "route": "/v152/expose-the-autocorrect-global-html-attribute/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/gamepad-button-type-attribute", + "route": "/v152/gamepad-button-type-attribute/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v152/media-element-pseudo-classes", + "route": "/v152/media-element-pseudo-classes/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/mediacapabilities-decodinginfo-encryptionscheme", + "route": "/v152/mediacapabilities-decodinginfo-encryptionscheme/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/notification-attribution-for-pwas-on-macos", + "route": "/v152/notification-attribution-for-pwas-on-macos/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/opaquerange", + "route": "/v152/opaquerange/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v152/reference-target-for-cross-root-aria", + "route": "/v152/reference-target-for-cross-root-aria/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v152/relative-alpha-colors-css-color-5-alpha-function", + "route": "/v152/relative-alpha-colors-css-color-5-alpha-function/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/speculation-rules-moderate-viewport-heuristics-controls", + "route": "/v152/speculation-rules-moderate-viewport-heuristics-controls/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/sub-apps", + "route": "/v152/sub-apps/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/suspicious-site-warnings", + "route": "/v152/suspicious-site-warnings/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/unframed-display-mode-for-isolated-web-apps", + "route": "/v152/unframed-display-mode-for-isolated-web-apps/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/user-agent-image-replacement-api", + "route": "/v152/user-agent-image-replacement-api/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/webgpu-subgroup-size-control", + "route": "/v152/webgpu-subgroup-size-control/", + "status": "built", + "total": 25, + "pass": 19, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/window-drag", + "route": "/v152/window-drag/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v152/window-shape-api", + "route": "/v152/window-shape-api/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v153/capability-elements-camera-and-microphone", + "route": "/v153/capability-elements-camera-and-microphone/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v153/declarative-shadow-dom-shadowrootadoptedstylesheets", + "route": "/v153/declarative-shadow-dom-shadowrootadoptedstylesheets/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v153/deprecate-and-remove-document-requeststorageaccessfor", + "route": "/v153/deprecate-and-remove-document-requeststorageaccessfor/", + "status": "built", + "total": 21, + "pass": 16, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v153/deprecate-and-remove-related-website-sets-rws", + "route": "/v153/deprecate-and-remove-related-website-sets-rws/", + "status": "built", + "total": 21, + "pass": 16, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v153/expose-cssstylevalue-hierarchy-to-worker-contexts", + "route": "/v153/expose-cssstylevalue-hierarchy-to-worker-contexts/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v153/immersive-audio-model-and-formats-iamf-decoding-support", + "route": "/v153/immersive-audio-model-and-formats-iamf-decoding-support/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v153/interoperable-dispatch-timing-for-transitionrun-and-media-query-events", + "route": "/v153/interoperable-dispatch-timing-for-transitionrun-and-media-query-events/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v153/iterator-join", + "route": "/v153/iterator-join/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v153/joint-iteration", + "route": "/v153/joint-iteration/", + "status": "stub", + "total": 22, + "pass": 17, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "mdn-card-present", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v153/renewed-html-insertion-streaming-methods", + "route": "/v153/renewed-html-insertion-streaming-methods/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v153/responsively-sized-iframe", + "route": "/v153/responsively-sized-iframe/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v153/scroll-axis-lock", + "route": "/v153/scroll-axis-lock/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v153/single-axis-scroll-containers", + "route": "/v153/single-axis-scroll-containers/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v153/speechrecognitionresult-timestamps-webspeech-api", + "route": "/v153/speechrecognitionresult-timestamps-webspeech-api/", + "status": "built", + "total": 26, + "pass": 20, + "fail": 0, + "blocked": 6, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v153/webaudio-configurable-render-quantum", + "route": "/v153/webaudio-configurable-render-quantum/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] + }, + { + "id": "v153/webgpu-buffer-view-feature", + "route": "/v153/webgpu-buffer-view-feature/", + "status": "built", + "total": 24, + "pass": 19, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "warn-block-experimental", + "category": "content", + "deviceClass": "both", + "status": "pass" + } + ] + }, + { + "id": "v153/xml-parsing-in-rust-for-non-xslt-scenarios", + "route": "/v153/xml-parsing-in-rust-for-non-xslt-scenarios/", + "status": "built", + "total": 23, + "pass": 18, + "fail": 0, + "blocked": 5, + "results": [ + { + "id": "route-resolves", + "category": "route", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "title-nonempty", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "single-h1", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "main-landmark", + "category": "a11y", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "viewport-meta", + "category": "responsive", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "crumb-to-release", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "byline-footer", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-empty-anchors", + "category": "links", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-console-errors", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "pass" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "pass" + }, + { + "id": "legible-desktop", + "category": "responsive", + "deviceClass": "desktop", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "legible-mobile", + "category": "responsive", + "deviceClass": "mobile", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + }, + { + "id": "min-sections", + "category": "structure", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "browser-support-section", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "example-surface-present", + "category": "content", + "deviceClass": "both", + "status": "pass" + }, + { + "id": "code-example-integrity", + "category": "content", + "deviceClass": "n/a", + "status": "blocked", + "reason": "manual-pending (needs agent screenshot/source review)" + } + ] } ] } diff --git a/responsive-support.json b/responsive-support.json index 66dd4ea3..ff46cb54 100644 --- a/responsive-support.json +++ b/responsive-support.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "updatedAt": "2026-08-02T06:15:54.189Z", + "updatedAt": "2026-09-06T19:11:48.104Z", "routes": { "/v147/auto-sizes-for-lazy-loaded-images-with-srcset/": { "desktop": "needs-review", @@ -39,10 +39,10 @@ "checkedAt": "2026-07-19" }, "/v147/css-update-decoupling-of-width-and-style-properties/": { - "desktop": "needs-review", - "mobile": "needs-review", - "method": "auto-scan", - "checkedAt": "2026-07-19" + "desktop": "ok", + "mobile": "ok", + "method": "manual matrix review \u2014 integrator read headless-Chrome desktop+mobile screenshots (reports/conformance/shots/v147__css-update-decoupling-of-width-and-style-properties.*.png): banner/tables wrap cleanly, no horizontal overflow; writer verified Playwright-emulated 360x740 DPR3 + 1280x800 with scrollWidth==innerWidth at both. CPS iframe src curl-verified 200; in-sandbox visual render blocked by proxy TLS egress, disclosed in _questions.json", + "checkedAt": "2026-09-06" }, "/v147/csspseudoelement-interface/": { "desktop": "needs-review", @@ -161,8 +161,8 @@ "/v147/update-device-memory-api-limits/": { "desktop": "ok", "mobile": "ok", - "method": "agent-matrix", - "checkedAt": "2026-07-26" + "method": "manual matrix review \u2014 integrator read headless-Chrome desktop+mobile screenshots (reports/conformance/shots/v147__update-device-memory-api-limits.*.png): banner/tables wrap cleanly, no horizontal overflow; writer verified full-page desktop (1280x7200) and emulated 360x1600 (scrollWidth==innerWidth==360). CPS iframe src curl-verified 200; in-sandbox visual render blocked by proxy TLS egress, disclosed in _questions.json", + "checkedAt": "2026-09-06" }, "/v147/web-neural-network-api-webnn/": { "desktop": "needs-review", @@ -884,12 +884,6 @@ "method": "auto-scan", "checkedAt": "2026-07-19" }, - "/v151/xml-parsing-in-rust-for-non-xslt-scenarios/": { - "desktop": "needs-review", - "mobile": "needs-review", - "method": "auto-scan", - "checkedAt": "2026-07-19" - }, "/v152/connection-allowlists/": { "desktop": "needs-review", "mobile": "needs-review", @@ -1177,6 +1171,30 @@ "mobile": "ok", "method": "manual matrix review \u2014 headless-Chrome 360px-emulated mobile (DPR 3) + 1280px desktop screenshots read by writer (no overflow: scrollWidth==innerWidth==360 probed via CDP; tables scroll in .table-wrap; banner/warn-block render; console+network clean per auto-scan); auto-scan controlsInView=false = links inside intentionally-scrollable wide compat table, expected", "checkedAt": "2026-08-02" + }, + "/v153/iterator-join/": { + "desktop": "ok", + "mobile": "ok", + "method": "manual matrix review \u2014 integrator read headless-Chrome 1280px desktop + 375px-emulated mobile screenshots (reports/conformance/shots/v153__iterator-join.*.png): lede/table wrap cleanly, no horizontal overflow, links legible; writer additionally verified true-360px render via same-origin probe (scrollWidth 345\u2264360)", + "checkedAt": "2026-09-06" + }, + "/v153/xml-parsing-in-rust-for-non-xslt-scenarios/": { + "desktop": "ok", + "mobile": "ok", + "method": "manual matrix review \u2014 integrator read headless-Chrome 1280px desktop + emulated-mobile screenshots (reports/conformance/shots/v153__xml-parsing-in-rust-for-non-xslt-scenarios.*.png): banner/tables/code blocks contained, no page-level horizontal overflow; writer additionally verified genuine 360px render via same-origin iframe wrapper (headless clamps bare window width at 500px)", + "checkedAt": "2026-09-06" + }, + "/v152/user-agent-image-replacement-api/": { + "desktop": "ok", + "mobile": "ok", + "method": "manual matrix review \u2014 integrator read headless-Chrome desktop+mobile screenshots (reports/conformance/shots/v152__user-agent-image-replacement-api.*.png): banner, warn-block, tables contained, no horizontal overflow; writer verified full-page desktop (1280x7400), both child routes, and emulated-360 renders. CPS iframe src curl-verified 200; in-sandbox visual render blocked by proxy TLS egress, disclosed in _questions.json", + "checkedAt": "2026-09-06" + }, + "/v152/suspicious-site-warnings/": { + "desktop": "ok", + "mobile": "ok", + "method": "manual matrix review \u2014 integrator read headless-Chrome desktop+mobile screenshots (reports/conformance/shots/v152__suspicious-site-warnings.*.png): banner and text wrap cleanly, no horizontal overflow; writer fixed a real 360px overflow (unbreakable link path) during verification and re-measured 360/360 clean. CPS iframe src curl-verified 200; in-sandbox visual render blocked by proxy TLS egress, disclosed in _questions.json", + "checkedAt": "2026-09-06" } } } diff --git a/v147/css-update-decoupling-of-width-and-style-properties/_questions.json b/v147/css-update-decoupling-of-width-and-style-properties/_questions.json new file mode 100644 index 00000000..09ae3e79 --- /dev/null +++ b/v147/css-update-decoupling-of-width-and-style-properties/_questions.json @@ -0,0 +1,118 @@ +{ + "schemaVersion": 1, + "id": "v147/css-update-decoupling-of-width-and-style-properties", + "route": "/v147/css-update-decoupling-of-width-and-style-properties/", + "identity": "5133099851317248", + "milestone": 147, + "status": "built", + "revision": 1, + "reviewedAt": "2026-09-06", + "reviewer": "writer self-review (upgrade wave 2026-09-06) — independent integrator review pending", + "frontendTouched": true, + "rubric": [ + { + "dimension": "factual-source-fidelity", + "score": 5, + "severity": "info", + "evidence": "Upgrade fixed a real factual error in the previous revision: the old lede claimed the authored width 'is always reflected in getComputedStyle()' and its example showed getComputedStyle(box).borderWidth returning '4px' in Chrome 147+. The ChromeStatus record's compat assessment states verbatim that 'The resolved value for border-width via getComputedStyle() will remain 0px when border-style is set to none/hidden', and css-backgrounds-3 ED now carries 'The resolved value for the border-width properties is the used value' + 'the used width is 0' (both fetched live 2026-09-06). The page now documents the carve-out prominently (lede, what-changed table, computed-resolved-used section, examples). All propdef excerpts quoted verbatim from the merged EDs and cross-checked against the PR #11913 patch text; UseCounter figures (<0.0001% computed, ~2.37% resolved) quoted from the record; intent thread title verified from the live Groups page." + }, + { + "dimension": "milestone-mapping", + "score": 5, + "severity": "info", + "evidence": "Feature 5133099851317248 re-verified in the milestone=147 features_by_type listing under 'Enabled by default' (2026-09-06); H1 is the listing name verbatim ('CSS update: decoupling of Width and Style properties'); chromestatus.com/feature/5133099851317248 link preserved (appears in at-a-glance and see-also); route, slug, and conformance.json identity untouched." + }, + { + "dimension": "completeness", + "score": 5, + "severity": "info", + "evidence": "The change's whole surface is a value-resolution delta on three properties; the inventory covers each property's migration item plus the computed/resolved/used stage model. Every item documents all nine dimensions (one sourced not-applicable: the stage model has no author-visible error surface). Before/after propdef text, the resolved-value carve-out, transition/inheritance observability, invalid-value handling, per-engine status, and the css-gaps motivation are all present. reference-contract.json claims implementation-sufficient." + }, + { + "dimension": "explanation-quality", + "score": 5, + "severity": "info", + "evidence": "The computed-vs-resolved-vs-used section is the page's spine — it explains exactly which API observes which stage, why border-width is asymmetric (UseCounter data quoted), and what is newly observable (inheritance, interpolation, computedStyleMap). Migration table gives concrete before/after patterns with actions. The why-it-changed section ties the change to css-gaps list values per the recorded motivation." + }, + { + "dimension": "examples", + "score": 5, + "severity": "info", + "evidence": "Three semantic pre/code examples (computedStyleMap vs getComputedStyle read-back showing the border carve-out; transition-continuity pattern) plus a live iframe of the showcase computed-value-inspector concept (HTTP 200 HEAD-checked 2026-09-06, loading=lazy per performance guidance) and text links to the other four concept routes (all 200). Embeddability verified from response headers (no X-Frame-Options; CSP is report-only with no frame-ancestors) and the identical published embed pattern on v147/css-border-shape; the sandbox's headless browser cannot reach external hosts (proxy resets browser TLS; even fonts.googleapis.com from the shared stylesheet fails), so the frame renders blank locally — an environment limitation, not a page defect. Example outputs are engine-verified claims sourced to the record and the showcase's own probes, not invented." + }, + { + "dimension": "browser-compat-fallbacks", + "score": 5, + "severity": "info", + "evidence": "No BCD sub-feature key (checked border-width.json / outline-width.json / column-rule-width.json 2026-09-06) and no webstatus/Baseline entry (query returned 0 matches) — compat table labelled interim and compiled from: milestone listing (Chrome 147 desktop/Android/WebView, no iOS), vendor views with linked Bugzilla 1998285 (RESOLVED FIXED, 147 Branch) and WebKit 304940 (RESOLVED FIXED), and per-test stable WPT rows (9/9, 3/3, 256/256 across Chrome 152/Edge 152/Firefox 155/Safari 26.6, runs 2026-09-05 queried via the wpt.fyi search API). The 'support = which versions exhibit the new model' framing plus branch-on-*-style guidance covers older engines honestly." + }, + { + "dimension": "links-validity", + "score": 4, + "severity": "minor", + "evidence": "Every visible source label is a direct link with target=_blank rel=noopener: chromestatus (UI + API), milestone listing, PR #11913 files view, csswg issue #11494, four EDs with section anchors, CSSOM resolved-value anchor, intent thread (resolved msgid URL verified 200), crbug, both vendor bugs, six wpt.fyi result pages, BCD property JSON files, webstatus query, showcase index + five concept routes, MDN property pages. Minor: the csswg issue #11494 page itself returned 403 through the session proxy so its title could not be independently confirmed — the link is cited via the PR's change-log references and labelled accordingly in reference-contract.json." + }, + { + "dimension": "accessibility", + "score": 5, + "severity": "info", + "evidence": "Semantic single-h1 hierarchy with h2 sections; baseline banner role=note with aria-label; all data tables use th (scope=row on at-a-glance) with header rows; iframe carries a descriptive title attribute; code in semantic pre/code; no color-only meaning; CSS variables from the shared design system only (WCAG AA pairs: --text on --bg-paper/--bg-stone per public/styles.css). Verified in rendered screenshots at both viewports." + }, + { + "dimension": "responsive-ux", + "score": 5, + "severity": "info", + "evidence": "All wide tables wrapped in .table-wrap{overflow-x:auto} (fixed3 tables get min-width 34rem, the WPT results table min-width 32rem with a 16rem first column, all scrolling internally at 360px); overflow-wrap:anywhere on h1/lede/code cells; pre blocks scroll internally; iframe width:100%. Verified with Playwright device emulation (360x740 DPR3 touch + 1280x800): documentElement.scrollWidth == innerWidth at both viewports (360/360 and 1280/1280), and per-section screenshots (m-top, m-whatchanged, m-syntax, m-examples, m-wpt, m-compat, d-iframe in the writer scratchpad) read after capture — banner, propdef pre blocks, and tables legible with no clipped text." + }, + { + "dimension": "showcase-demo-relationship", + "score": 5, + "severity": "info", + "evidence": "Showcase feature route and all five concept routes HEAD-checked 200 (2026-09-06). The page embeds the computed-value-inspector concept (the one that directly demonstrates the documented value-stage contract) and links the other four with one-line descriptions matching the showcase's own copy. The showcase index text independently confirms the border used-value edge the page documents — no contradiction between the reference and the canonical demo." + } + ], + "guidanceConsulted": [ + { + "id": "css-layout", + "query": "responsive reference documentation data tables horizontal overflow mobile", + "recommendation": "Lean on the browser layout engine and intrinsic sizing; avoid hardcoded dimensions; keep overflow contained rather than letting the page scroll horizontally.", + "appliedOrException": "Applied: every table sits in .table-wrap{overflow-x:auto}; three-column tables use table-layout:fixed with a rem min-width so they scroll internally at 360px; overflow-wrap:anywhere on headings, ledes, and code cells; no fixed pixel widths. Verified via 360px screenshot." + }, + { + "id": "performance", + "query": "embedding iframe demo lazy loading performance", + "recommendation": "Use loading=\"lazy\" on iframes well outside the initial viewport so they are not fetched until near view; do not lazy-load above-the-fold content.", + "appliedOrException": "Applied: the showcase iframe sits in the examples section far below the fold and carries loading=\"lazy\" with an explicit height (560) to avoid layout shift when it loads." + }, + { + "id": "accessibility", + "query": "accessible code blocks pre semantic markup documentation", + "recommendation": "Use semantic HTML (headings hierarchy, table headers, meaningful titles/labels on embedded content) as the base layer of accessibility.", + "appliedOrException": "Applied: single h1, h2-per-section, th scope=row on definition tables, header rows on data tables, descriptive title on the iframe, role=note + aria-label on the baseline banner, examples in pre/code." + } + ], + "openQuestions": [ + "Which exact Firefox and Safari versions first shipped the border-width/outline-width computed-value decoupling? The ChromeStatus record only says they 'have already implemented' it; the linked vendor bugs cover the column-rule-width piece (Firefox 147 branch, WebKit fixed). A BCD sub-feature key would settle per-version history.", + "The csswg-drafts issue #11494 page was not fetchable through the session proxy (403), so its title/resolution text could not be quoted; the citation relies on PR #11913's change-log references to it.", + "ChromeStatus security_review_status and privacy_review_status still read 'Pending' (2026-09-06) — re-check whether they flip to completed.", + "Does Chrome plan to remove the Finch kill-switches (DecoupleComputedBorderWidthFromStyle, DecoupleResolvedColumnRuleWidthFromStyleEnabled) now that no runtime_enabled_features.json5 entry remains?" + ], + "followUpGoals": [ + { + "goal": "When BCD grows sub-feature keys (or notes) for the width/style decoupling under css/properties/{border-width,outline-width,column-rule-width}.json, replace the interim compat table with BCD-anchored per-version rows including first Firefox/Safari versions.", + "kind": "targeted-fix", + "priority": "medium" + }, + { + "goal": "Quote the CSSWG resolution text from csswg-drafts issue #11494 once the issue page is reachable (session proxy returned 403), strengthening the specifications table entry.", + "kind": "targeted-fix", + "priority": "low" + }, + { + "goal": "Re-check the ChromeStatus security/privacy review fields and update the security-privacy section when they move off 'Pending'.", + "kind": "targeted-fix", + "priority": "low" + } + ], + "summary": "Upgraded the published Chrome 147 width/style decoupling page to full MDN shape and fixed a factual error: the previous revision claimed getComputedStyle() reflects the authored border-width in Chrome 147+, but the spec and ChromeStatus record pin border-width's resolved value to the used value (still 0px under none/hidden); only outline-width and column-rule-width changed their resolved values. Added baseline banner, verbatim before/after propdefs, value-stage model, migration table, live showcase embed, WPT stable-run matrix, interim compat table, and security/privacy status." +} diff --git a/v147/css-update-decoupling-of-width-and-style-properties/index.html b/v147/css-update-decoupling-of-width-and-style-properties/index.html index 06220b30..69b92c62 100644 --- a/v147/css-update-decoupling-of-width-and-style-properties/index.html +++ b/v147/css-update-decoupling-of-width-and-style-properties/index.html @@ -6,12 +6,29 @@ CSS update: decoupling of Width and Style properties — Chrome 147 — gendn @@ -19,61 +36,276 @@

← Chrome 147 reference

-

v147 · css · interop fix

+

v147 · css · interop fix · shipped

CSS update: decoupling of Width and Style properties

-

Chrome 147 aligns with Firefox and Safari: the computed values of border-width, outline-width, and column-rule-width are now independent of their corresponding *-style properties. Previously Chrome forced the computed width to 0px when style was none or hidden; now the author-specified width is always reflected in getComputedStyle().

+ +
+

Behavior change — aligned across all current engines; no Baseline register entry

+
    +
  • Chrome · 147 (desktop, Android, WebView)
  • +
  • Edge · Chromium-based (not separately reported)
  • +
  • Firefox · shipped (column-rule list handling fixed in Firefox 147)
  • +
  • Safari · shipped (WebKit column-rule update landed)
  • +
+

This is a computed-value behavior change to existing properties, not a new feature: a webstatus.dev query returns zero matches and BCD has no sub-feature key for it under border-width, outline-width, or column-rule-width (all verified 2026-09-06). Cross-engine alignment is evidenced directly: the current stable runs of Chrome 152, Edge 152, Firefox 155, and Safari 26.6 all pass the relevant WPT computed-value tests (outline-width-computed 9/9, column-rule-width-computed 3/3, border-width-interpolation 256/256; wpt.fyi stable runs of 2026-09-05, queried via the wpt.fyi search API 2026-09-06).

+
+ +

Chrome 147 aligns with the updated CSS specifications and with Firefox and WebKit: the computed values of border-width, outline-width, and column-rule-width are now independent of their corresponding *-style properties. Previously Chrome forced the computed width to 0px when the style was none or hidden. For outline-width and column-rule-width the resolved value returned by getComputedStyle() now also reflects the authored value; for border-width the resolved value is defined as the used value and still reads 0px when border-style is none/hidden — a deliberate backward-compatibility carve-out.

-

what changed

+

at a glance

+
- + + + + + + + +
PropertyBefore Chrome 147Chrome 147+
What it isA computed-value behavior change (interop fix): border-*-width, outline-width, and column-rule-width no longer compute to 0px when the corresponding *-style is none/hidden; painting is unchanged (used width is still 0)
Affected propertiesborder-top-width, border-right-width, border-bottom-width, border-left-width (and the border-width shorthand) · outline-width · column-rule-width
Milestone listingChrome 147 — Enabled by default (milestone=147 listing, verified 2026-09-06); desktop, Android, and WebView all 147, no iOS milestone on the record
Spec changew3c/csswg-drafts PR #11913 (merged; edits css-backgrounds-3, css-ui-4, css-multicol-1/2, css-gaps-1) per the CSSWG resolution in issue #11494; live in the Editor's Drafts (verified 2026-09-06)
Intent to Shipblink-dev — Intent to Ship: Decouple border-width, outline-width and column-rule-width values from their corresponding style values
Chromium trackingcrbug 393631108; Finch kill-switch names on the record: DecoupleComputedBorderWidthFromStyle, DecoupleResolvedColumnRuleWidthFromStyleEnabled. No entry remains in runtime_enabled_features.json5 at trunk (grepped 2026-09-06) — no developer-facing flag
ChromeStatus5133099851317248 — CSS update: decoupling of Width and Style properties (Blink component Blink>CSS)
+
+ Source: ChromeStatus API record; csswg-drafts PR #11913; Intent to Ship +
+ +
+

what changed

+
+ + + + + + + + + + + + - - - + + + - - - + + + - - - + +
SurfaceBefore Chrome 147Chrome 147+
border-*-width — computed valueForced to 0px when border-style: none | hiddenAuthored value (absolute length, snapped as a border width), independent of border-style
border-*-width — resolved value (getComputedStyle())0px when style is none | hiddenUnchanged: still 0px — the spec defines the resolved value as the used value, and the used width is 0 when the style is none/hidden (deliberate backward compatibility)
border-widthComputed value forced to 0px when border-style: noneComputed value reflects the authored value regardless of border-styleoutline-width — computed and resolved valueForced to 0 when outline-style: noneBoth reflect the authored value
outline-widthComputed value forced to 0px when outline-style: noneComputed value and resolved value both reflect the authored valuecolumn-rule-width — computed and resolved valueForced to 0 when column-rule-style: none | hiddenBoth reflect the authored value; the none/hidden styles now force the used value to 0 instead
column-rule-widthComputed value forced to 0px when column-rule-style: noneComputed value and resolved value both reflect the authored valueRendering / layoutUnchanged either way — a border, outline, or column rule whose style is none/hidden still paints nothing and occupies no space (used width 0)
- Source: chromestatus — CSS update: decoupling of Width and Style properties, May 2026. +
+ Source: ChromeStatus record (summary + interop/compat assessment, verbatim on the resolved-value carve-out); CSS Backgrounds 3 §3.3; CSS UI 4 §outline-width; CSS Multicol 1 §column-rule-width
-

why it matters

-

Pages that read getComputedStyle().borderWidth or outlineWidth — for example, to compute layout or animate from a base state — now get the authored value reliably across Chrome, Firefox, and Safari. Code that worked on Firefox and was wrong on Chrome no longer needs a workaround.

+

why it changed

+

CSS historically special-cased these three width properties so their computed value became 0px whenever the corresponding *-style was none or hidden, even when the author specified a nonzero width. With CSS Gap Decorations extending column-rule-* to accept lists of values and repeaters, applying that special case became ambiguous (which list item's style zeroes which width?) and difficult to define consistently. Making *-width computed values independent of *-style gives these properties an intuitive model and preserves the author-specified value — the CSSWG resolved to move the zeroing from computed-value time to used-value time across the four affected specs (PR #11913).

+

It is also an interop fix: Firefox and WebKit already implemented the decoupled computed values, so code that read widths back on those engines behaved differently in Chrome. Chrome 147 closes the gap.

+ Source: ChromeStatus record — motivation (verbatim in substance); csswg-drafts PR #11913; csswg-drafts issue #11494 +
+ +
+

syntax: the affected propdefs, before and after

+

The value grammar of all three properties is unchanged (<line-width> = <length [0,∞]> | thin | medium | thick); what changed is each propdef's Computed value line plus new used/resolved-value prose. Verbatim from the merged Editor's Drafts (all fetched 2026-09-06):

+ +

CSS Backgrounds and Borders Level 3 §3.3:

+
Name: border-top-width, border-right-width, border-bottom-width, border-left-width
+Value: <line-width>
+Initial: medium
+Inherited: no
+Percentages: N/A
+Computed value: absolute length, snapped as a border width
+Animation type: by computed value
+

The removed text read: “…; zero if the border style is none or hidden” (PR #11913 diff). Two sentences were added in its place, verbatim:

+
The resolved value for the border-width properties is the used value.
+
+If the border-style corresponding to a given border-width is none or hidden,
+then the used width is 0.
+ +

CSS Basic User Interface Level 4 §3.2:

+
Name: outline-width
+Value: <line-width>
+Initial: medium
+Inherited: no
+Percentages: N/A
+Computed value: absolute length, snapped as a border width
+Animation type: by computed value
+

(Previously: “…; 0 if the outline style is none”.) outline-width has no border-style-like resolved-value carve-out, so its resolved value follows its computed value.

+ +

CSS Multi-column Layout Level 1 §4.4:

+
Name: column-rule-width
+Value: <line-width>
+Initial: medium
+Applies to: multicol containers
+Inherited: no
+Percentages: N/A
+Computed value: absolute length, snapped as a border width
+Animation type: by computed value type
+

The style-interaction sentence in §4.3 now reads, verbatim: “The none and hidden values force the used value of column-rule-width to be 0.” (previously “the computed value”). CSS Gap Decorations Level 1 received the matching edit for its list-valued column-rule-width/row-rule-width, dropping the force-to-0 computed-value special case entirely.

+ Source: css-backgrounds-3 ED; css-ui-4 ED; css-multicol-1 ED; PR #11913 diff (before/after text) +
+ +
+

computed vs. resolved vs. used — what you can now observe

+

The change is precisely scoped to value-resolution stages, so knowing which API surfaces which stage matters:

+
    +
  • Computed value — what inheritance, transitions/animations interpolation, and computedStyleMap() (CSS Typed OM) operate on. All three properties now keep the authored width here regardless of style. Practical wins: border-width: inherit picks up the real authored width from a styleless parent, and a transition on border-width that passes through a border-style: none state interpolates from the authored width instead of snapping from 0 (covered by the WPT border-width-interpolation suite).
  • +
  • Resolved value — what getComputedStyle() returns. For outline-width and column-rule-width the resolved value is the computed value, so it now reports the authored width. For border-*-width the spec pins the resolved value to the used value, so getComputedStyle().borderTopWidth still returns 0px when border-style is none/hidden — existing feature-detection and layout-measurement code keeps working.
  • +
  • Used value — what layout and painting consume. Unchanged for all three: styleless borders, outlines, and rules still render nothing and take no space.
  • +
+

Why the asymmetry? Compatibility data: Chrome's use counters showed resolved-value reads of border-width are common enough that changing them was risky, while resolved-value reads of outline-width/column-rule-width (≈2.37% of page loads) are dominated by automated getComputedStyle() sweeps that do not depend on the property's semantics; computed-value observation of all three was below 0.0001%. The carve-out keeps border-width's script-visible resolved value stable while fixing the model underneath.

+ Source: ChromeStatus record — interoperability and compatibility risks (UseCounter figures verbatim); css-backgrounds-3 resolved/used-value prose; CSSOM — resolved value +
+ +
+

migration: code that may see different values

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
PatternWhat changesWhat to do
Reading getComputedStyle(el).outlineWidth (or columnRuleWidth) and treating "0px" as “no outline/rule”Now returns the authored width (e.g. "6px") even when the style is noneTest the *-style property (outline-style, column-rule-style) for none/hidden instead of inferring visibility from the width
Reading getComputedStyle(el).borderTopWidth for layout mathNothing — still the used value, 0px when the style is none/hiddenNo action; this surface was deliberately left unchanged
Transitions/animations on *-width across style togglesInterpolation starts from the authored computed width, not 0 — no snap when flipping *-style from none to a visible styleRemove workarounds that pre-set a matching width before enabling the style
Children using border-width: inherit (or outline-width: inherit) from a styleless ancestorThe child inherits the authored width instead of 0pxAudit if you relied on inheriting the forced 0; set an explicit width where needed
Invalid width values (negative lengths, unknown keywords)Nothing — standard CSS parse-time error handling is untouched: the declaration is dropped and the cascade falls back (initial medium)No action; note medium computes to a nonzero length, so a dropped declaration can now be observable via computed-value surfaces where it previously read 0px under a styleless border
+
+ Source: ChromeStatus record — summary + compat assessment; css-backgrounds-3 (initial medium, used-value rule) +
-
/* Chrome 147+ — these read back 4px even though there's no visible border */
+  
+

examples

+

Reading the three properties back after Chrome 147 — note the border carve-out:

+
/* stylesheet */
 .box {
+  border-style: none;   border-width: 4px;
+  outline-style: none;  outline-width: 6px;
+}
+
const box = document.querySelector(".box");
+
+// Computed value (CSS Typed OM) — decoupled for ALL three properties:
+box.computedStyleMap().get("border-top-width").toString();
+// Chrome 147+: "4px"   (previously "0px")
+
+// Resolved value — border-width is pinned to the used value:
+getComputedStyle(box).borderTopWidth;
+// Chrome 147+: still "0px"  (unchanged, matches Firefox and Safari)
+
+// Resolved value — outline-width follows the computed value:
+getComputedStyle(box).outlineWidth;
+// Chrome 147+: "6px"   (previously "0px")
+ +

Transition continuity — a border that fades in without a width snap:

+
.card {
   border-style: none;
-  border-width: 4px;
+  border-width: 4px;              /* computed value survives style: none */
+  transition: border-width 0.3s;
 }
+.card:hover {
+  border-style: solid;            /* appears at 4px immediately — and a
+                                     separate width change now animates
+                                     from 4px, not from 0px */
+}
-const w = getComputedStyle(box).borderWidth; -// Chrome 147+: "4px" (previously: "0px") -// Firefox: "4px" -// Safari: "4px"
- Source: chromestatus and CSS Backgrounds Level 3, May 2026. +
+ +
Live example from the Chrome Platform Showcase (computed-value-inspector concept, HTTP 200 verified 2026-09-06): it reads computedStyleMap() and getComputedStyle() side by side, including the border used-value edge where painting still collapses to 0px. Four more concept demos — transition-continuity, width-style-invariant-test, animation-pipeline-demo, compatibility-lab — all HEAD-checked 200, 2026-09-06.Source: chrome-platform-showcase — feature index
+
-

quick reference

+

web platform tests

+

The Intent to Ship lists the covering tests; the key computed-value and interpolation suites, with current stable-channel results (wpt.fyi runs of 2026-09-05, queried via the search API 2026-09-06 — Chrome 152.0.7977.82, Edge 152.0.4191.62, Firefox 155.0.1, Safari 26.6):

+ +

Additional suites named on the ChromeStatus record: CSS2/ui/outline-width-096.xht, CSS2/borders/border-width-011.xht, border-width-012.xht, css-ui/outline-009.html, outline-width-interpolation.html, column-rule-computed.html.

+ Source: ChromeStatus record — WPT list; per-test rows from the wpt.fyi search API against the 2026-09-05 stable runs +
+ +
+

browser compatibility

+

Interim table. BCD tracks the three properties but has no sub-feature key for this computed-value change (checked border-width.json, outline-width.json, column-rule-width.json, 2026-09-06), and webstatus.dev has no matching feature entry. Rows are compiled from the linked primary sources.

+
+ + + + + + +
BrowserSupportEvidence
Chrome147 — enabled by default on desktop, Android, and WebView (no iOS milestone on the record)milestone=147 listing; API record browsers field; Intent to Ship
EdgeChromium-based; not separately reportedNo separate position on the API record; Edge 152 passes all three WPT suites above
FirefoxShipped — decoupled computed values already implemented before Chrome's change; the list-valued column-rule-width piece (css-gaps) landed in Firefox 147ChromeStatus vendor view “Shipped/Shipping” citing Bugzilla 1998285 (RESOLVED FIXED, target milestone “147 Branch”, fetched 2026-09-06); Firefox 155 passes all three WPT suites
SafariShipped — WebKit implemented the decoupled behavior; the column-rule-width resolution update is landedChromeStatus vendor view “Shipped/Shipping” citing WebKit bug 304940 (RESOLVED FIXED, fetched 2026-09-06); Safari 26.6 passes all three WPT suites
+
+

Because this is a behavior change to long-shipped properties, “support” here means which engine versions exhibit the decoupled values — older releases of every engine exhibit the legacy force-to-0px computed values. Code needing one behavior across versions should branch on the *-style value rather than sniffing which model the engine uses.

+ Source: ChromeStatus record (vendor views, milestones); Bugzilla 1998285; WebKit bug 304940; wpt.fyi stable runs linked in web platform tests +
+ +
+

security and privacy

+
    +
  • No new exposure surface. The change alters which stage of value resolution existing, same-origin-readable CSSOM APIs report; it introduces no storage, networking, cross-origin, or sensor surface. The newly visible data is the page's own authored stylesheet values.
  • +
  • Fingerprinting delta is a version signal only. getComputedStyle().outlineWidth under outline-style: none distinguishes pre-/post-change engine versions — comparable to any behavior fix and weaker than the UA string; the ChromeStatus record's UseCounter analysis explicitly attributes most resolved-value reads to existing scraping/fingerprinting sweeps that do not depend on these semantics.
  • +
  • Review status on the record: both the security and privacy launch-review fields read “Pending” on the ChromeStatus API record (fetched 2026-09-06); no security or privacy risks are asserted in the intent. gendn records that status honestly rather than claiming completed review.
  • +
+ Source: ChromeStatus API record — security_review_status / privacy_review_status, interop-compat UseCounter analysis +
+ +
+

specifications

+
- - - - - + + + + + + +
Affected propertiesborder-width · outline-width · column-rule-width
InteropNow matches Firefox and Safari behaviour
Shipped inChrome 147 (desktop + Android)
ChromeStatus5133099851317248 — CSS update: decoupling of Width and Style properties
SpecCSS Backgrounds and Borders Level 3
DocumentStatus
CSS Backgrounds and Borders Level 3 — §3.3 Line Thickness: the border-width propertiesEditor's Draft with the change merged; change-log entry “Changed the special case … from a computed-value effect to a resolved-value effect” (verified 2026-09-06)
CSS Basic User Interface Level 4 — §3.2 Outline Thickness: the outline-width propertyEditor's Draft with the change merged
CSS Multi-column Layout Level 1 — §4.4 The Width Of Column RulesEditor's Draft with the change merged (used-value wording in §4.3)
CSS Gap Decorations Level 1Editor's Draft; the list-valued column-rule-width/row-rule-width propdef that motivated the change
w3c/csswg-drafts PR #11913 — Adjust *-width zero value special cases per WG resolutionMerged; the single diff that edited all four specs, per the WG resolution in issue #11494
CSS Snapshot 2025The snapshot the ChromeStatus summary cites as the umbrella for the updated behavior
- Source: chromestatus, May 2026. +
+ Source: documents fetched and verified 2026-09-06 +
+ +
+

see also

+
diff --git a/v147/css-update-decoupling-of-width-and-style-properties/reference-contract.json b/v147/css-update-decoupling-of-width-and-style-properties/reference-contract.json new file mode 100644 index 00000000..9171301c --- /dev/null +++ b/v147/css-update-decoupling-of-width-and-style-properties/reference-contract.json @@ -0,0 +1,400 @@ +{ + "schemaVersion": 1, + "id": "v147/css-update-decoupling-of-width-and-style-properties", + "route": "/v147/css-update-decoupling-of-width-and-style-properties/", + "kind": "css", + "completeness": "implementation-sufficient", + "assessedAt": "2026-09-06", + "assessor": "writer self-assessment (upgrade wave 2026-09-06); independent integrator review pending", + "sources": [ + { + "id": "chromestatus-record", + "label": "ChromeStatus API record 5133099851317248 — summary, motivation, interop/compat UseCounter analysis (border resolved-value carve-out stated verbatim), WPT list, Finch names, milestones (desktop/android/webview 147, ios null), vendor views, security/privacy review status Pending", + "url": "https://chromestatus.com/api/v0/features/5133099851317248", + "kind": "browser-data" + }, + { + "id": "milestone-listing", + "label": "ChromeStatus milestone=147 listing — files the feature under 'Enabled by default'; authoritative for the H1 listing name and milestone gating (verified 2026-09-06)", + "url": "https://chromestatus.com/api/v0/features?milestone=147", + "kind": "browser-data" + }, + { + "id": "spec-pr", + "label": "w3c/csswg-drafts PR #11913 — Adjust *-width zero value special cases per WG resolution (merged; full diff across css-backgrounds-3, css-ui-4, css-multicol-1/2, css-gaps-1; before/after propdef text quoted verbatim from the patch)", + "url": "https://github.com/w3c/csswg-drafts/pull/11913/files", + "kind": "normative-spec" + }, + { + "id": "csswg-issue", + "label": "w3c/csswg-drafts issue #11494 — the WG resolution the PR cites in every change-log entry (issue page not fetchable through the session proxy, 403; cited via the PR's own references)", + "url": "https://github.com/w3c/csswg-drafts/issues/11494", + "kind": "other" + }, + { + "id": "css-backgrounds-3", + "label": "CSS Backgrounds and Borders Level 3 ED §3.3 — border-width propdef 'Computed value: absolute length, snapped as a border width' plus the resolved-value-is-used-value and used-width-0 sentences (merged text verified live 2026-09-06)", + "url": "https://drafts.csswg.org/css-backgrounds/#the-border-width", + "kind": "normative-spec" + }, + { + "id": "css-ui-4", + "label": "CSS Basic User Interface Level 4 ED — outline-width propdef with the zero special case removed (verified live 2026-09-06)", + "url": "https://drafts.csswg.org/css-ui-4/#outline-width", + "kind": "normative-spec" + }, + { + "id": "css-multicol-1", + "label": "CSS Multi-column Layout Level 1 ED §4.3–4.4 — column-rule-width propdef and 'none and hidden force the used value to 0' wording (verified live 2026-09-06)", + "url": "https://drafts.csswg.org/css-multicol/#crw", + "kind": "normative-spec" + }, + { + "id": "css-gaps-1", + "label": "CSS Gap Decorations Level 1 ED — list-valued column-rule-width/row-rule-width whose ambiguity motivated the decoupling; computed-value special case removed", + "url": "https://drafts.csswg.org/css-gaps-1/", + "kind": "normative-spec" + }, + { + "id": "cssom-resolved-value", + "label": "CSSOM — resolved value definition (the getComputedStyle contract the border-width carve-out hangs on)", + "url": "https://drafts.csswg.org/cssom-1/#resolved-value", + "kind": "normative-spec" + }, + { + "id": "intent", + "label": "blink-dev — Intent to Ship: Decouple border-width, outline-width and column-rule-width values from their corresponding style values (title verified from the thread page 2026-09-06)", + "url": "https://groups.google.com/a/chromium.org/g/blink-dev/c/_50sVoTmZ3I/m/p8L3sQ5NAAAJ", + "kind": "intent" + }, + { + "id": "crbug", + "label": "Chromium tracking bug 393631108", + "url": "https://issues.chromium.org/issues/393631108", + "kind": "implementation" + }, + { + "id": "runtime-flags", + "label": "Chromium runtime_enabled_features.json5 at trunk — no 'decouple' entry remains (grepped 2026-09-06); Finch kill-switch names live only on the ChromeStatus record", + "url": "https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/platform/runtime_enabled_features.json5", + "kind": "implementation" + }, + { + "id": "ff-bug", + "label": "Bugzilla 1998285 — [css-gaps-1] Computed value of column-rule-width with none|hidden style and lists of values (RESOLVED FIXED, target milestone '147 Branch'; fetched via Bugzilla REST 2026-09-06)", + "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1998285", + "kind": "browser-data" + }, + { + "id": "webkit-bug", + "label": "WebKit bug 304940 — Update column-rule-width to match updated computed style resolution rules (RESOLVED FIXED; fetched via Bugzilla REST 2026-09-06)", + "url": "https://bugs.webkit.org/show_bug.cgi?id=304940", + "kind": "browser-data" + }, + { + "id": "wpt-outline-computed", + "label": "wpt.fyi — css/css-ui/parsing/outline-width-computed.html: 9/9 in stable Chrome 152 / Edge 152 / Firefox 155 / Safari 26.6 (runs 2026-09-05, queried via search API 2026-09-06)", + "url": "https://wpt.fyi/results/css/css-ui/parsing/outline-width-computed.html", + "kind": "test" + }, + { + "id": "wpt-column-rule-computed", + "label": "wpt.fyi — css/css-multicol/parsing/column-rule-width-computed.html: 3/3 in all four stable engines (same runs)", + "url": "https://wpt.fyi/results/css/css-multicol/parsing/column-rule-width-computed.html", + "kind": "test" + }, + { + "id": "wpt-border-interpolation", + "label": "wpt.fyi — css/css-backgrounds/animations/border-width-interpolation.html: 256/256 in all four stable engines (same runs)", + "url": "https://wpt.fyi/results/css/css-backgrounds/animations/border-width-interpolation.html", + "kind": "test" + }, + { + "id": "bcd-border-width", + "label": "BCD css/properties/border-width.json — property key exists; NO sub-feature key for this behavior change (verified 2026-09-06); same for outline-width.json and column-rule-width.json", + "url": "https://github.com/mdn/browser-compat-data/blob/main/css/properties/border-width.json", + "kind": "browser-data" + }, + { + "id": "webstatus-query", + "label": "webstatus.dev query for 'decoupling' — zero matches (2026-09-06); no Baseline entry exists for the behavior change", + "url": "https://api.webstatus.dev/v1/features?q=decoupling", + "kind": "browser-data" + }, + { + "id": "cps-feature", + "label": "Chrome Platform Showcase feature index + five concept routes (computed-value-inspector, transition-continuity, width-style-invariant-test, animation-pipeline-demo, compatibility-lab) — all HEAD-checked 200 on 2026-09-06; the index text independently confirms the border used-value edge", + "url": "https://chrome-platform-showcase.paulkinlan-ea.deno.net/v147/css-update-decoupling-of-width-and-style-properties/", + "kind": "other" + } + ], + "inventory": [ + { + "id": "border-width-computed-decoupling", + "name": "border-*-width computed-value decoupling (computed value keeps authored width; resolved value pinned to used value, still 0px under none/hidden — migration behavior change)", + "kind": "migration", + "sourceRefs": [ + "css-backgrounds-3", + "spec-pr", + "chromestatus-record", + "wpt-border-interpolation" + ] + }, + { + "id": "outline-width-decoupling", + "name": "outline-width computed + resolved value decoupling from outline-style (migration behavior change)", + "kind": "migration", + "sourceRefs": ["css-ui-4", "spec-pr", "chromestatus-record", "wpt-outline-computed"] + }, + { + "id": "column-rule-width-decoupling", + "name": "column-rule-width computed + resolved value decoupling from column-rule-style; none/hidden now zero the used value (migration behavior change, motivated by css-gaps list values)", + "kind": "migration", + "sourceRefs": [ + "css-multicol-1", + "css-gaps-1", + "spec-pr", + "chromestatus-record", + "wpt-column-rule-computed", + "ff-bug", + "webkit-bug" + ] + }, + { + "id": "value-stage-model", + "name": "Computed vs. resolved vs. used value model for the three width properties (which API observes which stage after the change)", + "kind": "algorithm", + "sourceRefs": ["css-backgrounds-3", "cssom-resolved-value", "chromestatus-record"] + } + ], + "documentation": [ + { + "inventoryId": "border-width-computed-decoupling", + "href": "./", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#syntax", + "sourceRefs": ["css-backgrounds-3", "spec-pr"] + }, + "inputs": { + "status": "documented", + "selector": "#what-changed", + "sourceRefs": ["css-backgrounds-3", "chromestatus-record"] + }, + "outputs": { + "status": "documented", + "selector": "#computed-resolved-used", + "sourceRefs": ["css-backgrounds-3", "cssom-resolved-value", "chromestatus-record"] + }, + "errors": { + "status": "documented", + "selector": "#migration", + "sourceRefs": ["css-backgrounds-3"] + }, + "context": { + "status": "documented", + "selector": "#computed-resolved-used", + "sourceRefs": ["css-backgrounds-3", "cssom-resolved-value"] + }, + "lifecycle": { + "status": "documented", + "selector": "#computed-resolved-used", + "sourceRefs": ["css-backgrounds-3", "wpt-border-interpolation"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["chromestatus-record", "cps-feature"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": [ + "milestone-listing", + "chromestatus-record", + "bcd-border-width", + "webstatus-query", + "wpt-border-interpolation" + ] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["chromestatus-record"] + } + } + }, + { + "inventoryId": "outline-width-decoupling", + "href": "./", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#syntax", + "sourceRefs": ["css-ui-4", "spec-pr"] + }, + "inputs": { + "status": "documented", + "selector": "#what-changed", + "sourceRefs": ["css-ui-4", "chromestatus-record"] + }, + "outputs": { + "status": "documented", + "selector": "#computed-resolved-used", + "sourceRefs": ["css-ui-4", "chromestatus-record"] + }, + "errors": { + "status": "documented", + "selector": "#migration", + "sourceRefs": ["chromestatus-record", "css-ui-4"] + }, + "context": { + "status": "documented", + "selector": "#computed-resolved-used", + "sourceRefs": ["css-ui-4", "cssom-resolved-value"] + }, + "lifecycle": { + "status": "documented", + "selector": "#migration", + "sourceRefs": ["css-ui-4", "chromestatus-record"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["chromestatus-record", "cps-feature"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": [ + "milestone-listing", + "chromestatus-record", + "wpt-outline-computed", + "bcd-border-width" + ] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["chromestatus-record"] + } + } + }, + { + "inventoryId": "column-rule-width-decoupling", + "href": "./", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#syntax", + "sourceRefs": ["css-multicol-1", "css-gaps-1", "spec-pr"] + }, + "inputs": { + "status": "documented", + "selector": "#what-changed", + "sourceRefs": ["css-multicol-1", "chromestatus-record"] + }, + "outputs": { + "status": "documented", + "selector": "#computed-resolved-used", + "sourceRefs": ["css-multicol-1", "chromestatus-record"] + }, + "errors": { + "status": "documented", + "selector": "#migration", + "sourceRefs": ["chromestatus-record", "css-multicol-1"] + }, + "context": { + "status": "documented", + "selector": "#why", + "sourceRefs": ["css-gaps-1", "chromestatus-record"] + }, + "lifecycle": { + "status": "documented", + "selector": "#migration", + "sourceRefs": ["css-multicol-1", "chromestatus-record"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["cps-feature", "chromestatus-record"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": [ + "milestone-listing", + "chromestatus-record", + "wpt-column-rule-computed", + "ff-bug", + "webkit-bug" + ] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["chromestatus-record"] + } + } + }, + { + "inventoryId": "value-stage-model", + "href": "./", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#syntax", + "sourceRefs": ["css-backgrounds-3", "spec-pr"] + }, + "inputs": { + "status": "documented", + "selector": "#computed-resolved-used", + "sourceRefs": ["css-backgrounds-3", "cssom-resolved-value"] + }, + "outputs": { + "status": "documented", + "selector": "#computed-resolved-used", + "sourceRefs": ["css-backgrounds-3", "cssom-resolved-value", "chromestatus-record"] + }, + "errors": { + "status": "not-applicable", + "selector": "#computed-resolved-used", + "rationale": "The value-resolution pipeline (specified → computed → used → resolved) is internal CSS machinery with no author-visible error surface of its own: no exceptions, rejections, or malformed-input states exist for the stages themselves. Malformed width declarations are handled by standard CSS declaration dropping, documented on each property item's errors dimension (#migration invalid-value row).", + "sourceRefs": ["css-backgrounds-3", "cssom-resolved-value"] + }, + "context": { + "status": "documented", + "selector": "#computed-resolved-used", + "sourceRefs": ["cssom-resolved-value", "css-backgrounds-3"] + }, + "lifecycle": { + "status": "documented", + "selector": "#computed-resolved-used", + "sourceRefs": ["css-backgrounds-3", "wpt-border-interpolation"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["cps-feature", "chromestatus-record"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": [ + "wpt-outline-computed", + "wpt-column-rule-computed", + "wpt-border-interpolation", + "chromestatus-record" + ] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["chromestatus-record"] + } + } + } + ], + "notes": "Behavior-change (migration) reference: the developer-facing surface is the delta in value resolution for three long-shipped properties, not new syntax. The border-width resolved-value carve-out (getComputedStyle still 0px under none/hidden) is the single most important contract on the page; it is sourced verbatim from css-backgrounds-3 ED and the ChromeStatus compat assessment, and was the factual error fixed in this upgrade (the previous page revision claimed getComputedStyle().borderWidth reads the authored value in Chrome 147+, which is wrong)." +} diff --git a/v147/update-device-memory-api-limits/_questions.json b/v147/update-device-memory-api-limits/_questions.json new file mode 100644 index 00000000..8b4a77d5 --- /dev/null +++ b/v147/update-device-memory-api-limits/_questions.json @@ -0,0 +1,124 @@ +{ + "schemaVersion": 1, + "id": "v147/update-device-memory-api-limits", + "route": "/v147/update-device-memory-api-limits/", + "identity": "6330376953921536", + "milestone": 147, + "status": "built", + "revision": 1, + "reviewedAt": "2026-09-06", + "reviewer": "leaf-reference writer (upgrade wave 2026-09-06); independent integrator review pending", + "frontendTouched": true, + "summary": "In-place upgrade of a published early-wave page to the full MDN shape: added Baseline banner, verbatim IDL + header ABNF from the 2026-03-30 WD, the coarsening algorithm with Chrome's trunk clamp constants, context/errors/lifecycle sections, a live showcase iframe (memory-inspector, HEAD 200), a real per-version BCD compat table for all four affected keys, WPT results, security/privacy, and a specifications table. Preserved route, chromestatus identity 6330376953921536, and all previously correct prose; resolved the page's one unlinked citation label ('mail-archive msg15601').", + "rubric": [ + { + "dimension": "factual-source-fidelity", + "score": 5, + "severity": "info", + "evidence": "IDL and ABNF quoted verbatim from https://www.w3.org/TR/device-memory/ (fetched 2026-09-06); clamp constants quoted from Chromium approximated_device_memory.cc at trunk (kMinMemory 2/kMaxMemory 32, Android 1/8) which reproduce exactly the value sets in the chromestatus summary and BCD's Chrome 147 notes. PR #53 merge state (2026-01-19) verified. No invented members.", + "notes": "The intent thread originally targeted M146; the page states this and defers to the milestone=147 listing, which is authoritative for gendn." + }, + { + "dimension": "milestone-mapping", + "score": 5, + "severity": "info", + "evidence": "Feature 6330376953921536 appears in /api/v0/features?milestone=147 under 'Enabled by default' (fetched 2026-09-06); H1 is the listing name 'Update Device Memory API limits'; slug matches the server slugify of the listing name." + }, + { + "dimension": "completeness", + "score": 4, + "severity": "minor", + "evidence": "reference-contract.json inventories the migration, the coarsening algorithm, and the three affected surfaces, all nine dimensions mapped to rendered anchors; claims implementation-sufficient. Base-API depth (e.g. full Accept-CH/Client Hints lifecycle) is deliberately delegated to the linked MDN reference since MDN owns the base API.", + "notes": "The Sec-CH-Device-Memory vs legacy Device-Memory dual-send behavior is documented from BCD; the Chromium code path for header emission was not independently read." + }, + { + "dimension": "explanation-quality", + "score": 4, + "severity": "info", + "evidence": "Rounding-then-clamping is explained with the verbatim spec clamp steps and the trunk constants, deriving the bucket sets rather than asserting them; migration impact bullets spell out which comparisons become dead code (< 1 on Android, < 2 on desktop)." + }, + { + "dimension": "examples", + "score": 4, + "severity": "info", + "evidence": "Three
 examples (bucket read + migration-safe tiering, Accept-CH exchange) plus the memory-inspector showcase demo embedded as a lazy iframe (HEAD 200, HTML content-type, no X-Frame-Options/frame-ancestors restriction — all verified by curl 2026-09-06) and four more demos text-linked. The writer sandbox's headless Chrome cannot complete external TLS through its proxy (no certutil to install the proxy CA), so the iframe body shows as unloaded in the writer screenshots; in-frame rendering needs integrator confirmation in an unproxied browser.",
+      "notes": "Same-origin page assets all load; the conformance no-failed-requests assertion filters to same-origin, so the sandbox TLS limitation does not mask a page bug."
+    },
+    {
+      "dimension": "browser-compat-fallbacks",
+      "score": 5,
+      "severity": "info",
+      "evidence": "Per-version table built from fetched BCD JSON for api.Navigator.deviceMemory (63), api.WorkerNavigator.deviceMemory (65), http.headers.Sec-CH-Device-Memory (97, alt name since 61), http.headers.Device-Memory (61, deprecated), each row linking its BCD key; Baseline banner honestly reports 'Limited availability' per webstatus.dev; undefined-guard fallback shown in the example."
+    },
+    {
+      "dimension": "links-validity",
+      "score": 4,
+      "severity": "minor",
+      "evidence": "All source labels are direct links with target=_blank rel=noopener; the previously unlinked 'mail-archive msg15601' label was removed in favor of the Google Groups intent thread (fetched, subject verified). MDN header link updated to the canonical /Web/HTTP/Reference/Headers/ path (old path 301s).",
+      "notes": "The chromium-review CL 7410045 link returns 200 but its content (Gerrit SPA) was not deeply verified beyond the chromestatus WPT note that names it."
+    },
+    {
+      "dimension": "accessibility",
+      "score": 4,
+      "severity": "info",
+      "evidence": "Single h1, single main landmark, th scope=row/col on all tables, captions on data tables, baseline banner as role=note with aria-label, iframe has a descriptive title attribute, code blocks are semantic pre>code. Colors are exclusively CSS variables from /public/styles.css (WCAG AA pairs)."
+    },
+    {
+      "dimension": "responsive-ux",
+      "score": 4,
+      "severity": "info",
+      "evidence": "Verified at 1280x2400 and 360x1600 headless-Chrome screenshots (shot-update-device-memory-api-limits-{desktop,mobile}.png, read 2026-09-06): no horizontal page overflow (wide compat table scrolls inside .table-wrap overflow-x:auto), legible mono tables at 360px, iframe fluid at width:100%."
+    },
+    {
+      "dimension": "showcase-demo-relationship",
+      "score": 5,
+      "severity": "info",
+      "evidence": "Embeds the canonical showcase concept route /v147/update-device-memory-api-limits/memory-inspector/ (HEAD 200) and links the feature index plus all four other concept routes (all HEAD 200, 2026-09-06); demo identity matches this feature's chromestatus id on the showcase page."
+    }
+  ],
+  "guidanceConsulted": [
+    {
+      "id": "css-layout",
+      "query": "responsive reference documentation data tables mobile no horizontal overflow",
+      "recommendation": "Lean on intrinsic sizing and the browser layout engine; track overflow deliberately rather than letting wide content break the viewport.",
+      "appliedOrException": "Wide compat and value tables are wrapped in .table-wrap { overflow-x: auto } with a min-width on the multi-column tables so they scroll internally at 360px instead of overflowing the page; overflow-wrap: anywhere on code/cells.",
+      "evidence": "mobile screenshot shows no page-level horizontal scroll; conformance overflow assertions target scrollWidth <= innerWidth+1"
+    },
+    {
+      "id": "performance",
+      "query": "lazy loading iframe embed third-party demo performance",
+      "recommendation": "Use loading=\"lazy\" on below-the-fold iframes; never lazy-load above-the-fold content; give embeds explicit dimensions to avoid layout shift.",
+      "appliedOrException": "The showcase iframe sits far below the fold in the examples section and carries loading=\"lazy\", width=\"100%\" and height=\"520\" (fixed height, no CLS).",
+      "evidence": "iframe markup in #examples; desktop screenshot shows demo loaded without layout shift artifacts"
+    },
+    {
+      "id": "accessibility",
+      "query": "accessible code blocks pre semantic markup readability semantic tables",
+      "recommendation": "Use caption and th scope for data tables; keep one h1 and real heading hierarchy; prefer native naming (figcaption for figures).",
+      "appliedOrException": "Added  to the value and compat tables, scope=col on all thead cells and scope=row in the at-a-glance table; the embed uses figure/figcaption; heading structure is one h1 + h2 sections.",
+      "evidence": "DOM dump grep: 2 captions, th scope attributes present, exactly one h1"
+    }
+  ],
+  "openQuestions": [
+    "Does Chrome 147 clamp the legacy Device-Memory header identically to Sec-CH-Device-Memory in every context (BCD implies yes via shared notes; the header-emission code path was not independently read)?",
+    "Will the Android upper bound rise past 8 GiB as >8 GiB devices become common (ChromeStatus says 'not planned (yet)')?",
+    "Chrome's dev-run WPT results for device-memory.https.any.html reported no results in the 2026-09-06 master run set while Edge passed 1/1 — worth re-checking after CL 7410045 lands."
+  ],
+  "followUpGoals": [
+    {
+      "goal": "Re-verify the wpt.fyi device-memory results once CL 7410045 (test updates for the new limits) lands and refresh the WPT section numbers.",
+      "kind": "targeted-fix",
+      "priority": "medium"
+    },
+    {
+      "goal": "Watch BCD/web-features for a dedicated entry keyed on the 147 limits change (currently recorded only as notes on the four existing keys) and tighten the Baseline banner citation if one appears.",
+      "kind": "targeted-fix",
+      "priority": "low"
+    },
+    {
+      "goal": "If Chrome revises the Android upper bound (>8 GiB), update the value tables and the security/privacy rationale with the new evidence.",
+      "kind": "targeted-fix",
+      "priority": "low"
+    }
+  ]
+}
diff --git a/v147/update-device-memory-api-limits/index.html b/v147/update-device-memory-api-limits/index.html
index 9cfb59a1..8e24b7ea 100644
--- a/v147/update-device-memory-api-limits/index.html
+++ b/v147/update-device-memory-api-limits/index.html
@@ -6,12 +6,28 @@
   Update Device Memory API limits — Chrome 147 — gendn
   
   
 
 
@@ -19,64 +35,226 @@
   

← Chrome 147 reference

-

v147 · device memory api · privacy · shipped

+

v147 · device memory api · performance · privacy · shipped

Update Device Memory API limits

-

Chrome 147 updates the memory buckets reported by the Device Memory API (navigator.deviceMemory and the Device-Memory client hint), expanding the upper range on desktop and removing low-end Android buckets to better reflect today's device landscape. Ships in Chrome 147 on all platforms.

+ +
+

Limited availability

+
    +
  • Chrome · new limits from 147 (API since 63)
  • +
  • Edge · Chromium-based (API since 79)
  • +
  • Firefox · not supported
  • +
  • Safari · not supported
  • +
+

The underlying Device Memory API is not Baseline: the webstatus.dev entry for device-memory reports Baseline status “limited” with Chromium-only implementations (verified 2026-09-06), and BCD api.Navigator.deviceMemory records no Firefox or Safari support. The limits change documented here is Chromium-specific behavior shipping in Chrome 147 on desktop, Android, and WebView per the ChromeStatus record.

+
+ +

Chrome 147 updates the privacy-preserving memory buckets reported by the Device Memory API — navigator.deviceMemory and the Device-Memory / Sec-CH-Device-Memory client hint headers. The floor rises on every platform (dropping the outdated 0.25 and 0.5 GiB buckets) and the ceiling on desktop expands to 32 GiB, so the possible values become 1, 2, 4, 8 on Android and 2, 4, 8, 16, 32 everywhere else, replacing the old 0.25–8 range on all platforms.

-

at a glance

+

at a glance

+
- - - - + + + + + + +
Shipped inChrome 147 (desktop, Android, WebView)
StatusEnabled by default
Finch flagkUpdatedDeviceMemoryLimitsFor2026
ChromeStatus6330376953921536 — Update Device Memory API limits
What it isA behavior change (not new API surface) to the clamping bounds the Device Memory API applies before reporting a value — affecting navigator.deviceMemory on Window and workers, and the Device-Memory / Sec-CH-Device-Memory client hint headers
Shipped inChrome 147 — desktop, Android, and WebView (milestone=147 listing, category “Enabled by default”, verified 2026-09-06). The Intent to Ship originally targeted M146; the listing files it under 147, which is authoritative for gendn
Kill switchkUpdatedDeviceMemoryLimitsFor2026 — a reversion feature flag, not an opt-in: no Finch rollout was planned given the low risk (intent thread; ChromeStatus “WebView application risks”)
Spec changew3c/device-memory PR #53 — merged 2026-01-19; removes the fixed recommended bounds (8 GiB upper / 0.25 GiB lower) in favor of implementation-defined, adjustable, per-device-type bounds
Tracking bugissues.chromium.org/454354290
ChromeStatus6330376953921536 — Update Device Memory API limits (Blink component Blink>JavaScript>API, owner Barry Pollard)
+
+ Source: chromestatus.com/feature/6330376953921536; API record (fetched 2026-09-06) +
+ +
+

what changed

+

The Device Memory API reports RAM in privacy-preserving buckets rather than the exact amount: the physical memory is rounded to the nearest power of two, then clamped to an implementation-defined range. Chrome 147 changes only the clamping bounds:

+
+ + + + +
Possible reported values (GiB)
PlatformBefore Chrome 147Chrome 147+
Android0.25, 0.5, 1, 2, 4, 81, 2, 4, 8
Desktop (Windows, macOS, Linux, ChromeOS)0.25, 0.5, 1, 2, 4, 82, 4, 8, 16, 32
+
+
    +
  • Higher floor. The 0.25 and 0.5 GiB buckets disappear everywhere; desktop additionally loses the 1 GiB bucket. Internal Chrome stats and external RUM-provider review confirmed the low buckets were rarely reported, so they had become a fingerprinting vector rather than a capability signal.
  • +
  • Higher desktop ceiling. 16 and 32 GiB let sites segment high-end machines — the change developers requested in w3c/device-memory #50 (closed), motivated in part by memory-hungry workloads such as on-device AI.
  • +
  • Android ceiling unchanged at 8 GiB — deliberately not raised yet, because >8 GiB remains rare on mobile devices (per the ChromeStatus security-risks review).
  • +
+ Source: ChromeStatus summary + security risks; w3c/device-memory #50 (proposal); blink-dev Intent to Ship +
+ +
+

syntax

+

The change adds no new surface; these are the affected contracts. The Web IDL, verbatim from the Device Memory 1 specification (W3C Working Draft, 2026-03-30, § 4):

+
[
+  SecureContext,
+  Exposed=(Window,Worker)
+] interface mixin NavigatorDeviceMemory {
+  readonly attribute double deviceMemory;
+};
+
+Navigator includes NavigatorDeviceMemory;
+WorkerNavigator includes NavigatorDeviceMemory;
+

The deviceMemory getter returns the user agent’s coarsened device memory in GiB — from Chrome 147, always one of the values in the table above.

+

The client hint header, with its ABNF verbatim from the same spec (§ 3 — a Structured Fields decimal):

+
Sec-CH-Device-Memory = sf-decimal
+

Chrome sends Sec-CH-Device-Memory (since Chrome 97) and also the legacy pre-Sec-CH- spelling Device-Memory (since Chrome 61), which BCD marks deprecated and non-standard. Both carry the same clamped value, and both are opt-in via Accept-CH:

+
Accept-CH: Sec-CH-Device-Memory
+
+GET /example HTTP/1.1
+Sec-CH-Device-Memory: 8
+ Source: Device Memory 1, W3C WD 2026-03-30 (IDL § 4, header § 3, examples § 3.1, verbatim); BCD http.headers.Sec-CH-Device-Memory +
+ +
+

how the reported value is computed

+

The spec’s algorithm (§ 2.1) rounds physical memory to the nearest power of two, then clamps: “If deviceMemory < minimumLowerBound, then deviceMemory is minimumLowerBound. If deviceMemory > maximumUpperBound, then deviceMemory is maximumUpperBound.” After PR #53 both bounds are implementation-defined: “Implementations may adjust these bounds over time. These bounds may differ on different device types.” That spec change is what allowed Chrome to move its bounds without a spec violation (the TAG review was recorded “Not applicable” because the values were always documented as subject to change).

+

Chrome’s bounds now live in approximated_device_memory.cc (trunk, fetched 2026-09-06):

+
// Limit the values to reduce fingerprintability.
+// See: https://crbug.com/454354290 for updated limits.
+float kMinMemory = 2.0f;
+float kMaxMemory = 32.0f;
+
+#if BUILDFLAG(IS_ANDROID)
+  // Allow smaller lower limits on Android where lower RAM is still common.
+  kMinMemory = 1.0f;
+  kMaxMemory = 8.0f;
+#endif
+

Because rounding happens before clamping, every reported value is a power of two within the platform’s [min, max] range — which yields exactly the value sets in what changed.

+ Source: Device Memory 1 § 2.1 (algorithm, quoted verbatim); Chromium approximated_device_memory.cc (excerpt verbatim, comment abridged); w3c/device-memory PR #53 (merged 2026-01-19)
-

what changed

-

The Device Memory API reports RAM in privacy-preserving buckets rather than the exact amount. Chrome 147 updates these buckets to reflect current hardware in 2026:

+

context and exposure

+
    +
  • Secure contexts only. The IDL is [SecureContext]; the headers are likewise restricted to HTTPS (spec § 5). On insecure pages navigator.deviceMemory is undefined.
  • +
  • Window and workers. Exposed=(Window,Worker) — the same clamped value is readable from Navigator and WorkerNavigator.
  • +
  • Headers are opt-in. Sec-CH-Device-Memory / Device-Memory are only sent after the server opts in via Accept-CH (or the equivalent <meta http-equiv>), per the Client Hints model.
  • +
  • No feature-detecting the new limits. Nothing announces which bucket set a browser uses. Code can detect the API ('deviceMemory' in navigator) but not the bounds; infer them only from the reported value’s range, or from the UA version via the compat table below.
  • +
  • Migration impact. From Chrome 147, comparisons against retired buckets are dead code: on Android navigator.deviceMemory < 1 is never true, on desktop < 2 is never true — and a desktop machine with 512 MiB RAM now reports 2. Low-memory heuristics keyed on 0.25/0.5 must be re-thresholded. Conversely RUM segmentation can now distinguish 8 vs 16 vs 32 GiB desktops.
  • +
+ Source: Device Memory 1 §§ 3–5; ChromeStatus adoption expectation +
+ +
+

errors and edge behavior

+
- - - + + + + + + +
PlatformBefore Chrome 147Chrome 147+
Android0.25, 0.5, 1, 2, 4, 81, 2, 4, 8
Desktop (Windows, Mac, Linux)0.25, 0.5, 1, 2, 4, 82, 4, 8, 16, 32
SituationBehavior
Reading navigator.deviceMemoryNever throws; the getter returns a cached double. There is no promise, no permission prompt, and no rejection path.
Insecure (non-HTTPS) contextThe attribute is absent (undefined); the client hints are not sent. Guard with 'deviceMemory' in navigator.
Unsupported browser (Firefox, Safari)navigator.deviceMemory is undefined; the headers are never sent. Treat memory-based tiering as progressive enhancement.
Physical RAM outside the rangeSilently clamped — a 64 GiB workstation reports 32; a 512 MiB desktop VM reports 2. No error, no indication that clamping occurred.
Header received more than once“the last value overrides all previous occurrences” (spec § 3).
Chrome 147 rollout revertedThe kUpdatedDeviceMemoryLimitsFor2026 kill switch would restore the old 0.25–8 buckets; servers must tolerate both value sets during the transition.
-

The low-end buckets (0.25 GB and 0.5 GB) are removed on Android — virtually no current Android device ships with less than 1 GB RAM. The upper range on desktop expands to 16 GB and 32 GB to accommodate high-end workstations.

- Source: blink-dev Intent to Ship: Update Device Memory API limits (mail-archive msg15601), Chrome 147. +
+ Source: Device Memory 1 §§ 2–5; Chromium clamping implementation; ChromeStatus WebView risks (kill switch) +
+ +
+

lifecycle

+
    +
  1. Computed once, then constant. Chromium caches physical memory at initialization (ApproximatedDeviceMemory::Initialize()) and derives the clamped value from it; navigator.deviceMemory does not change while a page runs, and there is no change event.
  2. +
  3. Headers per request, after opt-in. Once a server’s Accept-CH: Sec-CH-Device-Memory preference is registered, subsequent eligible requests carry the hint with the same clamped value.
  4. +
  5. Rollout. The new bounds ship enabled by default in Chrome 147 on all platforms (desktop, Android, WebView) with no origin trial and no flag to flip; the kill switch exists only for emergency reversion. A user updating from 146 to 147 may observe the reported value change (e.g. a 0.5 GiB Android device jumping to 1) with no page-visible notification.
  6. +
+ Source: Chromium ApproximatedDeviceMemory (cached static); Device Memory 1 § 3; intent thread (rollout plan)
-

reading device memory

-
// navigator.deviceMemory returns one of the new bucket values
+    

examples

+

Reading the coarsened value, with the post-147 buckets and a migration-safe threshold:

+
// navigator.deviceMemory returns one of the new bucket values (GiB)
 console.log(navigator.deviceMemory);
 // Android: 1, 2, 4, or 8
 // Desktop: 2, 4, 8, 16, or 32
 
-// Code that relied on values below 1 will never match on Android in Chrome 147+
-if (navigator.deviceMemory < 1) {
-  // This branch is now unreachable on Android
+// Code that relied on values below 1 will never match in Chrome 147+
+if (navigator.deviceMemory < 1) {
+  // Unreachable on Android from 147 (and < 2 is unreachable on desktop)
   showLowMemoryMode();
-}
+} + +// Migration-safe tiering: threshold against the surviving buckets, +// and treat the API as absent in Firefox/Safari +const mem = navigator.deviceMemory ?? 4; // fallback guess +const tier = mem <= 2 ? "lite" : mem <= 8 ? "standard" : "premium";
+

Opting in to the client hint on the server, then adapting the response:

+
HTTP/1.1 200 OK
+Accept-CH: Sec-CH-Device-Memory
+
+// A later request from Chrome 147 on a 16 GiB laptop:
+GET /app HTTP/1.1
+Sec-CH-Device-Memory: 16
+Device-Memory: 16
+
+ +
Live example from the Chrome Platform Showcase (route HEAD-checked 200, 2026-09-06).Source: chrome-platform-showcase — Memory Inspector
+
+

Further interactive demos on the showcase feature page: Adaptive Loading Demo, Quality Tier Picker, Memory Budget Optimizer, and Compatibility Lab (all HEAD-checked 200, 2026-09-06).

+ Source: Device Memory 1 §§ 3.1, 4.1 (example patterns); buckets per ChromeStatus 6330376953921536 +
+ +
+

web platform tests

+

Upstream coverage lives in wpt/device-memory/: device-memory.https.any.html (window + worker variants, asserting the reported value is in the legal set) and idlharness.https.any.html. The ChromeStatus record notes these tests are being updated for the new limits in CL 7410045. On wpt.fyi (runs fetched 2026-09-06: Chrome dev 155 / Edge 154 / Firefox 157.0a1 / Safari 251 preview) the value tests pass in Edge 1/1 (the Chrome run in that set reported no results for them), idlharness passes 19/19 in Chrome and Edge, and Firefox and Safari lack the API — consistent with the compat table below.

+ Source: wpt.fyi results for device-memory/; ChromeStatus WPT notes; chromium-review CL 7410045 +
+ +
+

browser compatibility

+

Per-version data from MDN browser-compat-data (main branch, fetched 2026-09-06), which already records this limits change in its Chrome 147 notes. “No” means the surface has never been supported.

+
+ + + + + + + +
Affected surfaces (BCD keys linked per row)
SurfaceChromeChrome AndroidEdgeFirefoxSafari
api.Navigator.deviceMemory63; new values from 14763; new values from 14779 (mirrors Chrome)NoNo
api.WorkerNavigator.deviceMemory65; new values from 14765; new values from 14779 (mirrors Chrome)NoNo
http.headers.Sec-CH-Device-Memory97; new values from 14797; new values from 14779 (mirrors Chrome)NoNo
http.headers.Device-Memory (legacy, BCD: deprecated)61; new values from 14761; new values from 14779 (mirrors Chrome)NoNo
+
+

BCD’s per-key notes read, verbatim: “From Chrome 147, reported values are 2, 4, 8, 16, and 32.” (desktop keys) and “From Chrome 147, reported values are 1, 2, 4, and 8.” (chrome_android), with “Before Chrome 147, reported values were 0.25, 0.5, 1, 2, 4, and 8.” on both. Standards positions on the change: Mozilla raised concerns but did not object (mozilla.dev.platform thread — recorded “No signal” on ChromeStatus); WebKit remains negative on the underlying API (w3c/device-memory #24) without blocking the limits update; web-developer signal is positive (#50).

+ Source: BCD api/Navigator.json; api/WorkerNavigator.json; http/headers/Sec-CH-Device-Memory.json; http/headers/Device-Memory.json; ChromeStatus vendor views +
+ +
+

security and privacy

+
    +
  • This change is itself a privacy mitigation. As device capabilities improved, the 0.25 and 0.5 GiB buckets came to identify rare devices — internal stats and external RUM providers confirmed they were seldom reported, making them a fingerprinting signal. Raising the floor shrinks the identifying power of the low end.
  • +
  • The new high-end buckets add entropy at the top. The desktop set moves from six buckets capped at 8 GiB to five buckets reaching 32 GiB; the 16/32 GiB segmentation was judged acceptable after (internal-only) data review, and the spec’s general mitigation (single-significant-bit rounding + bounds, § 5) still applies. The spec directs implementations to keep reviewing bounds as hardware shifts — exactly what this change does.
  • +
  • Trust boundaries unchanged. Secure-context-only exposure and the opt-in client hints model are untouched; no new information category is revealed, only the granularity at the extremes changes.
  • +
+ Source: Device Memory 1 § 5 (Security Considerations); ChromeStatus security risks (data review, quoted findings); w3c/device-memory #50
-

browser support

+

specifications

+
- - - + + + +
Chrome / Edge147 (all platforms)
FirefoxNot supported
SafariNot supported
DocumentStatus
Device Memory 1 (§ 2.1 value computation; § 3 Sec-CH-Device-Memory; § 4 JavaScript API)W3C Working Draft, 2026-03-30 — includes the merged bounds change
w3c/device-memory PR #53 — emphasize that the bounds can be dynamically adjusted by implementationsMerged 2026-01-19 — the normative change enabling implementation-defined bounds (this is the ChromeStatus record’s spec link)
w3c/device-memory #50 — “Update recommended upper and lower bounds”Closed — the initial public proposal (filed by tomayac, 2025-10-23); discussed and agreed in the WebPerf WG on 2026-01-15 per ChromeStatus
- Source: ChromeStatus feature 6330376953921536 browser positions, April 2026. +
+ Source: documents fetched and states verified 2026-09-06
-

see also

+

see also

diff --git a/v147/update-device-memory-api-limits/reference-contract.json b/v147/update-device-memory-api-limits/reference-contract.json new file mode 100644 index 00000000..efda7247 --- /dev/null +++ b/v147/update-device-memory-api-limits/reference-contract.json @@ -0,0 +1,394 @@ +{ + "schemaVersion": 1, + "id": "v147/update-device-memory-api-limits", + "route": "/v147/update-device-memory-api-limits/", + "kind": "platform-capability", + "completeness": "implementation-sufficient", + "assessedAt": "2026-09-06", + "assessor": "writer self-assessment; independent integrator review pending", + "notes": "The feature is a behavior change (new clamping bounds) to the existing Device Memory API, not new API surface. The inventory therefore covers the migration itself, the value-computation algorithm whose bounds changed, and the three developer-facing surfaces the change affects (navigator.deviceMemory on Window+Worker, Sec-CH-Device-Memory, and the legacy Device-Memory header). The base API's full reference is owned by MDN (linked in see-also); this page documents the change and enough of each affected contract to act on it. All items are documented on the overview page: no member is a new contract needing a child route.", + "sources": [ + { + "id": "spec", + "label": "Device Memory 1 — W3C Working Draft 2026-03-30 (algorithm §2.1, Sec-CH-Device-Memory §3, IDL §4, security §5; includes the merged implementation-defined-bounds text)", + "url": "https://www.w3.org/TR/device-memory/", + "kind": "normative-spec" + }, + { + "id": "spec-pr", + "label": "w3c/device-memory PR #53 — implementation-defined, adjustable, per-device-type bounds (merged 2026-01-19; the ChromeStatus record's spec link)", + "url": "https://github.com/w3c/device-memory/pull/53", + "kind": "normative-spec" + }, + { + "id": "proposal", + "label": "w3c/device-memory #50 — Update recommended upper and lower bounds (initial public proposal, closed)", + "url": "https://github.com/w3c/device-memory/issues/50", + "kind": "explainer" + }, + { + "id": "chromestatus", + "label": "ChromeStatus feature 6330376953921536 — Update Device Memory API limits (identity link)", + "url": "https://chromestatus.com/feature/6330376953921536", + "kind": "browser-data" + }, + { + "id": "chromestatus-api", + "label": "ChromeStatus API record (summary values, kill switch, security-risks review, vendor views; fetched 2026-09-06)", + "url": "https://chromestatus.com/api/v0/features/6330376953921536", + "kind": "browser-data" + }, + { + "id": "milestone-listing", + "label": "ChromeStatus milestone=147 listing — files the feature under 'Enabled by default' (authoritative for milestone + listing name)", + "url": "https://chromestatus.com/api/v0/features?milestone=147", + "kind": "browser-data" + }, + { + "id": "intent", + "label": "blink-dev — Intent to Ship: Update Device Memory API limits (Barry Pollard; kill switch kUpdatedDeviceMemoryLimitsFor2026; no Finch rollout planned)", + "url": "https://groups.google.com/a/chromium.org/g/blink-dev/c/vXtAmrVZeDk", + "kind": "intent" + }, + { + "id": "chromium-impl", + "label": "Chromium approximated_device_memory.cc — trunk clamp constants kMinMemory/kMaxMemory (2/32 desktop, 1/8 Android; fetched 2026-09-06)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/common/device_memory/approximated_device_memory.cc", + "kind": "implementation" + }, + { + "id": "tracking-bug", + "label": "Chromium tracking bug 454354290 (cited by the implementation's clamp comment)", + "url": "https://issues.chromium.org/issues/454354290", + "kind": "implementation" + }, + { + "id": "bcd-navigator", + "label": "BCD api/Navigator.json — api.Navigator.deviceMemory (Chrome 63; Chrome 147 value notes; no Firefox/Safari)", + "url": "https://raw.githubusercontent.com/mdn/browser-compat-data/main/api/Navigator.json", + "kind": "browser-data" + }, + { + "id": "bcd-workernavigator", + "label": "BCD api/WorkerNavigator.json — api.WorkerNavigator.deviceMemory (Chrome 65; Chrome 147 value notes)", + "url": "https://raw.githubusercontent.com/mdn/browser-compat-data/main/api/WorkerNavigator.json", + "kind": "browser-data" + }, + { + "id": "bcd-sech", + "label": "BCD http/headers/Sec-CH-Device-Memory.json (Chrome 97; alternative_name Device-Memory since 61; Chrome 147 value notes)", + "url": "https://raw.githubusercontent.com/mdn/browser-compat-data/main/http/headers/Sec-CH-Device-Memory.json", + "kind": "browser-data" + }, + { + "id": "bcd-legacy", + "label": "BCD http/headers/Device-Memory.json — legacy header (Chrome 61; status deprecated, non-standard; Chrome 147 value notes)", + "url": "https://raw.githubusercontent.com/mdn/browser-compat-data/main/http/headers/Device-Memory.json", + "kind": "browser-data" + }, + { + "id": "webstatus", + "label": "webstatus.dev feature page for device-memory — Baseline status 'limited', Chromium-only (verified 2026-09-06)", + "url": "https://webstatus.dev/features/device-memory", + "kind": "browser-data" + }, + { + "id": "wpt-suite", + "label": "WPT device-memory/ test directory (value-in-legal-set tests + idlharness, window and worker variants)", + "url": "https://github.com/web-platform-tests/wpt/tree/master/device-memory", + "kind": "test" + }, + { + "id": "wpt-results", + "label": "wpt.fyi results for device-memory/ (runs fetched 2026-09-06: Chrome/Edge pass, Firefox/Safari lack the API)", + "url": "https://wpt.fyi/results/device-memory?label=master&label=stable", + "kind": "test" + }, + { + "id": "wpt-cl", + "label": "chromium-review CL 7410045 — WPT updates for the new limits (referenced by the ChromeStatus WPT notes)", + "url": "https://chromium-review.googlesource.com/c/chromium/src/+/7410045", + "kind": "implementation" + }, + { + "id": "mozilla-view", + "label": "mozilla.dev.platform thread — Mozilla raised concerns, did not block (ChromeStatus records 'No signal')", + "url": "https://groups.google.com/g/mozilla.dev.platform/c/cfydu35XdnY/m/3IqYn0oJAQAJ", + "kind": "other" + }, + { + "id": "webkit-view", + "label": "w3c/device-memory #24 — WebKit negative on the underlying API, not blocking the limits update", + "url": "https://github.com/w3c/device-memory/issues/24", + "kind": "other" + }, + { + "id": "rfc8941", + "label": "RFC 8941 — Structured Field Values (sf-decimal, referenced by the header ABNF)", + "url": "https://www.rfc-editor.org/rfc/rfc8941", + "kind": "normative-spec" + }, + { + "id": "cps", + "label": "Chrome Platform Showcase feature page (five live demos; memory-inspector embedded, HEAD-checked 200 on 2026-09-06)", + "url": "https://chrome-platform-showcase.paulkinlan-ea.deno.net/v147/update-device-memory-api-limits/", + "kind": "other" + } + ], + "inventory": [ + { + "id": "limits-migration", + "name": "Chrome 147 device-memory bucket change (Android 1/2/4/8; desktop 2/4/8/16/32; replaces 0.25–8)", + "kind": "migration", + "sourceRefs": ["chromestatus", "spec-pr", "intent", "chromium-impl", "bcd-navigator"] + }, + { + "id": "coarsening-algorithm", + "name": "Device memory value computation (power-of-two rounding + implementation-defined bound clamping)", + "kind": "algorithm", + "sourceRefs": ["spec", "chromium-impl"] + }, + { + "id": "navigator-devicememory", + "name": "navigator.deviceMemory / WorkerNavigator.deviceMemory (affected surface)", + "kind": "property", + "sourceRefs": ["spec", "bcd-navigator", "bcd-workernavigator"] + }, + { + "id": "sec-ch-device-memory-header", + "name": "Sec-CH-Device-Memory client hint request header (affected surface)", + "kind": "header", + "sourceRefs": ["spec", "bcd-sech"] + }, + { + "id": "device-memory-legacy-header", + "name": "Device-Memory legacy client hint request header (affected surface; BCD: deprecated)", + "kind": "header", + "sourceRefs": ["bcd-legacy", "bcd-sech"] + } + ], + "documentation": [ + { + "inventoryId": "limits-migration", + "href": "./", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#what-changed", + "sourceRefs": ["chromestatus", "chromium-impl"] + }, + "inputs": { + "status": "documented", + "selector": "#algorithm", + "sourceRefs": ["spec", "chromium-impl"] + }, + "outputs": { + "status": "documented", + "selector": "#what-changed", + "sourceRefs": ["chromestatus", "bcd-navigator"] + }, + "errors": { + "status": "documented", + "selector": "#errors", + "sourceRefs": ["chromestatus-api", "chromium-impl"] + }, + "context": { + "status": "documented", + "selector": "#context", + "sourceRefs": ["spec", "chromestatus-api"] + }, + "lifecycle": { + "status": "documented", + "selector": "#lifecycle", + "sourceRefs": ["intent", "chromium-impl", "milestone-listing"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["spec", "chromestatus", "cps"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": [ + "bcd-navigator", + "bcd-workernavigator", + "bcd-sech", + "bcd-legacy", + "chromestatus" + ] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["spec", "chromestatus-api", "proposal"] + } + } + }, + { + "inventoryId": "coarsening-algorithm", + "href": "./", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#algorithm", + "sourceRefs": ["spec", "chromium-impl"] + }, + "inputs": { + "status": "documented", + "selector": "#algorithm", + "sourceRefs": ["spec", "chromium-impl"] + }, + "outputs": { + "status": "documented", + "selector": "#what-changed", + "sourceRefs": ["spec", "chromium-impl"] + }, + "errors": { + "status": "documented", + "selector": "#errors", + "sourceRefs": ["spec", "chromium-impl"] + }, + "context": { "status": "documented", "selector": "#context", "sourceRefs": ["spec"] }, + "lifecycle": { + "status": "documented", + "selector": "#lifecycle", + "sourceRefs": ["chromium-impl", "spec"] + }, + "examples": { "status": "documented", "selector": "#examples", "sourceRefs": ["spec"] }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": ["bcd-navigator", "chromestatus"] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["spec"] + } + } + }, + { + "inventoryId": "navigator-devicememory", + "href": "./", + "dimensions": { + "syntax": { "status": "documented", "selector": "#syntax", "sourceRefs": ["spec"] }, + "inputs": { + "status": "not-applicable", + "selector": "#syntax", + "rationale": "The IDL (quoted verbatim in #syntax) defines deviceMemory as a readonly attribute: a parameterless getter with no accepted inputs, settings, or dictionary options. There is nothing a caller can pass.", + "sourceRefs": ["spec"] + }, + "outputs": { + "status": "documented", + "selector": "#syntax", + "sourceRefs": ["spec", "bcd-navigator"] + }, + "errors": { + "status": "documented", + "selector": "#errors", + "sourceRefs": ["spec", "bcd-navigator"] + }, + "context": { "status": "documented", "selector": "#context", "sourceRefs": ["spec"] }, + "lifecycle": { + "status": "documented", + "selector": "#lifecycle", + "sourceRefs": ["chromium-impl", "spec"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["spec", "cps"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": ["bcd-navigator", "bcd-workernavigator", "webstatus"] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["spec"] + } + } + }, + { + "inventoryId": "sec-ch-device-memory-header", + "href": "./", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#syntax", + "sourceRefs": ["spec", "rfc8941"] + }, + "inputs": { "status": "documented", "selector": "#context", "sourceRefs": ["spec"] }, + "outputs": { "status": "documented", "selector": "#syntax", "sourceRefs": ["spec"] }, + "errors": { "status": "documented", "selector": "#errors", "sourceRefs": ["spec"] }, + "context": { "status": "documented", "selector": "#context", "sourceRefs": ["spec"] }, + "lifecycle": { "status": "documented", "selector": "#lifecycle", "sourceRefs": ["spec"] }, + "examples": { "status": "documented", "selector": "#examples", "sourceRefs": ["spec"] }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": ["bcd-sech"] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["spec"] + } + } + }, + { + "inventoryId": "device-memory-legacy-header", + "href": "./", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#syntax", + "sourceRefs": ["bcd-legacy", "bcd-sech"] + }, + "inputs": { + "status": "documented", + "selector": "#context", + "sourceRefs": ["spec", "bcd-legacy"] + }, + "outputs": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["bcd-legacy"] + }, + "errors": { + "status": "documented", + "selector": "#errors", + "sourceRefs": ["spec", "bcd-legacy"] + }, + "context": { + "status": "documented", + "selector": "#context", + "sourceRefs": ["bcd-legacy", "spec"] + }, + "lifecycle": { + "status": "documented", + "selector": "#lifecycle", + "sourceRefs": ["spec", "bcd-legacy"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["bcd-legacy", "spec"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": ["bcd-legacy"] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["spec", "bcd-legacy"] + } + } + } + ] +} diff --git a/v151/xml-parsing-in-rust-for-non-xslt-scenarios/index.html b/v151/xml-parsing-in-rust-for-non-xslt-scenarios/index.html deleted file mode 100644 index 5db48d81..00000000 --- a/v151/xml-parsing-in-rust-for-non-xslt-scenarios/index.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - XML Parsing in Rust for non-XSLT scenarios — Chrome 151 — gendn - - - - -
-

← Chrome 151 reference

- -
-

v151 · shipped · dom · svg · security

-

XML Parsing in Rust for non-XSLT scenarios

-

Chrome 151 enables by default the memory-safe Rust-based XML parser that replaces the C-based libxml2 parser with a memory-safe Rust-based parser for all non-XSLT XML parsing in Blink — including DOMParser, XMLHttpRequest.responseXML, SVG documents, and XHTML.

-
- -
- Behaviour change - The Rust parser aims for full spec compliance, which may differ in edge cases from libxml2's behaviour. Code that relied on libxml2-specific quirks in malformed XML handling may see different output. Well-formed XML is unaffected. -
- -
-

at a glance

- - - - - - - - -
Shipped inChrome 151 (Enabled by default, all platforms — after a stepped rollout that began at 1% in Chrome 147)
StatusEnabled by default (stepped rollout)
Finch featureXMLRustForNonXslt
Affected APIsDOMParser, XMLHttpRequest.responseXML, SVG documents, XHTML
Not affectedXSLT processing (separate deprecation track, removal planned Chrome 158)
Blink componentBlink>DOM, Blink>SVG
ChromeStatus5309598397497344 — XML Parsing in Rust for non-XSLT scenarios
- Source: blink-dev Intent to Ship — XML Parsing in Rust for non-XSLT scenarios, February 2026. -
- -
-

why it exists

-

Blink has historically relied on libxml2, a C library, for XML parsing. libxml2 has accumulated a long history of memory-safety vulnerabilities — use-after-free bugs, buffer overflows, heap corruption — that are fundamentally difficult to prevent in C. In addition, libxml2 experienced periods of slow security-disclosure response.

-

Replacing the parser with a Rust implementation eliminates this entire class of memory-safety vulnerability by construction. XSLT scenarios are excluded from the initial rollout because libxml2 and libxslt are tightly entangled; the Rust parser cannot yet be applied there without also replacing the XSLT engine (which is on a separate deprecation track).

-

The rollout began at 1% of Chrome 147 stable users and reached enabled-by-default in Chrome 151 (chromestatus milestone listing). During the rollout, Chromium engineers monitored with Chromium engineers monitoring a real-world parsing performance histogram (Blink.XMLParsing.NonXsltXmlParsingTime.Combined) before expanding. A ~50% throughput regression was observed on a 3 MB heavy-XML microbenchmark, so the team is gathering production data to validate real-world impact is acceptable.

- Source: blink-dev Intent to Ship — XML Parsing in Rust for non-XSLT scenarios, February 2026. -
- -
-

what changes

-

This is a transparent implementation swap — the web-facing APIs are unchanged. All of the following continue to work identically for well-formed XML:

- - - - - - - - - -
API / scenarioUses Rust parser in Chrome 151+
DOMParser.parseFromString(str, 'text/xml')Yes
DOMParser.parseFromString(str, 'application/xhtml+xml')Yes
XMLHttpRequest.responseXMLYes
Top-level SVG navigation (.svg file in address bar)Yes
SVG external image (<img src="...svg">)Yes
XHTML documentsYes
XSLT processingNo — still uses libxml2/libxslt
- -

example: DOMParser (unchanged API)

-
// API shape is identical — only the underlying parser changes
-const parser = new DOMParser();
-const doc = parser.parseFromString(
-  '<root><item id="1">Hello</item></root>',
-  'text/xml'
-);
-console.log(doc.querySelector('item').textContent); // "Hello"
-
-// Malformed XML still produces a parsererror document
-const bad = parser.parseFromString('<unclosed', 'text/xml');
-console.log(bad.querySelector('parsererror')); // HTMLElement
- Source: blink-dev Intent to Ship — XML Parsing in Rust for non-XSLT scenarios, February 2026. -
- -
-

browser support

- - - - - -
BrowserXML parser
Chrome 151+ (all platforms)Rust parser for non-XSLT (enabled by default; stepped rollout began at 1% in M147)
FirefoxOwn XML parser (Expat-based)
SafariOwn XML parser (libxml2-based historically)
- Source: chromestatus.com feature page; blink-dev thread, February 2026. -
- -
-

see also

- -
- - -
- - diff --git a/v152/suspicious-site-warnings/_questions.json b/v152/suspicious-site-warnings/_questions.json new file mode 100644 index 00000000..3ddc113c --- /dev/null +++ b/v152/suspicious-site-warnings/_questions.json @@ -0,0 +1,117 @@ +{ + "schemaVersion": 1, + "id": "v152/suspicious-site-warnings", + "route": "/v152/suspicious-site-warnings/", + "identity": "5427561449521152", + "milestone": 152, + "status": "built", + "revision": 1, + "reviewedAt": "2026-09-06", + "reviewer": "writer self-review — independent integrator review pending", + "frontendTouched": true, + "rubric": [ + { + "dimension": "factual-source-fidelity", + "score": 5, + "severity": "info", + "evidence": "Every load-bearing claim traces to a source fetched live 2026-09-06: the trigger contract is quoted verbatim from url_lookup_service_base.cc (SOCIAL_ENGINEERING + WARN → SB_THREAT_TYPE_WARNABLE_SUSPICIOUS_SITE gated by kSuspiciousSiteWarnings); BASE_FEATURE(kSuspiciousSiteWarnings, FEATURE_DISABLED_BY_DEFAULT) from features.cc; controller behavior ('defer... until Safe Browsing checks complete and the navigation commits, while prioritizing full-page interstitials') and handler lists verbatim from both platform controller headers; allowlist TTL/storage/enums verbatim from suspicious_site_warning_allowlist.h; policy contracts verbatim from the two policy_definitions YAMLs; Enhanced-protection quotes verbatim from the Google help article. Server-side detection signals are non-public and the page says so explicitly instead of speculating. Stale metadata on the ChromeStatus record (status 'Proposed', desktop:null) is disclosed on-page, not resolved by fiat." + }, + { + "dimension": "milestone-mapping", + "score": 5, + "severity": "info", + "evidence": "Slug 'suspicious-site-warnings' derives from the exact listing name 'Suspicious site warnings' in the milestone=152 features_by_type listing (category 'Enabled by default', re-fetched 2026-09-06); folder v152/ per listing position; H1 is the listing name verbatim; the identity link chromestatus.com/feature/5427561449521152 appears in the at-a-glance table, specifications, and see-also." + }, + { + "dimension": "completeness", + "score": 4, + "severity": "minor", + "evidence": "The feature has no web-exposed API (verified: no Blink runtime feature, no web-features entry, no MDN doc — all linked on-page), so the declared inventory is the observable behavior contract: verdict mapping, warning UI + choices, 30-day bypass allowlist, and the two admin policies ChromeStatus names as controls. All five items map to documented fragments across all nine dimensions; reference-contract.json claims implementation-sufficient. Held-back point: three contracts are intrinsically non-public or undocumented (server-side WARN signals, allowlist sync behavior, a suspicious-verdict-specific owner review path) — the page declares each as undocumented rather than omitting them, which is the honest ceiling for this feature." + }, + { + "dimension": "explanation-quality", + "score": 5, + "severity": "info", + "evidence": "Model-first structure: why the middle confidence tier exists (interstitial vs silence), then the no-API boundary up front (the question a developer asks first), then the verdict contract, UI choices, allowlist, site-owner paths, and policy controls in MDN article order. The 'suppression and failure modes' table gives the negative space (when a warning does NOT appear), which for a warning surface is the contract developers and admins actually need. Disambiguation note for the older SafeBrowsingSuspiciousSiteTriggerQuota feature prevents a likely codebase-search confusion." + }, + { + "dimension": "examples", + "score": 5, + "severity": "info", + "evidence": "Live showcase iframe embedded from the concept route what-a-page-can-observe/ (GET 200 verified 2026-09-06 with real content fetched — title, h1, and lede read; the other two concept routes — signals-audit, if-you-are-flagged — are linked, both 200; no X-Frame-Options/frame-ancestors on the response, so framing is permitted). The embedded document could not be painted in this sandbox's headless Chromium (browser-side external TLS egress is blocked here — SSL handshake net_error -101 captured on a direct load), so the pixel check covers the embed's layout box only; this is an environment limitation, not a route failure. Three semantic pre/code examples: --enable-features=SuspiciousSiteWarnings + chrome://flags path for deterministic local testing, a managed-policies JSON forcing Enhanced protection with an intranet exemption, and the inverse Standard-protection pin. All snippets trace to about_flags.cc and the policy YAMLs." + }, + { + "dimension": "browser-compat-fallbacks", + "score": 4, + "severity": "minor", + "evidence": "No BCD key or web-features entry exists (browser UI, not a web API) — the compat table is labelled interim and compiled from the milestone listing, the API record's per-platform milestones (android:152, ios/webview null), both in-tree platform controllers, and flag-metadata.json; the desktop:null vs in-tree-desktop-implementation tension is disclosed with the rollout warn-block. Edge/Firefox/Safari rows are 'not applicable' with rationale rather than fake version numbers. Held-back point: per-channel rollout percentage is a Finch server-side fact that cannot be independently verified from public sources; the page says so." + }, + { + "dimension": "links-validity", + "score": 5, + "severity": "info", + "evidence": "Zero plain-text source labels: every citation links directly to the artifact — chromestatus feature page + API record + milestone listing, Google help article, five Chromium implementation files, two browsertests, two policy YAMLs, two rendered policy pages, flag files, runtime_enabled_features.json5, webstatus.dev query URL, MDN search API URL, histograms.xml, Transparency Report, Search Console docs, safebrowsing.google.com, and four showcase routes. External links carry target=_blank rel=noopener. Grep of the served DOM confirmed the mandatory chromestatus.com/feature/5427561449521152 link." + }, + { + "dimension": "accessibility", + "score": 4, + "severity": "info", + "evidence": "Semantic h1>h2>h3(>h4) hierarchy; baseline banner is role=note with aria-label; all tables use header rows/scoped row headers; iframe has a descriptive title attribute and loading=lazy; code tokens wrap (overflow-wrap:anywhere) rather than clip; color usage is the shared CSS-variable palette (WCAG AA pairs from public/styles.css, no raw hex). Held-back point: the embedded third-party demo's internal accessibility is owned by the showcase, not re-audited here." + }, + { + "dimension": "responsive-ux", + "score": 5, + "severity": "info", + "evidence": "All eight tables wrapped in .table-wrap{overflow-x:auto}; wide 3-column tables use .fixed3 min-width so they scroll inside their container instead of stretching the page; pre blocks scroll internally; h1/lede/code and long path-style link text overflow-wrap:anywhere (the link-text rule was added after a CDP measurement caught a 379px unbreakable features.cc link path forcing the 360px layout viewport to 424px — re-measured 360/360 after the fix, matching the exemplar's profile). Verified with CDP-emulated screenshots at 360x740 dpr3 (shot-suspicious-site-warnings-mobile.png, shot-ssw-mobile-examples.png) and 1280 desktop (shot-suspicious-site-warnings-desktop.png, shot-ssw-desktop-examples.png), all read after capture: no horizontal page overflow at 360px, banner/warn-block/tables legible, code blocks scroll internally." + }, + { + "dimension": "showcase-demo-relationship", + "score": 5, + "severity": "info", + "evidence": "Showcase feature route and all three concept routes verified 200 on 2026-09-06; the page embeds the concept route what-a-page-can-observe/ (the one that directly supports the reference's central no-API claim) per the prefer-a-concept-route rule, links the other two, and the see-also carries the canonical feature URL. The embed's identity matches this feature id (both cite chromestatus 5427561449521152)." + } + ], + "guidanceConsulted": [ + { + "id": "css-layout", + "query": "responsive reference documentation tables no horizontal overflow mobile", + "recommendation": "Lean on the browser's layout engine: intrinsic sizing and logical properties before hardcoded dimensions; keep overflow contained rather than letting wide content stretch the page.", + "appliedOrException": "Applied: every table sits in .table-wrap{overflow-x:auto}; wide comparison tables get a min-width + table-layout:fixed so they scroll inside the wrapper; overflow-wrap:anywhere on h1/lede and code cells for long tokens (feature names, policy names, URLs); pre{overflow-x:auto} so verbatim C++/JSON scrolls internally. Confirmed by reading the 360px screenshot." + }, + { + "id": "performance", + "query": "lazy loading iframe embed performance", + "recommendation": "Use loading=\"lazy\" on iframes well outside the initial viewport to avoid fetching competing resources; never lazy-load above-the-fold content.", + "appliedOrException": "Applied: the showcase demo iframe is far below the fold (examples section, after nine content sections) and carries loading=\"lazy\" with an explicit height (520) to avoid layout shift when it loads." + } + ], + "openQuestions": [ + "Do bypass-allowlist entries (HostContentSettingsMap-backed) sync across a signed-in user's devices? The header documents storage and TTL but not sync; recorded as undocumented on-page.", + "Does Search Console's security-issues review flow surface or clear the sub-threshold 'suspicious' verdict, or only confirmed listings? No public source documents a dedicated review path for the WARN verdict.", + "Will the desktop milestone field on the ChromeStatus record be corrected from null (the tree contains a desktop bubble implementation and the flag is registered for kOsDesktop)?", + "Does the kSuspiciousSiteWarnings base::Feature flip to enabled-by-default in code before the chrome://flags entry expires at milestone 155, and does the Finch rollout reach 100% on both platforms?", + "Is the warning suppressed in Incognito (where some Enhanced-protection sub-features are disabled per the help article)? None of the fetched sources states it either way." + ], + "followUpGoals": [ + { + "goal": "Re-check kSuspiciousSiteWarnings in components/safe_browsing/core/common/features.cc after milestone 155 (the flag-metadata expiry); when the compiled default flips or the flag entry is removed, simplify the rollout warn-block and compat rows accordingly.", + "kind": "targeted-fix", + "priority": "medium" + }, + { + "goal": "When the Chrome 152 enterprise release notes for this feature are published on the Chrome Enterprise release-notes page, add the direct release-note link to the specifications table (the record is marked releasenotes-publish-ready but the public notes page had no Chrome 152 entry at fetch time).", + "kind": "targeted-fix", + "priority": "medium" + }, + { + "goal": "If Google publishes documentation of a review/appeal path specific to suspicious-site (WARN) verdicts, replace the recorded gap in the site-owners section with the sourced flow.", + "kind": "targeted-fix", + "priority": "high" + }, + { + "goal": "If a settings surface for reviewing/revoking 'Marked as safe' sites ships (the allowlist API supports revocation), document the user-facing management path with screenshots-in-words and cite the settings page.", + "kind": "targeted-fix", + "priority": "low" + } + ] +} diff --git a/v152/suspicious-site-warnings/conformance.json b/v152/suspicious-site-warnings/conformance.json new file mode 100644 index 00000000..c0a4081d --- /dev/null +++ b/v152/suspicious-site-warnings/conformance.json @@ -0,0 +1,222 @@ +{ + "schemaVersion": 1, + "id": "v152/suspicious-site-warnings", + "route": "/v152/suspicious-site-warnings/", + "identity": "5427561449521152", + "milestone": 152, + "status": "built", + "demo": "https://chrome-platform-showcase.paulkinlan-ea.deno.net/v152/suspicious-site-warnings/what-a-page-can-observe/", + "cpsFeature": { + "host": "chrome-platform-showcase.paulkinlan-ea.deno.net", + "route": "/v152/suspicious-site-warnings/what-a-page-can-observe/", + "conformanceRoute": "/v152/suspicious-site-warnings/what-a-page-can-observe/conformance", + "note": "The chrome-platform-showcase suite at conformanceRoute governs only the assertions it explicitly lists; it does not prove unasserted native, hardware, permission, backend, or other behavior. gendn references that listed contract without forking it." + }, + "immutable": true, + "suiteHash": "9c0cf6459383c2b3e289ccc0da1f5bbc2b058387e3b20f268af1745738816c05", + "generatedAt": "2026-07-19T00:00:00Z", + "author": "gen-conformance/v1 (derived from page metadata)", + "assertions": [ + { + "id": "route-resolves", + "category": "route", + "describe": "The stable route /v152/suspicious-site-warnings/ responds 200 (durable-demo contract).", + "kind": "http-status", + "test": "/v152/suspicious-site-warnings/", + "expect": 200, + "deviceClass": "both" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "describe": "Page carries its canonical chromestatus.com/feature/5427561449521152 link — the immutable feature identity (CLAUDE.md invariant #3) and the milestone-152 mapping's self-heal.", + "kind": "dom-query", + "selector": "a[href*=\"chromestatus.com/feature/5427561449521152\"]", + "deviceClass": "both" + }, + { + "id": "title-nonempty", + "category": "structure", + "describe": "Document has a non-empty for the reference page.", + "kind": "js-eval", + "test": "document.title.trim().length > 0", + "deviceClass": "both" + }, + { + "id": "single-h1", + "category": "structure", + "describe": "Exactly one <h1> — the API name (listing name), MDN-shaped article heading.", + "kind": "js-eval", + "test": "document.querySelectorAll('h1').length === 1", + "deviceClass": "both" + }, + { + "id": "main-landmark", + "category": "a11y", + "describe": "A single <main> landmark wraps the article content.", + "kind": "js-eval", + "test": "document.querySelectorAll('main').length === 1", + "deviceClass": "both" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "describe": "Shared editorial design system /public/styles.css is linked.", + "kind": "dom-query", + "selector": "link[rel=\"stylesheet\"][href=\"/public/styles.css\"]", + "deviceClass": "both" + }, + { + "id": "viewport-meta", + "category": "responsive", + "describe": "Responsive viewport meta present (width=device-width) for mobile+desktop parity.", + "kind": "dom-query", + "selector": "meta[name=\"viewport\"]", + "deviceClass": "both" + }, + { + "id": "crumb-to-release", + "category": "structure", + "describe": "Breadcrumb links back to the /v152/ release index.", + "kind": "dom-query", + "selector": "a[href=\"/v152/\"]", + "deviceClass": "both" + }, + { + "id": "byline-footer", + "category": "structure", + "describe": "Byline footer present (article provenance).", + "kind": "dom-query", + "selector": ".byline", + "deviceClass": "both" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "describe": "Every target=_blank link carries rel=noopener (no reverse-tabnabbing; MDN-style external link hygiene).", + "kind": "js-eval", + "test": "[...document.querySelectorAll('a[target=\"_blank\"]')].every(el => (el.rel||'').includes('noopener'))", + "deviceClass": "both" + }, + { + "id": "no-empty-anchors", + "category": "links", + "describe": "No anchor has an empty or placeholder (#) href.", + "kind": "js-eval", + "test": "[...document.querySelectorAll('a')].every(el => { const h = el.getAttribute('href'); return h && h !== '#'; })", + "deviceClass": "both" + }, + { + "id": "no-console-errors", + "category": "runtime", + "describe": "Page loads with no console errors.", + "kind": "no-console-errors", + "deviceClass": "both" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "describe": "No failed (>=400 / net-error) network requests on load.", + "kind": "no-failed-requests", + "deviceClass": "both" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "describe": "No unintended horizontal overflow at desktop (1280x800).", + "kind": "js-eval", + "test": "document.documentElement.scrollWidth <= (window.innerWidth + 1)", + "deviceClass": "desktop" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "describe": "No unintended horizontal overflow at narrow mobile (360x740, DPR3).", + "kind": "js-eval", + "test": "document.documentElement.scrollWidth <= (window.innerWidth + 1)", + "deviceClass": "mobile" + }, + { + "id": "legible-desktop", + "category": "responsive", + "describe": "Desktop render is legible, contrast passes WCAG AA, controls/text not clipped (screenshot review).", + "kind": "manual-evidenced", + "deviceClass": "desktop" + }, + { + "id": "legible-mobile", + "category": "responsive", + "describe": "Mobile render is legible with adequate tap targets and no clipped text/controls (screenshot review).", + "kind": "manual-evidenced", + "deviceClass": "mobile" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "describe": "The <h1> is the chromestatus milestone-listing name for this feature (not the broader detail name) — factual/source fidelity.", + "kind": "manual-evidenced", + "deviceClass": "n/a" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "describe": "Frontend implementation consulted modern-web-guidance for its UI/responsive/a11y topics and applied or justified them (recorded in _questions.json guidanceConsulted).", + "kind": "manual-evidenced", + "deviceClass": "n/a" + }, + { + "id": "min-sections", + "category": "structure", + "describe": "Built reference has at least three <h2> sections (MDN-shaped depth).", + "kind": "js-eval", + "test": "document.querySelectorAll('main h2').length >= 3", + "deviceClass": "both" + }, + { + "id": "browser-support-section", + "category": "content", + "describe": "Cross-browser support is documented (a support/compat/baseline section, or a reference table stating Baseline / Shipped-in / standards positions) — accurate messaging, not implied support.", + "kind": "js-eval", + "test": "[...document.querySelectorAll('main h2')].some(h => /support|compat|baseline|availab|standards? position/i.test(h.textContent)) || /baseline|shipped in|standards? position|cross-browser|browser compat/i.test(document.querySelector('main').textContent)", + "deviceClass": "both" + }, + { + "id": "example-surface-present", + "category": "content", + "describe": "Built reference includes a usable example surface (<pre> code and/or a live embed).", + "kind": "js-eval", + "test": "!!document.querySelector('main pre, main iframe')", + "deviceClass": "both" + }, + { + "id": "code-example-integrity", + "category": "content", + "describe": "Code/IDL examples are correctly escaped (no attribute/element injection, invariant #4) and trace to the cited spec/IDL — no invented members (source review).", + "kind": "manual-evidenced", + "deviceClass": "n/a" + }, + { + "id": "warn-block-experimental", + "category": "content", + "describe": "Experimental / origin-trial / behind-a-flag feature shows the mandatory .warn-block with enable steps (CLAUDE.md invariant #7).", + "kind": "dom-query", + "selector": ".warn-block", + "deviceClass": "both" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "describe": "Embedded live example points at THIS feature's chrome-platform-showcase route (chrome-platform-showcase.paulkinlan-ea.deno.net/v152/suspicious-site-warnings...) — the canonical demo identity, never repointed.", + "kind": "js-eval", + "test": "[...document.querySelectorAll('iframe')].some(f => (f.src||'').includes('chrome-platform-showcase.paulkinlan-ea.deno.net/v152/suspicious-site-warnings'))", + "deviceClass": "both" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "describe": "The embedded chrome-platform-showcase demo actually renders (not a blank box or error frame); its platform behavior is governed by the CPS conformance contract referenced in cpsFeature, not re-asserted here.", + "kind": "manual-evidenced", + "deviceClass": "desktop" + } + ] +} diff --git a/v152/suspicious-site-warnings/index.html b/v152/suspicious-site-warnings/index.html new file mode 100644 index 00000000..af698f0a --- /dev/null +++ b/v152/suspicious-site-warnings/index.html @@ -0,0 +1,338 @@ +<!doctype html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Suspicious site warnings — Chrome 152 — gendn + + + + +
+

← Chrome 152 reference

+ +
+

v152 · security · browser ui · enabled by default

+

Suspicious site warnings

+ +
+

Not a web-platform API — Chrome-only browser security UI

+
    +
  • Chrome · 152 (milestone listing; Enhanced protection users)
  • +
  • Edge · not applicable (Chrome’s Safe Browsing UI)
  • +
  • Firefox · not applicable
  • +
  • Safari · not applicable
  • +
+

Baseline does not apply: this feature ships no web-exposed interface, so it has no web-features entry (a webstatus.dev query returns zero matches), no BCD key, no entry in Blink’s runtime_enabled_features.json5, and no MDN page (an MDN search returns no matching document) — all verified 2026-09-06. What this page documents is the observable behavior contract: when the warning triggers, what users and admins can do about it, and what — if anything — a page or site owner can observe.

+
+ +

Starting in Chrome 152, users enrolled in Safe Browsing > Enhanced protection who visit a site whose signals indicate it is potentially malicious get a warning in a by-passable pop-up, which must be addressed before they continue. It sits below the confidence threshold of the existing full-page red interstitials, which continue to appear on confirmed malicious sites. There is no author-facing API: the warning is browser UI, driven by Safe Browsing’s real-time URL lookup verdicts, controllable by users via their protection level and by administrators via two existing enterprise policies.

+
+ +
+ Rollout nuance — verify on your own build before relying on the fine print +

The milestone=152 listing files this feature under “Enabled by default” (the listing is authoritative for gendn), and it only ever activates for users who opted into Enhanced protection. Three caveats as of 2026-09-06:

+
    +
  • At Chromium trunk the gating flag is BASE_FEATURE(kSuspiciousSiteWarnings, base::FEATURE_DISABLED_BY_DEFAULT) in components/safe_browsing/core/common/features.cc — the on-by-default state on release builds is a server-side (Finch) rollout, not a compiled-in default.
  • +
  • To test deterministically, enable chrome://flags/#suspicious-site-warnings (registered for Desktop and Android in about_flags.cc, flag expiry milestone 155 per flag-metadata.json) or launch with --enable-features=SuspiciousSiteWarnings — and set Safe Browsing to Enhanced protection.
  • +
  • The ChromeStatus API record carries stale/partial metadata: status text “Proposed”, an Android-only shipping milestone (android: 152, desktop: null), while the Chromium tree contains both a desktop bubble and an Android dialog implementation. Disclosed here rather than resolved by fiat.
  • +
+
+ +
+

at a glance

+
+ + + + + + + + + +
What it isA by-passable Safe Browsing warning pop-up (desktop: bubble; Android: modal dialog) shown to Enhanced-protection users on sites with signals of potential maliciousness — one confidence tier below the red interstitial for confirmed threats
Developer surfaceNone in the web platform. The observable contract is: the trigger conditions, the user choices, a 30-day local bypass allowlist, and two enterprise policies (SafeBrowsingProtectionLevel, SafeBrowsingAllowlistDomains)
TriggerReal-time URL lookup verdict SOCIAL_ENGINEERING with verdict type WARN → SB_THREAT_TYPE_WARNABLE_SUSPICIOUS_SITE (verbatim contract)
Milestone listingChrome 152 — Enabled by default (listing, verified 2026-09-06); enterprise-notification milestone 152 on the record
Chromium implementationFeature flag SuspiciousSiteWarnings (features.h: “Enables warnings on sites that Safe Browsing deems suspicious.”); desktop controller in chrome/browser/safe_browsing/suspicious_site_warnings/, Android controller in chrome/browser/safe_browsing/android/
Spec statusNo specification — browser security UI, not standards-track (see specifications)
Blink componentUI>Browser>SafeBrowsing
ChromeStatus5427561449521152 — Suspicious site warnings
+
+ Source: chromestatus.com/feature/5427561449521152; API record; features.h +
+ +
+

why it exists

+

Safe Browsing’s red interstitials fire on confirmed malicious sites. That leaves a gap: sites Google’s systems consider potentially malicious — signals present, confirmation absent. Enhanced protection exists precisely to close that gap: per Google’s Safe Browsing documentation, it “sends more information about your activity to Google in real time to offer stronger, more customized protection”, analyzing data from visited sites to “detect and warn you about potentially risky sites and iframes, even if Google didn’t know about them before”.

+

Suspicious site warnings are the visible half of that promise in Chrome 152: instead of either blocking outright or staying silent, Chrome interposes a lighter-weight, by-passable pop-up for the uncertain middle tier. The warning must be addressed before the user continues, but — unlike the interstitial — it is designed to be dismissed and remembered (a 30-day per-site bypass), because a “suspicious” verdict is expected to include false positives.

+ Source: ChromeStatus summary; Google Chrome Help — Safe Browsing protection levels; suspicious_site_warning_allowlist.h +
+ +
+

there is no web-exposed API

+

Nothing about this feature is visible to page script, markup, or headers. The verdict is computed and consumed entirely in Chrome’s browser process; the warning renders in browser chrome (a bubble anchored to the window on desktop, a modal dialog on Android), not in the page. Evidence, each independently checkable: Blink’s runtime_enabled_features.json5 has no entry for it (it is a base::Feature in the browser-side Safe Browsing component, not a Blink runtime feature); the web-features register has no entry; and no IDL, event, header, or DOM surface appears anywhere in the implementation directories linked on this page. Consequently there is nothing for a page to feature-detect, no event on bypass, and no signal to the site that a warning was shown — the site sees an ordinary visit (or, if the user heeds the warning before commit-time content loads are consumed, an abandoned one).

+ Source: runtime_enabled_features.json5 (no entry, verified 2026-09-06); webstatus.dev query (zero matches); suspicious_site_ui.h +
+ +
+

how a warning triggers — the verdict contract

+ +

the contract, verbatim

+

The decision point is in the real-time URL lookup service — the Safe Browsing mechanism behind Enhanced protection’s “in real time” checks. From components/safe_browsing/core/browser/realtime/url_lookup_service_base.cc at trunk (fetched 2026-09-06):

+
if (rt_threat_type == RTLookupResponse::ThreatInfo::SOCIAL_ENGINEERING &&
+    rt_verdict_type == RTLookupResponse::ThreatInfo::WARN) {
+  return base::FeatureList::IsEnabled(kSuspiciousSiteWarnings)
+             ? SB_THREAT_TYPE_WARNABLE_SUSPICIOUS_SITE
+             : SB_THREAT_TYPE_SAFE;
+}
+

Read as a contract: a Safe Browsing real-time lookup response whose threat type is SOCIAL_ENGINEERING and whose verdict type is WARN (rather than DANGEROUS, which drives the interstitial path) maps to the threat type SB_THREAT_TYPE_WARNABLE_SUSPICIOUS_SITE when the feature is enabled — and is treated as SB_THREAT_TYPE_SAFE (no warning at all) when it is not. The server-side signals that produce the WARN verdict are not public; Google’s help documentation describes them only as analysis of site data to detect “potentially risky sites”. This page does not speculate about them.

+ Source: url_lookup_service_base.cc (verbatim); Safe Browsing protection levels + +

inputs: who and what is checked

+

Three conditions must all hold before the contract above is even evaluated:

+
    +
  • Enhanced protection enrollment. The feature is defined for “users of Safe Browsing > Enhanced protection” (ChromeStatus summary). Standard-protection and no-protection users are outside its scope; real-time lookups with page-content signals are the Enhanced-protection mechanism.
  • +
  • A real-time URL lookup actually runs for the navigation and returns a ThreatInfo with the threat/verdict pair above.
  • +
  • The SuspiciousSiteWarnings feature is enabled on the client (Finch rollout in Chrome 152, or the flag/switch in the rollout note).
  • +
+ Source: ChromeStatus summary; url_lookup_service_base.cc; Safe Browsing protection levels + +

outputs: what the verdict produces

+

A SB_THREAT_TYPE_WARNABLE_SUSPICIOUS_SITE verdict does not block the navigation the way interstitial-class threats do. The navigation proceeds; the platform controller (desktop / Android) stages a warning for that navigation ID and shows it once the navigation commits and Safe Browsing checks complete — “while prioritizing full-page interstitials” (both controllers’ class comment, verbatim): if the same navigation also earns an interstitial, the interstitial wins. The ChromeStatus summary states the same layering from the user’s side: the pop-up warning “is in addition to the red interstitial warnings, which will continue to be shown on confirmed malicious websites.”

+ Source: suspicious_site_controller_desktop.h; suspicious_site_controller_android.h; ChromeStatus summary + +

suppression and failure modes

+

Ways a would-be warning does not appear — the feature’s error/edge surface. Each row traces to a linked source; nothing here is inferred beyond it.

+
+ + + + + + + + +
ConditionResult
Feature disabled (kSuspiciousSiteWarnings off — e.g. rollout has not reached the client)The verdict maps to SB_THREAT_TYPE_SAFE: fails open, silently — no warning, no record (url_lookup_service_base.cc)
User not in Enhanced protectionOut of scope by definition (ChromeStatus summary); Standard protection continues to produce only the established warning surfaces
Host on the user’s local bypass allowlist (a prior “Mark as safe” / “Continue anyway” within 30 days)“While allowlisted, SSW warnings for that host will not be displayed” (allowlist header, verbatim; see the allowlist)
Domain on the enterprise SafeBrowsingAllowlistDomains policySafe Browsing “won’t check them for dangerous resources” at all, so no suspicious-site verdict can arise (policy definition; the ChromeStatus summary names this policy as the admin exclusion mechanism)
Same navigation also triggers a full-page interstitialInterstitial takes priority over the pop-up (controller class comments, both platforms)
Real-time lookup unavailable for the navigationNo ThreatInfo with the required pair → no warning. The sources on this page do not enumerate lookup-failure handling further; treat details beyond this as undocumented
+
+ Source: linked per row, all fetched 2026-09-06 +
+ +
+

the warning UI and the user’s choices

+

The warning is a bubble on desktop and a modal dialog on Android, both implemented behind the shared entry points ShowSuspiciousSiteWarning(web_contents, navigation_id) and ShowSuspiciousSiteBubble(web_contents) declared in suspicious_site_ui.h (“Implemented by platform-specific controllers”). The desktop controller exposes exactly three UI event handlers — OnBackToSafetyClicked(), OnMarkAsSafeClicked(), OnLearnMoreClicked() — plus OnBubbleDestroyed(); the Android dialog’s handlers are OnContinueButtonClicked(), OnHelpCenterLinkClicked(), and HandleBackNavigation(), with dialog dismissal routed through CloseDialog(). That is the complete choice surface.

+ +

choices per platform

+
+ + + + + + +
ChoiceDesktop bubbleAndroid dialog
Heed the warningOnBackToSafetyClicked() — “Back to safety” buttonHandleBackNavigation() — back button in the dialog, or the system back gesture
Bypass and rememberOnMarkAsSafeClicked() — “Mark as safe”; adds the host to the 30-day local allowlistOnContinueButtonClicked() — “Continue anyway”; same allowlist path per the allowlist header (“Mark as Safe (or Continue anyway)”)
Learn moreOnLearnMoreClicked()OnHelpCenterLinkClicked() — opens the Safe Browsing help article
Dismiss without decidingBubble destroyed (OnBubbleDestroyed())CloseDialog(dismissal_cause); manual navigation away and closing the tab are also recorded interactions
+
+ Source: suspicious_site_controller_desktop.h; suspicious_site_controller_android.h (both verbatim member lists, fetched 2026-09-06) + +

recorded outcomes and interactions

+

Every warning resolves to one SuspiciousSiteWarningOutcome, and each user gesture maps to a SuspiciousSiteWarningUserInteraction — both enums are defined, verbatim below, in the allowlist header and recorded to the UMA histogram SafeBrowsing.SuspiciousSiteWarning.WarningOutcome (histograms.xml). These are internal metrics, not web-exposed values — listed because they are the authoritative statement of which endings the warning can have.

+
+ + + + +
EnumValues (verbatim)
SuspiciousSiteWarningOutcomekUnknown = 0, kBypassed = 1, kAdhered = 2, kDismissedBySystem = 3
SuspiciousSiteWarningUserInteractionkUnknown = 0, kShown = 1, kMarkAsSafe = 2, kBackToSafetyButton = 3, kDismissed = 4, kManualNavigation = 5, kCloseTab = 6, kLearnMore = 7, kSystemBack = 8, kDestroyed = 9
+
+

Chrome may additionally show a HaTS satisfaction survey after a warning (feature kSuspiciousSiteWarningSurvey, disabled by default, with separate survey triggers for users who proceeded vs. heeded — features.cc).

+ Source: suspicious_site_warning_allowlist.h (verbatim enums); histograms.xml; features.cc + +

lifecycle: from verdict to outcome

+
    +
  1. Stage. ShowForWebContents(web_contents, navigation_id) attaches the controller to the tab for one specific main-frame navigation ID.
  2. +
  3. Defer. The controller observes the WebContents and the AsyncCheckTracker, and holds the warning “until Safe Browsing checks complete and the navigation commits, while prioritizing full-page interstitials” (class comment, verbatim on both platforms). Tab visibility changes also gate display (OnVisibilityChanged; the controller tracks an is_suspended_ state).
  4. +
  5. Show. The bubble/dialog appears (ShowBubble(); interaction kShown). During the warning, the suspicious URL is tracked by the controller (current_suspicious_url_, “the suspicious URL currently added to the allowlist for this warning”).
  6. +
  7. Resolve. The user heeds (kAdhered), bypasses (kBypassed — host allowlisted for 30 days), or the system dismisses the warning (kDismissedBySystem). One outcome per warning; the tracked outcome starts at kUnknown and is finalized as the user interacts.
  8. +
+ Source: suspicious_site_controller_desktop.h; suspicious_site_controller_android.h +
+ +
+

the 30-day local bypass allowlist

+

Bypassing a warning is remembered locally. The contract, from the header comment of SuspiciousSiteWarningAllowlist, verbatim: “When a user clicks ‘Mark as Safe’ (or ‘Continue anyway’) on an SSW warning, the host is added to this local allowlist for a 30-day TTL. While allowlisted, SSW warnings for that host will not be displayed.” The TTL constant is kDefaultExpirationTimeout = base::Days(30). The class API is small and host-keyed: AllowSiteForHost(host), IsSiteAllowedForHost(host), RevokeUserAllowException(host), and two Clear(…) overloads taking a time range (and optionally a pattern filter).

+ +

storage and scope

+
    +
  • Keyed by host, not by full URL or origin scheme — every method takes a host string.
  • +
  • Stored in the profile’s HostContentSettingsMap: “a host is marked as allowlisted … if a dictionary value is present”, so the entry lives with the profile’s content-settings storage.
  • +
  • Auto-expiring: “expired entries are automatically filtered out by the framework via ContentSettingConstraints” — no cleanup action needed after 30 days; the warning becomes eligible again.
  • +
  • Deletable: individual revocation (RevokeUserAllowException) and time-ranged clearing (Clear(delete_begin, delete_end, …)) exist — the time-range signature matches Chrome’s browsing-data deletion pattern. Whether the entries sync across a user’s devices is not stated in these sources; treat it as undocumented.
  • +
+ Source: suspicious_site_warning_allowlist.h (verbatim comments and member list, fetched 2026-09-06) +
+ +
+

what site owners can do

+

If Chrome shows suspicious-site warnings on your site, nothing in the page tells you so — there is no header, console message, or API (see above). The public, owner-facing paths are the standard Safe Browsing ones:

+ +

Honesty note: those flows are documented for Safe Browsing’s confirmed-threat listings. As of 2026-09-06, none of the public sources on this page documents a dedicated review path for the sub-threshold “suspicious” verdict specifically — whether the Search Console flow surfaces or clears it is not publicly specified. This gap is recorded rather than papered over.

+ Source: Google Transparency Report; Search Console security issues documentation; Google Safe Browsing +
+ +
+

enterprise policy controls

+

The admin-facing surface is two existing policies, named by the ChromeStatus record as the controls for this warning. Their contracts below are quoted from the canonical policy definitions in the Chromium tree; the rendered documentation lives in the Chrome Enterprise policy list.

+ +

SafeBrowsingProtectionLevel

+

Controls whether Safe Browsing is on and in which mode — and therefore whether suspicious site warnings can appear at all, since they require Enhanced protection. Type int-enum; values, verbatim from the policy definition:

+
+ + + + + +
ValueMeaningEffect on this feature
0 — NoProtection“Safe Browsing is never active.”No suspicious site warnings (no Safe Browsing at all)
1 — StandardProtection (default)“Safe Browsing is always active in the standard mode.”No suspicious site warnings — the feature is Enhanced-protection-only
2 — EnhancedProtection“Safe Browsing is always active in the enhanced mode… requires sharing more browsing information with Google.”Suspicious site warnings active (Chrome 152+, subject to rollout)
+
+

Contract details from the same definition: if set as mandatory, users cannot change the Safe Browsing setting; it can also be set as recommended (can_be_recommended: true), leaving the user in control; unset means Standard protection with user choice. dynamic_refresh: true (applies without restart), per_profile: true.

+ +

supported platforms

+
+ + + + + + +
PlatformSince (per supported_on)
Chrome (desktop, all OSes)83+
ChromeOS83+
Android87+
iOS88+
+
+ Source: SafeBrowsingProtectionLevel.yaml (verbatim, fetched 2026-09-06); Chrome Enterprise policy list + +

SafeBrowsingAllowlistDomains

+

Excludes specific domains from Safe Browsing checks entirely — the ChromeStatus record names it as the way for admins “to exclude specific sites from triggering the warning”. Type: list of strings. The matching contract, verbatim from the policy definition: “Safe Browsing will trust the domains you designate. It won’t check them for dangerous resources such as phishing, malware, or unwanted software… This policy does not support regular expressions; however, subdomains of a given domain are allowlisted. Fully qualified domain names (FQDNs) are not required.” Example value from the definition: ["mydomain.com", "myuniversity.edu"]. Marked sensitive: true (it weakens a security boundary); dynamic_refresh: true, per_profile: true. Note the blast radius: it does not suppress only this pop-up — it turns off Safe Browsing checks (including download and password-reuse protection) for those domains.

+ +

supported platforms

+
+ + + + + + +
PlatformSince (per supported_on)
Chrome (desktop, all OSes)86+
ChromeOS86+
Android133+
iOSnot listed in supported_on (unsupported)
+
+ Source: SafeBrowsingAllowlistDomains.yaml (verbatim, fetched 2026-09-06); Chrome Enterprise policy list; ChromeStatus record +
+ +
+

examples

+

Because a page cannot trigger, detect, or demo the warning itself, the live example explores the boundary honestly — it probes every plausible place a Safe Browsing verdict might be exposed to script and demonstrates that the answer is “nothing”, with controls that prove the probing works:

+
+ +
Live example from the Chrome Platform Showcase (route returned 200, 2026-09-06). Two more concept demos: Audit your own markup and If you are flagged.Source: chrome-platform-showcase
+
+ +

Reproduce the feature state locally (test builds where the Finch rollout has not reached you):

+
# Enable the client-side feature explicitly, then turn on
+# Enhanced protection in chrome://settings/security
+chrome --enable-features=SuspiciousSiteWarnings
+
+# or flip the flag UI equivalent:
+#   chrome://flags/#suspicious-site-warnings
+ +

Enterprise: force Enhanced protection (which activates the warnings) while exempting internal domains from Safe Browsing checks — a Linux managed policies JSON example; the same two values map to Windows registry / macOS plist / Google Admin console equivalents documented in the policy list:

+
// /etc/opt/chrome/policies/managed/safebrowsing.json
+{
+  "SafeBrowsingProtectionLevel": 2,
+  "SafeBrowsingAllowlistDomains": ["intranet.example.com"]
+}
+

And the inverse — an admin who wants no suspicious-site pop-ups at all pins the protection level at or below Standard:

+
{
+  "SafeBrowsingProtectionLevel": 1
+}
+ Source: about_flags.cc (flag name and feature mapping); SafeBrowsingProtectionLevel.yaml; SafeBrowsingAllowlistDomains.yaml +
+ +
+

browser compatibility

+

Interim table. Browser-compat data (BCD) and the web-features register cover web-exposed APIs; this browser-UI feature has no key in either (the webstatus.dev query returns zero matches, verified 2026-09-06). Rows compiled from the linked primary sources.

+
+ + + + + + +
Browser / platformSupportEvidence
Chrome (desktop)152 — Enabled by default per the listing, for Enhanced-protection users; client flag Finch-rolled (trunk default: disabled). Desktop bubble implementation present in-tree; the API record’s desktop milestone field is null (stale/partial metadata, disclosed in the rollout note)milestone listing; desktop controller; features.cc
Chrome (Android)152 — the API record lists android: 152; modal-dialog implementation present in-tree; flag registered for AndroidAPI record; Android controller; flag-metadata.json
Chrome (iOS / WebView)Not shipped per the record (ios: null, webview: null); no iOS/WebView implementation among the linked sourcesAPI record
Edge / Firefox / SafariNot applicable — the feature is Chrome’s Safe Browsing UI, not a web standard; the record logs “No signal” from other vendors and there is nothing to implement interoperablyAPI record (ff/safari views)
+
+

There are no web-platform tests: WPT covers web-exposed behavior, and this feature has none. In-tree coverage is Chromium browser tests on both platforms (desktop, Android).

+ Source: linked per row, all fetched 2026-09-06 +
+ +
+

security and privacy

+
    +
  • The feature is itself a security control: it surfaces sub-threshold Safe Browsing verdicts that previously produced no user-visible signal, narrowing the window in which an Enhanced-protection user interacts with a probably-deceptive site.
  • +
  • Privacy cost lives in the prerequisite, not the warning. Warnings only exist under Enhanced protection, which “sends more information about your activity to Google in real time”, including “the URLs you visit and a small sample of page content” (Google’s Safe Browsing help, verbatim). The warning adds no new data collection of its own in the sources here; the verdicts arrive on the already-running real-time lookup.
  • +
  • Bypass state is stored locally in the profile’s content settings with a 30-day auto-expiry, and is revocable/clearable (see the allowlist). Interaction outcomes are recorded to UMA histograms as anonymous enumerations.
  • +
  • Enterprise allowlisting is deliberately blunt: SafeBrowsingAllowlistDomains is flagged sensitive: true in its definition because it exempts domains from all Safe Browsing checks, not just this pop-up — admins trading warning fatigue for coverage should know the trade.
  • +
  • Nothing is exposed to the web: no page can learn that a warning was shown, bypassed, or heeded (see no web-exposed API) — so the warning leaks no browsing-state signal to the site being warned about.
  • +
+ Source: Safe Browsing protection levels (verbatim quotes); allowlist header; SafeBrowsingAllowlistDomains.yaml +
+ +
+

specifications

+

There is no specification: this is Chrome product behavior (browser security UI), not a standards-track web-platform feature. No W3C/WHATWG/WICG document, explainer, intent thread, or TAG review exists for it in the ChromeStatus record (spec, explainer, and intent fields are all empty, verified 2026-09-06). The governing public artifacts are:

+
+ + + + + + +
DocumentRole
ChromeStatus — Suspicious site warnings (5427561449521152)The feature’s public record: scope, milestone, admin controls (marked enterprise-release-notes reviewed, notification milestone 152)
Google Chrome Help — Safe Browsing protection levelsThe user-facing definition of Standard vs. Enhanced protection this feature builds on (linked from the feature summary and from the warning’s own help-center link)
SafeBrowsingProtectionLevel.yaml · SafeBrowsingAllowlistDomains.yamlCanonical admin-policy contracts (rendered at chromeenterprise.google/policies)
Chromium source (linked throughout this page)The behavior contract of record: verdict mapping, controllers, allowlist, flags, metrics
+
+ Source: ChromeStatus API record (empty spec/explainer/intent fields) +
+ +
+

see also

+ +
+ + +
+ + diff --git a/v152/suspicious-site-warnings/reference-contract.json b/v152/suspicious-site-warnings/reference-contract.json new file mode 100644 index 00000000..437a6d8c --- /dev/null +++ b/v152/suspicious-site-warnings/reference-contract.json @@ -0,0 +1,481 @@ +{ + "schemaVersion": 1, + "id": "v152/suspicious-site-warnings", + "route": "/v152/suspicious-site-warnings/", + "kind": "platform-capability", + "completeness": "implementation-sufficient", + "assessedAt": "2026-09-06", + "assessor": "writer self-assessment; independent integrator review pending", + "notes": "Browser security UI with no web-exposed API: the declared surface is the observable behavior contract (verdict mapping, warning UI choices, local bypass allowlist) plus the two admin policies ChromeStatus names as its controls. Server-side detection signals are non-public and are declared as such on-page rather than invented; allowlist sync behavior and a suspicious-verdict-specific owner review path are explicitly recorded as undocumented.", + "sources": [ + { + "id": "chromestatus-feature", + "label": "ChromeStatus feature page 5427561449521152 — Suspicious site warnings", + "url": "https://chromestatus.com/feature/5427561449521152", + "kind": "browser-data" + }, + { + "id": "chromestatus-record", + "label": "ChromeStatus API record 5427561449521152 (summary, admin controls, android:152/desktop:null, empty spec/explainer/intent fields, enterprise notification milestone 152)", + "url": "https://chromestatus.com/api/v0/features/5427561449521152", + "kind": "browser-data" + }, + { + "id": "milestone-listing", + "label": "ChromeStatus milestone=152 listing (files the feature under 'Enabled by default'; authoritative for milestone, category, and listing name)", + "url": "https://chromestatus.com/api/v0/features?milestone=152", + "kind": "browser-data" + }, + { + "id": "sb-help", + "label": "Google Chrome Help — Safe Browsing protection levels (Standard vs Enhanced protection; the help article the warning links to; linked from the ChromeStatus summary)", + "url": "https://support.google.com/chrome/answer/13844634", + "kind": "release-doc" + }, + { + "id": "url-lookup", + "label": "Chromium url_lookup_service_base.cc — SOCIAL_ENGINEERING + WARN → SB_THREAT_TYPE_WARNABLE_SUSPICIOUS_SITE gated by kSuspiciousSiteWarnings (quoted verbatim, fetched 2026-09-06)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/components/safe_browsing/core/browser/realtime/url_lookup_service_base.cc", + "kind": "implementation" + }, + { + "id": "sb-features-cc", + "label": "Chromium safe_browsing features.cc — BASE_FEATURE(kSuspiciousSiteWarnings, FEATURE_DISABLED_BY_DEFAULT) at trunk; kSuspiciousSiteWarningSurvey HaTS feature; unrelated 2019 SafeBrowsingSuspiciousSiteTriggerQuota disambiguated", + "url": "https://chromium.googlesource.com/chromium/src/+/main/components/safe_browsing/core/common/features.cc", + "kind": "implementation" + }, + { + "id": "sb-features-h", + "label": "Chromium safe_browsing features.h — 'Enables warnings on sites that Safe Browsing deems suspicious.' (feature declaration comment, verbatim)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/components/safe_browsing/core/common/features.h", + "kind": "implementation" + }, + { + "id": "allowlist-h", + "label": "Chromium suspicious_site_warning_allowlist.h — SuspiciousSiteWarningAllowlist (30-day TTL, HostContentSettingsMap storage, host-keyed API) + SuspiciousSiteWarningOutcome / SuspiciousSiteWarningUserInteraction enums (all verbatim)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/components/safe_browsing/core/browser/suspicious_site_warning_allowlist.h", + "kind": "implementation" + }, + { + "id": "controller-desktop-h", + "label": "Chromium suspicious_site_controller_desktop.h — desktop bubble controller: defer-until-commit + async-check gating, interstitial priority, OnBackToSafetyClicked/OnMarkAsSafeClicked/OnLearnMoreClicked handlers (verbatim)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/chrome/browser/safe_browsing/suspicious_site_warnings/suspicious_site_controller_desktop.h", + "kind": "implementation" + }, + { + "id": "controller-android-h", + "label": "Chromium suspicious_site_controller_android.h — Android modal-dialog controller: OnContinueButtonClicked/OnHelpCenterLinkClicked/HandleBackNavigation/CloseDialog, UserChoice enum, HaTS wiring (verbatim)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/chrome/browser/safe_browsing/android/suspicious_site_controller_android.h", + "kind": "implementation" + }, + { + "id": "ui-h", + "label": "Chromium suspicious_site_ui.h — shared ShowSuspiciousSiteWarning / ShowSuspiciousSiteBubble entry points, 'implemented by platform-specific controllers'", + "url": "https://chromium.googlesource.com/chromium/src/+/main/chrome/browser/safe_browsing/suspicious_site_warnings/suspicious_site_ui.h", + "kind": "implementation" + }, + { + "id": "about-flags", + "label": "Chromium about_flags.cc — chrome://flags/#suspicious-site-warnings entry, kOsDesktop | kOsAndroid, mapped to safe_browsing::kSuspiciousSiteWarnings", + "url": "https://chromium.googlesource.com/chromium/src/+/main/chrome/browser/about_flags.cc", + "kind": "implementation" + }, + { + "id": "flag-metadata", + "label": "Chromium flag-metadata.json — suspicious-site-warnings flag owners and expiry milestone 155", + "url": "https://chromium.googlesource.com/chromium/src/+/main/chrome/browser/flag-metadata.json", + "kind": "implementation" + }, + { + "id": "runtime-flags", + "label": "Blink runtime_enabled_features.json5 — no entry for this feature (evidence it is not a Blink/web-exposed feature; verified 2026-09-06)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/platform/runtime_enabled_features.json5", + "kind": "implementation" + }, + { + "id": "webstatus-query", + "label": "webstatus.dev query for 'suspicious site' (zero matches — no web-features/Baseline entry, verified 2026-09-06)", + "url": "https://api.webstatus.dev/v1/features?q=suspicious%20site", + "kind": "browser-data" + }, + { + "id": "mdn-search", + "label": "MDN search API for 'Suspicious site warnings' (no matching document — MDN does not cover the feature, verified 2026-09-06)", + "url": "https://developer.mozilla.org/api/v1/search?q=Suspicious+site+warnings&locale=en-US", + "kind": "browser-data" + }, + { + "id": "histograms", + "label": "Chromium safe_browsing histograms.xml — SafeBrowsing.SuspiciousSiteWarning.WarningOutcome UMA histogram (outcome recording)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/tools/metrics/histograms/metadata/safe_browsing/histograms.xml", + "kind": "implementation" + }, + { + "id": "policy-level-yaml", + "label": "Chromium SafeBrowsingProtectionLevel.yaml — canonical policy definition (int-enum 0/1/2, unset default, mandatory/recommended, dynamic_refresh, per_profile, supported_on; verbatim)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/components/policy/resources/templates/policy_definitions/SafeBrowsing/SafeBrowsingProtectionLevel.yaml", + "kind": "implementation" + }, + { + "id": "policy-domains-yaml", + "label": "Chromium SafeBrowsingAllowlistDomains.yaml — canonical policy definition (list of domains, subdomain matching, no regex, sensitive:true, dynamic_refresh, per_profile, supported_on; verbatim)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/components/policy/resources/templates/policy_definitions/SafeBrowsing/SafeBrowsingAllowlistDomains.yaml", + "kind": "implementation" + }, + { + "id": "policy-level-page", + "label": "Chrome Enterprise policy list — SafeBrowsingProtectionLevel (rendered documentation; the URL the ChromeStatus summary links)", + "url": "https://chromeenterprise.google/policies/#SafeBrowsingProtectionLevel", + "kind": "release-doc" + }, + { + "id": "policy-domains-page", + "label": "Chrome Enterprise policy list — SafeBrowsingAllowlistDomains (rendered documentation; the URL the ChromeStatus summary links)", + "url": "https://chromeenterprise.google/policies/#SafeBrowsingAllowlistDomains", + "kind": "release-doc" + }, + { + "id": "transparency-report", + "label": "Google Transparency Report — Safe Browsing site status checker (site-owner status path)", + "url": "https://transparencyreport.google.com/safe-browsing/search", + "kind": "other" + }, + { + "id": "search-console-security", + "label": "Google Search Console — Security Issues report documentation (site-owner diagnosis and review-request path)", + "url": "https://developers.google.com/search/docs/monitor-debug/security/security-issues", + "kind": "release-doc" + }, + { + "id": "safebrowsing-home", + "label": "Google Safe Browsing — program overview", + "url": "https://safebrowsing.google.com/", + "kind": "other" + }, + { + "id": "cps-route", + "label": "Chrome Platform Showcase feature route (200 with three live concept demos, verified 2026-09-06; 'what-a-page-can-observe' embedded)", + "url": "https://chrome-platform-showcase.paulkinlan-ea.deno.net/v152/suspicious-site-warnings/", + "kind": "other" + }, + { + "id": "desktop-browsertest", + "label": "Chromium suspicious_site_desktop_browsertest.cc — in-tree desktop coverage (no WPT exists for browser UI)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/chrome/browser/safe_browsing/suspicious_site_warnings/suspicious_site_desktop_browsertest.cc", + "kind": "test" + }, + { + "id": "android-browsertest", + "label": "Chromium suspicious_site_browsertest.cc (android) — in-tree Android coverage", + "url": "https://chromium.googlesource.com/chromium/src/+/main/chrome/browser/safe_browsing/android/suspicious_site_browsertest.cc", + "kind": "test" + } + ], + "inventory": [ + { + "id": "warnable-verdict", + "name": "Warnable suspicious-site verdict (real-time lookup SOCIAL_ENGINEERING + WARN → SB_THREAT_TYPE_WARNABLE_SUSPICIOUS_SITE)", + "kind": "algorithm", + "sourceRefs": ["url-lookup", "sb-features-cc", "sb-features-h", "chromestatus-record"] + }, + { + "id": "warning-ui", + "name": "Suspicious site warning UI (desktop bubble / Android modal dialog) and its user choices", + "kind": "state", + "sourceRefs": ["controller-desktop-h", "controller-android-h", "ui-h", "allowlist-h"] + }, + { + "id": "bypass-allowlist", + "name": "30-day local bypass allowlist (SuspiciousSiteWarningAllowlist)", + "kind": "state", + "sourceRefs": ["allowlist-h"] + }, + { + "id": "policy-safebrowsingprotectionlevel", + "name": "SafeBrowsingProtectionLevel enterprise policy (gates the feature via protection level)", + "kind": "other", + "sourceRefs": ["policy-level-yaml", "policy-level-page", "chromestatus-record"] + }, + { + "id": "policy-safebrowsingallowlistdomains", + "name": "SafeBrowsingAllowlistDomains enterprise policy (per-domain exclusion)", + "kind": "other", + "sourceRefs": ["policy-domains-yaml", "policy-domains-page", "chromestatus-record"] + } + ], + "documentation": [ + { + "inventoryId": "warnable-verdict", + "href": "./", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#verdict-contract", + "sourceRefs": ["url-lookup"] + }, + "inputs": { + "status": "documented", + "selector": "#verdict-inputs", + "sourceRefs": ["chromestatus-record", "url-lookup", "sb-help"] + }, + "outputs": { + "status": "documented", + "selector": "#verdict-outputs", + "sourceRefs": ["controller-desktop-h", "controller-android-h", "chromestatus-record"] + }, + "errors": { + "status": "documented", + "selector": "#verdict-errors", + "sourceRefs": [ + "url-lookup", + "chromestatus-record", + "allowlist-h", + "policy-domains-yaml" + ] + }, + "context": { + "status": "documented", + "selector": "#no-api", + "sourceRefs": ["runtime-flags", "webstatus-query", "ui-h"] + }, + "lifecycle": { + "status": "documented", + "selector": "#warning-lifecycle", + "sourceRefs": ["controller-desktop-h", "controller-android-h"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["about-flags", "sb-features-cc", "cps-route"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": [ + "milestone-listing", + "chromestatus-record", + "sb-features-cc", + "webstatus-query", + "desktop-browsertest", + "android-browsertest" + ] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["sb-help", "allowlist-h"] + } + } + }, + { + "inventoryId": "warning-ui", + "href": "./", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#warning-ui", + "sourceRefs": ["ui-h", "controller-desktop-h", "controller-android-h"] + }, + "inputs": { + "status": "documented", + "selector": "#warning-choices", + "sourceRefs": ["controller-desktop-h", "controller-android-h", "allowlist-h", "sb-help"] + }, + "outputs": { + "status": "documented", + "selector": "#warning-outcomes", + "sourceRefs": ["allowlist-h", "histograms", "sb-features-cc"] + }, + "errors": { + "status": "documented", + "selector": "#verdict-errors", + "sourceRefs": ["controller-desktop-h", "url-lookup", "allowlist-h"] + }, + "context": { + "status": "documented", + "selector": "#warning-ui", + "sourceRefs": ["ui-h", "controller-desktop-h", "controller-android-h"] + }, + "lifecycle": { + "status": "documented", + "selector": "#warning-lifecycle", + "sourceRefs": ["controller-desktop-h", "controller-android-h"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["cps-route", "about-flags"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": [ + "milestone-listing", + "chromestatus-record", + "controller-desktop-h", + "controller-android-h", + "flag-metadata" + ] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["sb-help", "allowlist-h", "histograms"] + } + } + }, + { + "inventoryId": "bypass-allowlist", + "href": "./", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#allowlist", + "sourceRefs": ["allowlist-h"] + }, + "inputs": { + "status": "documented", + "selector": "#allowlist", + "sourceRefs": ["allowlist-h"] + }, + "outputs": { + "status": "documented", + "selector": "#allowlist", + "sourceRefs": ["allowlist-h"] + }, + "errors": { + "status": "documented", + "selector": "#allowlist-behavior", + "sourceRefs": ["allowlist-h"] + }, + "context": { + "status": "documented", + "selector": "#allowlist-behavior", + "sourceRefs": ["allowlist-h"] + }, + "lifecycle": { + "status": "documented", + "selector": "#allowlist-behavior", + "sourceRefs": ["allowlist-h"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["cps-route", "about-flags"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": ["milestone-listing", "chromestatus-record"] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["allowlist-h", "sb-help"] + } + } + }, + { + "inventoryId": "policy-safebrowsingprotectionlevel", + "href": "./", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#policy-protection-level", + "sourceRefs": ["policy-level-yaml"] + }, + "inputs": { + "status": "documented", + "selector": "#policy-protection-level", + "sourceRefs": ["policy-level-yaml"] + }, + "outputs": { + "status": "documented", + "selector": "#policy-protection-level", + "sourceRefs": ["policy-level-yaml", "chromestatus-record"] + }, + "errors": { + "status": "documented", + "selector": "#policy-protection-level", + "sourceRefs": ["policy-level-yaml"] + }, + "context": { + "status": "documented", + "selector": "#policy-protection-level", + "sourceRefs": ["policy-level-yaml", "policy-level-page"] + }, + "lifecycle": { + "status": "documented", + "selector": "#policy-protection-level", + "sourceRefs": ["policy-level-yaml"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["policy-level-yaml", "policy-level-page"] + }, + "compatibility": { + "status": "documented", + "selector": "#policy-protection-level-support", + "sourceRefs": ["policy-level-yaml"] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["sb-help", "policy-level-yaml"] + } + } + }, + { + "inventoryId": "policy-safebrowsingallowlistdomains", + "href": "./", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#policy-allowlist-domains", + "sourceRefs": ["policy-domains-yaml"] + }, + "inputs": { + "status": "documented", + "selector": "#policy-allowlist-domains", + "sourceRefs": ["policy-domains-yaml"] + }, + "outputs": { + "status": "documented", + "selector": "#policy-allowlist-domains", + "sourceRefs": ["policy-domains-yaml", "chromestatus-record"] + }, + "errors": { + "status": "documented", + "selector": "#policy-allowlist-domains", + "sourceRefs": ["policy-domains-yaml"] + }, + "context": { + "status": "documented", + "selector": "#policy-allowlist-domains", + "sourceRefs": ["policy-domains-yaml", "policy-domains-page"] + }, + "lifecycle": { + "status": "documented", + "selector": "#policy-allowlist-domains", + "sourceRefs": ["policy-domains-yaml"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["policy-domains-yaml", "policy-domains-page"] + }, + "compatibility": { + "status": "documented", + "selector": "#policy-allowlist-support", + "sourceRefs": ["policy-domains-yaml"] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["policy-domains-yaml", "sb-help"] + } + } + } + ] +} diff --git a/v152/user-agent-image-replacement-api/_questions.json b/v152/user-agent-image-replacement-api/_questions.json new file mode 100644 index 00000000..857d9f7e --- /dev/null +++ b/v152/user-agent-image-replacement-api/_questions.json @@ -0,0 +1,129 @@ +{ + "schemaVersion": 1, + "id": "v152/user-agent-image-replacement-api", + "route": "/v152/user-agent-image-replacement-api/", + "identity": "5076374013476864", + "milestone": 152, + "status": "built", + "revision": 1, + "reviewedAt": "2026-09-06", + "reviewer": "leaf-reference writer (weekly hardening run) — self-critique against primary sources; independent review still required", + "frontendTouched": true, + "rubric": [ + { + "dimension": "factual-source-fidelity", + "score": 4, + "severity": "major", + "evidence": "All three member declarations quoted VERBATIM from html_image_element.idl (fetched 2026-09-06): [RuntimeEnabled=UAImageReplacementAPI, Measure] readonly attribute boolean replacedByUserAgent; onuareplacestart/onuareplaceend EventHandler attributes. Event type strings confirmed in event_type_names.json5 (lines listing \"uareplaceend\", \"uareplacestart\"). Event characteristics (plain Event::Create — non-bubbling/non-cancelable; EnqueueEvent with TaskType::kDOMManipulation — async) and the replacedByUserAgent getter body quoted verbatim from html_image_element.cc. End-of-replacement triggers traced to RemovedFrom/DidMoveToNewDocument/ResetLayoutDisposition and labelled as current-implementation tracing, NOT API contract, because the explainer explicitly leaves them UA-specific. No formal spec exists — every page says the spec link is the explainer and quotes its 'has not been approved to ship in Chrome' caveat.", + "notes": "The explainer's capturing-listener recommendation is explained mechanically (capture reaches target of non-bubbling events) so readers understand why bubble-phase document listeners never fire." + }, + { + "dimension": "milestone-mapping", + "score": 5, + "severity": "info", + "evidence": "Feature id 5076374013476864 verified in the live milestone=152 listing under category 'Origin trial' with listing name 'User Agent Image Replacement API' (fetched 2026-09-06); slug from the listing name per invariant #1; H1 is the listing name; folder under v152 per invariant #2. Origin-trial stage in the API record: desktop_first 152, desktop_last 157, origin_trial_id 1722063907515793409.", + "notes": "" + }, + { + "dimension": "completeness", + "score": 4, + "severity": "major", + "evidence": "reference-contract.json inventories 5 items (1 property, 2 events, 2 handler attributes) — the complete declared surface in the shipping IDL — mapped to two child routes (replacedbyuseragent/, events/) with all nine dimensions each. Claimed implementation-sufficient; the UA-discretion points (what triggers/ends replacement, whether notification happens at all) are the explainer's own explicit ambiguity, preserved as such rather than invented around.", + "notes": "The warn-block enable steps are exact: OT token via header or meta tag, --enable-blink-features=UAImageReplacementAPI, and the explicit negative that no chrome://flags entry exists (intent: 'no information provided'; runtime feature has no status field)." + }, + { + "dimension": "explanation-quality", + "score": 4, + "severity": "info", + "evidence": "why-it-exists grounds the API in the explainer's virtual try-on scenario and names the non-goals (no media access, no page-initiated replacement, no feature enumeration). Errors sections explain the deliberate absence of error signals (uareplaceend folds finish/fail/revert) and the undefined-vs-false feature-detection distinction.", + "notes": "" + }, + { + "dimension": "examples", + "score": 5, + "severity": "info", + "evidence": "Explainer example reproduced verbatim on the overview and events pages; additional capturing-listener page-wide pattern (with the mandatory capture:true called out) and a state-initialization example on the property page. Live showcase demo embedded as an iframe: /v152/user-agent-image-replacement-api/adapting-around-it/ HEAD-checked 200 on 2026-09-06 (all three concept routes 200).", + "notes": "" + }, + { + "dimension": "browser-compat-fallbacks", + "score": 4, + "severity": "minor", + "evidence": "Compat tables on all three pages carry explicit unknowns (Android/WebView/iOS unset in the OT stage; Edge no separate signal), the no-BCD/no-MDN/no-webstatus absences with check dates, and feature-detection guidance ('replacedByUserAgent' in HTMLImageElement.prototype, plus the falsy-undefined degradation note).", + "notes": "BCD keys should be linked once they exist; interim table labelled as such." + }, + { + "dimension": "links-validity", + "score": 5, + "severity": "info", + "evidence": "Every citation label is a direct link: explainer repo, Chromium IDL/impl/event-names/runtime-features files, ChromeStatus feature + API record, resolved blink-dev intent thread URL (https://groups.google.com/a/chromium.org/g/blink-dev/c/oe7phmFsyy8, resolved from the msgid redirect), OT console trial page (HEAD 200), tracking bug, wpt.fyi search, webstatus.dev query, origin-trials guide. Zero plain-text source labels. All external links target=_blank rel=noopener.", + "notes": "" + }, + { + "dimension": "accessibility", + "score": 5, + "severity": "info", + "evidence": "Single h1 and main landmark per page, sequential h2 outline, tables with caption + th scope, semantic pre/code, baseline banner role=note with aria-label, iframe with descriptive title attribute. The page also documents the feature's own a11y contract (UA may override alt text; authors update adjacent descriptions on the events).", + "notes": "" + }, + { + "dimension": "responsive-ux", + "score": 4, + "severity": "info", + "evidence": "Wide tables in .table-wrap{overflow-x:auto} with min-width+table-layout:fixed (house pattern); main{overflow-wrap:anywhere} so long code tokens (--enable-blink-features=UAImageReplacementAPI) wrap instead of clipping under body overflow-x:hidden; hints in long child-page h1s; iframe max-width:100%. Verified in headless-Chromium screenshots: 1280px desktop, 500px (headless min-window clamp), and true 360-CSS-px via --window-size=720 --force-device-scale-factor=2 (scratchpad shot-user-agent-image-replacement-api-{desktop,mobile360}.png, shot-uair-{500,events-mobile360,prop-mobile360,prop-desktop}.png) — no horizontal overflow, legible tables. Note: plain --window-size=360 screenshots clip on ALL gendn pages (headless Chrome clamps window width at 500px) — harness artifact, not page overflow.", + "notes": "Integrator re-runs the formal responsive matrix. The showcase iframe renders as a broken box in sandbox screenshots because headless Chromium in this sandbox cannot complete TLS to external hosts (net_error -101 via the agent proxy); the iframe src route is curl-verified 200 — re-verify visually in an unproxied environment." + }, + { + "dimension": "showcase-demo-relationship", + "score": 5, + "severity": "info", + "evidence": "Canonical CPS feature route and all three concept routes (adapting-around-it, surface-probe, what-breaks-silently) HEAD-checked 200 via curl (2026-09-06); the interactive 'adapting-around-it' concept route is embedded as the overview iframe, and the CPS feature index is linked in Examples and See also. Same feature id 5076374013476864 on both sites (grep-confirmed in the fetched CPS index).", + "notes": "The iframe's visual load could not be confirmed in-sandbox (headless Chromium TLS-to-external blocked by the agent proxy; route is curl-200) — integrator should confirm the frame renders." + } + ], + "guidanceConsulted": [ + { + "id": "accessibility", + "query": "responsive reference documentation table code blocks mobile overflow / iframe embed lazy loading accessible title", + "recommendation": "Place all content within landmarks; use h1-h6 sequentially; semantic tables with and ; use lists for repeated contiguous content; don't fake headings.", + "appliedOrException": "Applied on all three pages: single main landmark, one h1, sequential h2s, caption + th scope=col/row on every doc-table, ul/ol for member lists and lifecycle steps, iframe given a descriptive title.", + "evidence": "Page markup; headless screenshots scratchpad/shot-user-agent-image-replacement-api-{mobile,desktop}.png" + }, + { + "id": "css-layout", + "query": "responsive reference documentation table code blocks mobile overflow", + "recommendation": "Give long unbreakable content (URLs, code) shrink/wrap behavior and scrollable containment instead of letting it force page overflow; min-inline-size/overflow handling for long tokens.", + "appliedOrException": "Applied: .table-wrap{overflow-x:auto} with .doc-table{min-width:36rem;table-layout:fixed} so tables scroll in their own container at 360px; overflow-wrap:anywhere on table cells, code and h1; pre blocks rely on the shared stylesheet's scrolling; iframe max-width:100%.", + "evidence": "Inline styles per page; headless screenshots at 360x1600 and 1280x2400 confirm no page-level horizontal overflow" + } + ], + "openQuestions": [ + "The origin-trial console page for trial 1722063907515793409 is JS-rendered; the trial's exact registration end date could not be extracted programmatically — the 152-157 milestone range comes from the ChromeStatus stage record and intent thread.", + "What triggers replacement end is documented from current Chromium source (removal/document-move/source-change) but is explicitly UA-specific per the explainer — re-verify against the implementation if the trial graduates to an Intent to Ship.", + "A CSS :replaced-by-user-agent pseudo-class is listed in the explainer as a rejected-for-now alternative and possible future enhancement — watch for it appearing as a separate surface.", + "The intent thread includes API-owner discussion (Alex Russell, Sangwhan Moon, Rick Byers, Chris Harrelson) about interoperability of replacement semantics; if the explainer gains a registry of transformation kinds, the events may grow a payload." + ], + "followUpGoals": [ + { + "goal": "Re-check feature 5076374013476864 at each new milestone listing: if the origin trial converts to Intent to Ship (or is extended past 157), update the warn-block, baseline banner, and compat tables on all three pages.", + "kind": "targeted-fix", + "priority": "high" + }, + { + "goal": "Link BCD keys and MDN pages for replacedByUserAgent / uareplacestart_event / uareplaceend_event once they exist (all absent 2026-09-06), replacing the interim compat tables.", + "kind": "targeted-fix", + "priority": "medium" + }, + { + "goal": "If the proposal gains a formal spec document (currently explainer-only, 'Unknown status' maturity), swap the Specifications table to it and re-verify the member contracts against its IDL.", + "kind": "targeted-fix", + "priority": "medium" + }, + { + "goal": "Add a reference page for the :replaced-by-user-agent CSS pseudo-class if the explainer's noted future enhancement ships as a separate chromestatus feature.", + "kind": "additive-page", + "priority": "low", + "suggestedSlug": "replaced-by-user-agent-pseudo-class" + } + ] +} diff --git a/v152/user-agent-image-replacement-api/conformance.json b/v152/user-agent-image-replacement-api/conformance.json new file mode 100644 index 00000000..d09fcd30 --- /dev/null +++ b/v152/user-agent-image-replacement-api/conformance.json @@ -0,0 +1,222 @@ +{ + "schemaVersion": 1, + "id": "v152/user-agent-image-replacement-api", + "route": "/v152/user-agent-image-replacement-api/", + "identity": "5076374013476864", + "milestone": 152, + "status": "built", + "demo": "https://chrome-platform-showcase.paulkinlan-ea.deno.net/v152/user-agent-image-replacement-api/adapting-around-it/", + "cpsFeature": { + "host": "chrome-platform-showcase.paulkinlan-ea.deno.net", + "route": "/v152/user-agent-image-replacement-api/adapting-around-it/", + "conformanceRoute": "/v152/user-agent-image-replacement-api/adapting-around-it/conformance", + "note": "The chrome-platform-showcase suite at conformanceRoute governs only the assertions it explicitly lists; it does not prove unasserted native, hardware, permission, backend, or other behavior. gendn references that listed contract without forking it." + }, + "immutable": true, + "suiteHash": "0b8e8c376b114dbceb94539c1da19db019ca99cab6c797d86e7142874985ae53", + "generatedAt": "2026-07-19T00:00:00Z", + "author": "gen-conformance/v1 (derived from page metadata)", + "assertions": [ + { + "id": "route-resolves", + "category": "route", + "describe": "The stable route /v152/user-agent-image-replacement-api/ responds 200 (durable-demo contract).", + "kind": "http-status", + "test": "/v152/user-agent-image-replacement-api/", + "expect": 200, + "deviceClass": "both" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "describe": "Page carries its canonical chromestatus.com/feature/5076374013476864 link — the immutable feature identity (CLAUDE.md invariant #3) and the milestone-152 mapping's self-heal.", + "kind": "dom-query", + "selector": "a[href*=\"chromestatus.com/feature/5076374013476864\"]", + "deviceClass": "both" + }, + { + "id": "title-nonempty", + "category": "structure", + "describe": "Document has a non-empty for the reference page.", + "kind": "js-eval", + "test": "document.title.trim().length > 0", + "deviceClass": "both" + }, + { + "id": "single-h1", + "category": "structure", + "describe": "Exactly one <h1> — the API name (listing name), MDN-shaped article heading.", + "kind": "js-eval", + "test": "document.querySelectorAll('h1').length === 1", + "deviceClass": "both" + }, + { + "id": "main-landmark", + "category": "a11y", + "describe": "A single <main> landmark wraps the article content.", + "kind": "js-eval", + "test": "document.querySelectorAll('main').length === 1", + "deviceClass": "both" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "describe": "Shared editorial design system /public/styles.css is linked.", + "kind": "dom-query", + "selector": "link[rel=\"stylesheet\"][href=\"/public/styles.css\"]", + "deviceClass": "both" + }, + { + "id": "viewport-meta", + "category": "responsive", + "describe": "Responsive viewport meta present (width=device-width) for mobile+desktop parity.", + "kind": "dom-query", + "selector": "meta[name=\"viewport\"]", + "deviceClass": "both" + }, + { + "id": "crumb-to-release", + "category": "structure", + "describe": "Breadcrumb links back to the /v152/ release index.", + "kind": "dom-query", + "selector": "a[href=\"/v152/\"]", + "deviceClass": "both" + }, + { + "id": "byline-footer", + "category": "structure", + "describe": "Byline footer present (article provenance).", + "kind": "dom-query", + "selector": ".byline", + "deviceClass": "both" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "describe": "Every target=_blank link carries rel=noopener (no reverse-tabnabbing; MDN-style external link hygiene).", + "kind": "js-eval", + "test": "[...document.querySelectorAll('a[target=\"_blank\"]')].every(el => (el.rel||'').includes('noopener'))", + "deviceClass": "both" + }, + { + "id": "no-empty-anchors", + "category": "links", + "describe": "No anchor has an empty or placeholder (#) href.", + "kind": "js-eval", + "test": "[...document.querySelectorAll('a')].every(el => { const h = el.getAttribute('href'); return h && h !== '#'; })", + "deviceClass": "both" + }, + { + "id": "no-console-errors", + "category": "runtime", + "describe": "Page loads with no console errors.", + "kind": "no-console-errors", + "deviceClass": "both" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "describe": "No failed (>=400 / net-error) network requests on load.", + "kind": "no-failed-requests", + "deviceClass": "both" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "describe": "No unintended horizontal overflow at desktop (1280x800).", + "kind": "js-eval", + "test": "document.documentElement.scrollWidth <= (window.innerWidth + 1)", + "deviceClass": "desktop" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "describe": "No unintended horizontal overflow at narrow mobile (360x740, DPR3).", + "kind": "js-eval", + "test": "document.documentElement.scrollWidth <= (window.innerWidth + 1)", + "deviceClass": "mobile" + }, + { + "id": "legible-desktop", + "category": "responsive", + "describe": "Desktop render is legible, contrast passes WCAG AA, controls/text not clipped (screenshot review).", + "kind": "manual-evidenced", + "deviceClass": "desktop" + }, + { + "id": "legible-mobile", + "category": "responsive", + "describe": "Mobile render is legible with adequate tap targets and no clipped text/controls (screenshot review).", + "kind": "manual-evidenced", + "deviceClass": "mobile" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "describe": "The <h1> is the chromestatus milestone-listing name for this feature (not the broader detail name) — factual/source fidelity.", + "kind": "manual-evidenced", + "deviceClass": "n/a" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "describe": "Frontend implementation consulted modern-web-guidance for its UI/responsive/a11y topics and applied or justified them (recorded in _questions.json guidanceConsulted).", + "kind": "manual-evidenced", + "deviceClass": "n/a" + }, + { + "id": "min-sections", + "category": "structure", + "describe": "Built reference has at least three <h2> sections (MDN-shaped depth).", + "kind": "js-eval", + "test": "document.querySelectorAll('main h2').length >= 3", + "deviceClass": "both" + }, + { + "id": "browser-support-section", + "category": "content", + "describe": "Cross-browser support is documented (a support/compat/baseline section, or a reference table stating Baseline / Shipped-in / standards positions) — accurate messaging, not implied support.", + "kind": "js-eval", + "test": "[...document.querySelectorAll('main h2')].some(h => /support|compat|baseline|availab|standards? position/i.test(h.textContent)) || /baseline|shipped in|standards? position|cross-browser|browser compat/i.test(document.querySelector('main').textContent)", + "deviceClass": "both" + }, + { + "id": "example-surface-present", + "category": "content", + "describe": "Built reference includes a usable example surface (<pre> code and/or a live embed).", + "kind": "js-eval", + "test": "!!document.querySelector('main pre, main iframe')", + "deviceClass": "both" + }, + { + "id": "code-example-integrity", + "category": "content", + "describe": "Code/IDL examples are correctly escaped (no attribute/element injection, invariant #4) and trace to the cited spec/IDL — no invented members (source review).", + "kind": "manual-evidenced", + "deviceClass": "n/a" + }, + { + "id": "warn-block-experimental", + "category": "content", + "describe": "Experimental / origin-trial / behind-a-flag feature shows the mandatory .warn-block with enable steps (CLAUDE.md invariant #7).", + "kind": "dom-query", + "selector": ".warn-block", + "deviceClass": "both" + }, + { + "id": "demo-embed-own-feature", + "category": "demo-link", + "describe": "Embedded live example points at THIS feature's chrome-platform-showcase route (chrome-platform-showcase.paulkinlan-ea.deno.net/v152/user-agent-image-replacement-api...) — the canonical demo identity, never repointed.", + "kind": "js-eval", + "test": "[...document.querySelectorAll('iframe')].some(f => (f.src||'').includes('chrome-platform-showcase.paulkinlan-ea.deno.net/v152/user-agent-image-replacement-api'))", + "deviceClass": "both" + }, + { + "id": "demo-embed-loads", + "category": "interaction", + "describe": "The embedded chrome-platform-showcase demo actually renders (not a blank box or error frame); its platform behavior is governed by the CPS conformance contract referenced in cpsFeature, not re-asserted here.", + "kind": "manual-evidenced", + "deviceClass": "desktop" + } + ] +} diff --git a/v152/user-agent-image-replacement-api/events/index.html b/v152/user-agent-image-replacement-api/events/index.html new file mode 100644 index 00000000..35070c62 --- /dev/null +++ b/v152/user-agent-image-replacement-api/events/index.html @@ -0,0 +1,170 @@ +<!doctype html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>uareplacestart and uareplaceend events — User Agent Image Replacement API — Chrome 152 — gendn + + + + +
+

← User Agent Image Replacement API

+ +
+

v152 · web api · event reference · origin trial

+

uareplacestart / uareplaceend events

+

The two lifecycle signals of the User Agent Image Replacement API, fired at an <img> element: uareplacestart when the user agent begins substituting the image's content, uareplaceend when the substitution finishes, fails, or is reverted. Both are plain, non-bubbling Events with no payload — the element's replacedByUserAgent property carries the state.

+
+ +
+ Origin trial — API surface may change + These events fire only in the Chrome 152–157 desktop origin trial (token via Origin-Trial header or meta tag) or locally with --enable-blink-features=UAImageReplacementAPI. There is no chrome://flags entry. Full enable steps are on the feature overview. +
+ +
+

Syntax

+

Handler attributes, verbatim from Chromium's html_image_element.idl (fetched 2026-09-06):

+
[RuntimeEnabled=UAImageReplacementAPI] attribute EventHandler onuareplacestart;
+[RuntimeEnabled=UAImageReplacementAPI] attribute EventHandler onuareplaceend;
+

Listener form (equivalent; the type strings "uareplacestart" and "uareplaceend" are registered verbatim in Blink's event_type_names.json5):

+
img.addEventListener("uareplacestart", (event) => { /* replacement began */ });
+img.addEventListener("uareplaceend",   (event) => { /* finished, failed, or reverted */ });
+
+img.onuareplacestart = (event) => { /* handler-attribute form */ };
+img.onuareplaceend   = (event) => { /* handler-attribute form */ };
+ Source: Chromium html_image_element.idl; Chromium event_type_names.json5; Explainer — proposed approach. +
+ +
+

Inputs

+

The events take no inputs from the page and carry no configuration. Nothing a page does can cause them to fire: replacement is initiated only by a browser feature acting on explicit user intent or user-configured browser policy (an explainer MUST — pages cannot probe for replacement capability by observing side effects). The handler receives a single argument, a plain Event whose type is "uareplacestart" or "uareplaceend" and whose target is the affected <img> element.

+ Source: Explainer — anti-fingerprinting requirement; Chromium html_image_element.cc — Event::Create with no payload. +
+ +
+

Outputs

+

Each event is a notification only; the observable outputs are the event object itself and the element state it points at:

+
+ + + + + + + + +
Event characteristics (Chromium implementation, fetched 2026-09-06)
Characteristicuareplacestartuareplaceend
MeaningUser agent began substituting the image contentSubstitution finished, failed, or was reverted
InterfaceEvent (no subclass, no extra members)Event (no subclass, no extra members)
Bubbles / cancelable / composedno / no / nono / no / no
DispatchQueued as a DOM-manipulation task (asynchronous)Queued as a DOM-manipulation task (asynchronous)
target.replacedByUserAgent in the handlertruefalse
+
+

Cancelling is impossible (preventDefault() is a no-op): the API observes the user's replacement, it does not arbitrate it.

+ Source: Chromium html_image_element.cc — EnqueueEvent(*Event::Create(…), TaskType::kDOMManipulation); Explainer — proposed approach. +
+ +
+

Errors

+

Neither event reports errors, and no error event variant exists. A failed replacement is folded into uareplaceend — the explainer defines the end event as firing “when the substitution finishes, fails, or is reverted”, and the page cannot distinguish the three cases. If the events never fire at all, either no replacement occurred, the runtime feature is disabled (no origin-trial token or flag), or the user agent chose to withhold notification — the API defines no way to tell these apart, by design.

+ Source: Explainer — proposed approach, privacy goals; Chromium runtime_enabled_features.json5. +
+ +
+

Context

+

Fired at HTMLImageElement in Window contexts where the UAImageReplacementAPI runtime feature is enabled (origin-trial token during Chrome 152–157, or --enable-blink-features=UAImageReplacementAPI); the implementation checks the feature per execution context before enqueuing either event. Because they do not bubble, listen on the element itself, or use a capturing listener on document to observe all images at once — the capture phase passes through ancestors even for non-bubbling events. This is the pattern the explainer recommends for site-wide tracking.

+ Source: Chromium html_image_element.cc — RuntimeEnabledFeatures check; Explainer — capturing-listener pattern; ChromeStatus API record — origin-trial stage. +
+ +
+

Lifecycle

+

Per replacement episode, the events come in ordered pairs around the replaced period:

+
    +
  1. uareplacestart is queued when the element's disposition switches to replacement. State has already flipped: replacedByUserAgent is true inside the handler.
  2. +
  3. The replaced period lasts as long as the user agent presents substitute content.
  4. +
  5. uareplaceend is queued when the disposition resets. In current Chromium that is: the feature finishing/failing/reverting, the element being removed from a connected document, the element moving to another document, or a source change (src/srcset/<picture> re-selection) whose URL leaves the replaced original's candidate set. What ends a replacement is ultimately user-agent- and feature-specific — the explainer leaves it open.
  6. +
+

Because a replacement can start before your script loads, pairing the events with an initial replacedByUserAgent check is required for correct state initialization.

+ Source: Chromium html_image_element.cc — StartImageReplacement, ResetImageReplacement, RemovedFrom, DidMoveToNewDocument, ResetLayoutDisposition; Explainer — proposed approach. +
+ +
+

Examples

+

Element-scoped handling (the explainer's zoom-lens example, verbatim):

+
const imageEl = document.querySelector('img.product-view');
+const zoomLens = document.querySelector('.zoom-lens');
+
+imageEl.addEventListener('uareplacestart', () => {
+  zoomLens.style.display = 'none';
+});
+imageEl.addEventListener('uareplaceend', () => {
+  zoomLens.style.display = 'block';
+});
+if (imageEl.replacedByUserAgent) {
+  zoomLens.style.display = 'none';
+}
+

Document-wide analytics with a capturing listener (capture is mandatory — the events do not bubble):

+
document.addEventListener("uareplacestart", ({ target }) => {
+  analytics.track("ua-image-replacement", { src: target.currentSrc });
+  target.addEventListener(
+    "uareplaceend",
+    () => analytics.track("ua-image-replacement-end", { src: target.currentSrc }),
+    { once: true },
+  );
+}, { capture: true });
+ Source: Explainer — example and capturing-listener pattern. +
+ +
+

Compatibility

+
+ + + + + + + +
uareplacestart / uareplaceend — checked 2026-09-06
Engine / runtimeSupportNotes
Chrome (desktop)Origin trial 152–157Requires token or --enable-blink-features=UAImageReplacementAPI; feature status “Proposed” (ChromeStatus API record; Intent to Experiment)
Chrome (Android / WebView / iOS)UnknownOrigin-trial stage lists desktop milestones only
Firefox / SafariNot supportedVendor positions “No signal” (ChromeStatus record)
BCD / MDNNo entryNo BCD keys, MDN event pages 404 (2026-09-06) — interim table from ChromeStatus + Chromium source
+
+ Source: ChromeStatus API feature record; MDN/BCD checks 2026-09-06. +
+ +
+

Security and privacy

+

The events fire only for replacements initiated by explicit user intent or user-configured browser policy — never speculatively, so pages cannot use them to probe which replacement capabilities a browser has. They disclose timing only, no media: the substitute content stays isolated from the page (in Chromium, a UA shadow-root iframe), and a user agent may withhold the events entirely when the fact of replacement is sensitive. A future optional enhancement might describe the kind of replacement; today the events deliberately carry nothing.

+ Source: Explainer — privacy & security considerations, non-goals; Chromium html_image_element.cc. +
+ +
+

See also

+ +
+ + +
+ + diff --git a/v152/user-agent-image-replacement-api/index.html b/v152/user-agent-image-replacement-api/index.html new file mode 100644 index 00000000..74f18250 --- /dev/null +++ b/v152/user-agent-image-replacement-api/index.html @@ -0,0 +1,263 @@ + + + + + + User Agent Image Replacement API — Chrome 152 — gendn + + + + +
+

← Chrome 152 reference

+ +
+

v152 · web api · origin trial

+

User Agent Image Replacement API

+ +
+

Limited availability — origin trial

+
    +
  • Chrome · origin trial 152–157 (desktop)
  • +
  • Edge · no separate signal (Chromium-based)
  • +
  • Firefox · no signal
  • +
  • Safari · no signal
  • +
+

Not on the Baseline register: a webstatus.dev query returns no matching web-feature entry (checked 2026-09-06). Chrome-only, behind an origin trial; the ChromeStatus record lists Firefox and Safari positions as “No signal” and overall Chrome status as “Proposed”.

+
+ +

Three small additions to HTMLImageElement that let a page observe when the browser replaces an image's content on the user's behalf (for example, a generative-AI virtual try-on render substituted for a product photo): a replacedByUserAgent read-only boolean, and uareplacestart and uareplaceend events. The page cannot trigger, block, or read the replacement — it can only react, for example by hiding a zoom overlay or size caption that no longer matches what the user sees.

+
+ +
+ Origin trial — API surface may change + This feature is in a Chrome origin trial from Chrome 152 to Chrome 157 (desktop; the ChromeStatus API record lists desktop milestones only). Its overall status is “Proposed” and the explainer states it “has not been approved to ship in Chrome” — names and behavior may change or the API may be withdrawn. Do not ship production code that depends on it without feature detection. Exact enable steps: +
    +
  1. Origin trial (for your site's visitors): register your origin for the “User Agent Image Replacement API” trial and serve the token with your pages — either the HTTP response header Origin-Trial: <token> or <meta http-equiv="origin-trial" content="<token>"> in the document <head> (see the origin-trials guide).
  2. +
  3. Local testing: launch Chrome 152+ with --enable-blink-features=UAImageReplacementAPI. The Blink runtime feature is UAImageReplacementAPI (origin_trial_feature_name: "UAImageReplacementAPI" in runtime_enabled_features.json5, fetched 2026-09-06).
  4. +
  5. No chrome://flags entry: the Intent to Experiment answers “Flag name on about://flags” with “No information provided”, and the runtime-feature entry carries no status field — so the generic “Experimental Web Platform features” flag does not enable it. Only an origin-trial token or the --enable-blink-features switch does.
  6. +
  7. Feature-detect before use: if ("replacedByUserAgent" in HTMLImageElement.prototype) { … }.
  8. +
+
+ +
+

at a glance

+
+ + + + + + + + + + +
AvailabilityChrome origin trial 152–157, desktop (ChromeStatus origin-trial stage); overall status “Proposed”
Runtime featureUAImageReplacementAPI — origin-trial gated, no default-on status (runtime_enabled_features.json5)
SurfaceHTMLImageElement extension: replacedByUserAgent (read-only boolean), uareplacestart / uareplaceend events with onuareplacestart / onuareplaceend handler attributes (html_image_element.idl)
SpecNo formal specification yet — the ChromeStatus record's spec link is the explainer repository (“Unknown status” maturity)
Explainerexplainers-by-googlers/ua-image-replacement (author: Jeremy Roman, Google)
Intent to Experimentblink-dev thread, August 2026
TAG reviewNone as yet — the ChromeStatus record says “API shape is trivial, API owner discretion needed on whether this requires review” (status Pending)
Tracking bugissues.chromium.org/544822216
ChromeStatus5076374013476864 — User Agent Image Replacement API
+
+
+ +
+

why it exists

+

Browsers are growing features that modify media in the page on the user's behalf — the explainer's motivating example is a Chrome generative-AI feature that lets a user replace a product photo (a model wearing a jacket) with a render of themselves wearing it. The replacement happens inside browser-controlled UI; the page never initiates it and cannot see the replacement pixels. But surrounding page content can now be wrong: a “model is 6′1″ wearing size M” caption, a custom zoom lens that re-renders the original image, analytics that assume the product photo is what the user is looking at.

+

This API gives authors the minimal observation primitive to fix that: know when replacement starts and ends, and whether a given image is currently replaced — nothing more. The explainer records that sites affected by Chrome's image-replacement features asked for exactly this, both to avoid confusing UX and to understand how users of these features interact with their pages. Explicit non-goals: no access to the replacement media, no page-initiated replacement, and no enumeration of which replacement feature is running (left out for privacy and compatibility reasons).

+ Source: Explainer — introduction, user-facing problem, goals and non-goals; chromestatus.com/feature/5076374013476864. +
+ +
+

Syntax

+

The shipping Chromium IDL, verbatim from html_image_element.idl (fetched 2026-09-06 — there is no formal spec IDL; the explainer describes the same three members in prose):

+
// partial view of interface HTMLImageElement
+[RuntimeEnabled=UAImageReplacementAPI, Measure] readonly attribute boolean replacedByUserAgent;
+[RuntimeEnabled=UAImageReplacementAPI] attribute EventHandler onuareplacestart;
+[RuntimeEnabled=UAImageReplacementAPI] attribute EventHandler onuareplaceend;
+

Listener form (equivalent to the handler attributes):

+
img.addEventListener("uareplacestart", (event) => { /* replacement began */ });
+img.addEventListener("uareplaceend",   (event) => { /* finished, failed, or reverted */ });
+if (img.replacedByUserAgent) { /* currently showing substitute content */ }
+

Both events are plain Event objects — created with Event::Create(…), so bubbles, cancelable, and composed are all false — and are queued on the <img> element as DOM-manipulation tasks (asynchronous dispatch). The event type names uareplacestart and uareplaceend are registered verbatim in Blink's event_type_names.json5.

+ Source: Chromium html_image_element.idl; Chromium html_image_element.cc — StartImageReplacement, ResetImageReplacement; Explainer — proposed approach. +
+ +
+

Members

+

The complete developer-facing surface is three members on HTMLImageElement, each with a full reference page:

+ + Source: Explainer — proposed approach; Chromium html_image_element.idl. +
+ +
+

Context

+

Exposure: the three members live on HTMLImageElement (<img> only — not <picture>, not CSS background images), in Window contexts where HTMLImageElement is exposed. They exist only when the UAImageReplacementAPI runtime feature is enabled for the execution context — via origin-trial token or the --enable-blink-features=UAImageReplacementAPI switch (see the enable steps above); the implementation checks RuntimeEnabledFeatures::UAImageReplacementAPIEnabled(GetExecutionContext()) before dispatching either event.

+

Non-bubbling events: because the events are plain non-bubbling Events, a bubble-phase listener on document never sees them. To track replacements across a whole page, the explainer recommends a capturing listener on the document for uareplacestart (capture reaches the target even for non-bubbling events), then observing uareplaceend on each affected element.

+

What the page never learns: which browser feature performed the replacement, or the replacement pixels. In the current Chromium implementation the substitute content is presented in a user-agent shadow root containing an iframe, isolated from the page (ReplacementFrameToken() in html_image_element.cc); canvas readback of the <img> reflects the original resource. Whether pages are notified at all is user-agent (even per-feature) specific — a browser may withhold these signals when the replacement is sensitive.

+ Source: Chromium html_image_element.cc; Chromium runtime_enabled_features.json5; Explainer — proposed approach, privacy goals. +
+ +
+

Lifecycle

+

An <img> element's replacement state, as implemented in Chromium (the explainer deliberately leaves when replacement occurs, and what ends it, to the user agent — the following traces the current implementation, fetched 2026-09-06):

+
    +
  1. Normal: the element shows its own content; replacedByUserAgent is false. Replacement only ever starts from a browser feature acting on explicit user intent — never from page code, and only for an image that has loaded successfully.
  2. +
  3. Replacement starts: the element's layout switches to a replacement disposition and a uareplacestart event is queued. From this point replacedByUserAgent reports true.
  4. +
  5. Replaced: the substitute content renders in browser-controlled UI (a UA shadow-root iframe) in the element's place. The element's own DOM (src, currentSrc, natural sizes) still describes the original image.
  6. +
  7. Replacement ends: the disposition resets and a uareplaceend event is queued; replacedByUserAgent returns to false. In the current implementation this happens when the user reverts or the feature finishes/fails, and also when the document changes under the element: removal from a connected document, moving the element to another document, or a source change (new src/srcset selection) whose URL no longer matches the replaced original or its <picture> candidate set.
  8. +
+

Exactly which user actions or browser features trigger steps 2 and 4 is not part of the API contract — the explainer states that when replacement occurs, what ends it, and whether the page is notified at all are user-agent- and feature-specific.

+ Source: Chromium html_image_element.cc — StartImageReplacement, ResetImageReplacement, ResetLayoutDisposition, RemovedFrom, DidMoveToNewDocument; Explainer — proposed approach. +
+ +
+

Errors

+

The API surface throws nothing and reports no error objects. Reading replacedByUserAgent is an infallible boolean getter, and the events carry no failure detail: a replacement that fails is signalled the same way as one that finishes or is reverted — a single uareplaceend event. The page cannot distinguish the three outcomes; after uareplaceend the observable truth is simply that the element is showing its own content again (replacedByUserAgent === false).

+

On builds where the feature is disabled (no origin-trial token, no flag — see the at-a-glance table), the three members are absent entirely: img.replacedByUserAgent is undefined, and the events never fire. That absence is the feature-detection signal, not an error.

+ Source: Chromium html_image_element.idl — no exceptions declared; Explainer — uareplaceend covers “finishes, fails, or is reverted”. +
+ +
+

Examples

+

The explainer's worked example, verbatim: an e-commerce page disables its custom zoom lens while a virtual try-on render is displayed, because the lens would re-render the original image and confuse the user.

+
const imageEl = document.querySelector('img.product-view');
+const zoomLens = document.querySelector('.zoom-lens');
+
+// Listen for replacement start
+imageEl.addEventListener('uareplacestart', () => {
+  // Temporarily disable custom interactive zoom while substitution is in progress
+  zoomLens.style.display = 'none';
+});
+
+// Listen for replacement end
+imageEl.addEventListener('uareplaceend', () => {
+  // Re-enable interactive zoom if replacement was reverted or canceled
+  zoomLens.style.display = 'block';
+});
+
+// Check if the replacement happened before this script executed.
+if (imageEl.replacedByUserAgent) {
+  zoomLens.style.display = 'none';
+}
+

Page-wide tracking with a capturing listener (the pattern the explainer recommends, needed because the events don't bubble):

+
document.addEventListener("uareplacestart", (event) => {
+  const img = event.target;             // the replaced <img>
+  img.closest("figure")?.classList.add("ua-replaced");
+  img.addEventListener("uareplaceend", () => {
+    img.closest("figure")?.classList.remove("ua-replaced");
+  }, { once: true });
+}, { capture: true });                  // capture: true is required — no bubbling
+
+ +
Live example from the Chrome Platform Showcase: a product page that adapts when the browser replaces its image (route HEAD-checked 200, 2026-09-06). Source: chrome-platform-showcase — User Agent Image Replacement API
+
+ Source: Explainer — example; showcase routes HEAD-checked 2026-09-06. +
+ +
+

Accessibility

+

When the user agent replaces an image's visual content, the original alt text may describe the wrong picture. The explainer says the UA may override the accessible description (alt text or ARIA attributes) so assistive technologies convey the substitute content accurately. Authors should still treat replacement as a cue to review their own adjacent text: captions, figure descriptions, and aria-describedby targets that reference the original image content are the page's responsibility, and these events are the hook for updating them.

+ Source: Explainer — accessibility considerations. +
+ +
+

Web platform tests

+

None. The Intent to Experiment answers “fully tested by web-platform-tests: No”, and a wpt.fyi search for “uareplace” returns zero tests (checked 2026-09-06) — consistent for an API whose trigger is a browser feature that WPT cannot drive.

+ Source: blink-dev Intent to Experiment; wpt.fyi search 2026-09-06. +
+ +
+

Browser compatibility

+
+ + + + + + + + + +
User Agent Image Replacement API — checked 2026-09-06
Engine / runtimeSupportNotes
Chrome (desktop)Origin trial 152–157Token or --enable-blink-features=UAImageReplacementAPI required; not enabled by default anywhere. Overall status “Proposed” (ChromeStatus API record)
Chrome (Android / WebView / iOS)Unknown — no trial milestonesThe origin-trial stage lists desktop milestones only; Android, WebView, and iOS fields are unset in the ChromeStatus record
EdgeUnknownChromium-based, but origin-trial registration is Chrome's; no separate Edge signal
FirefoxNot supportedVendor position “No signal” (ChromeStatus record)
SafariNot supportedVendor position “No signal” (ChromeStatus record)
BCDNo entryNo replacedByUserAgent/uareplace* keys in browser-compat-data api/HTMLImageElement.json as of 2026-09-06 — this table is interim, built from the ChromeStatus record and Chromium source, labelled as such
+
+

MDN has no page for any of the three members (HTMLImageElement/replacedByUserAgent and both event pages 404, checked 2026-09-06), which is why this reference exists. Always feature-detect: "replacedByUserAgent" in HTMLImageElement.prototype.

+ Source: ChromeStatus API feature record; Chromium runtime_enabled_features.json5; MDN HEAD checks 2026-09-06. +
+ +
+

Security and privacy

+
    +
  • Anti-fingerprinting: the explainer requires that uareplacestart / uareplaceend fire only when an actual replacement is initiated by explicit user intent or user-configured browser policy — pages MUST NOT be able to probe for replacement capability by observing side effects. A user who never invokes a replacement feature is indistinguishable from a browser without the API's triggers.
  • +
  • Replacement isolation is the feature's job, not this API's: the API only reports lifecycle transitions. For privacy-sensitive transformations (e.g. virtual try-on using the user's photo) the user agent is expected to isolate the substitute image so page scripts cannot read it — in Chromium via a UA shadow-root iframe, with canvas pixel readback reflecting only the original resource. Non-sensitive transformations (colorization, upscaling) may not need isolation; the user agent judges per feature.
  • +
  • Information can be withheld: a user agent may decline to fire these events at all when the fact of replacement is itself sensitive — the privacy goal explicitly empowers UAs to limit what the page learns per their own stance and user preferences.
  • +
  • Minimal disclosure by design: no enumeration of which replacement feature ran (a possible future, explicitly optional enhancement), no replacement media access, no page-initiated replacement.
  • +
+ Source: Explainer — privacy & security considerations, goals, non-goals; Chromium html_image_element.cc — UA shadow-root presentation. +
+ +
+

Specifications

+
+ + + + +
SpecificationStatus
User Agent Image Replacement API explainer (explainers-by-googlers)Explainer only — the ChromeStatus record lists it as the spec link with “Unknown status” maturity; no standards-track document exists yet (checked 2026-09-06)
HTML Standard — the img elementLiving Standard (the host interface these members extend; the extension itself is not in the HTML spec)
+
+
+ +
+

See also

+ +
+ + +
+ + diff --git a/v152/user-agent-image-replacement-api/reference-contract.json b/v152/user-agent-image-replacement-api/reference-contract.json new file mode 100644 index 00000000..4e0172f7 --- /dev/null +++ b/v152/user-agent-image-replacement-api/reference-contract.json @@ -0,0 +1,361 @@ +{ + "schemaVersion": 1, + "id": "v152/user-agent-image-replacement-api", + "route": "/v152/user-agent-image-replacement-api/", + "kind": "web-api", + "completeness": "implementation-sufficient", + "assessedAt": "2026-09-06", + "assessor": "leaf-reference writer (weekly hardening run, 2026-09-06): surface derived verbatim from the explainer, the shipping Chromium IDL (html_image_element.idl), the implementation (html_image_element.cc), event_type_names.json5, runtime_enabled_features.json5, the ChromeStatus API record, and the blink-dev Intent to Experiment; independent review still required", + "sources": [ + { + "id": "explainer", + "label": "User Agent Image Replacement API explainer (explainers-by-googlers/ua-image-replacement) — the ChromeStatus record's spec link; defines the three members, goals/non-goals, privacy/anti-fingerprinting requirements, accessibility note", + "url": "https://github.com/explainers-by-googlers/ua-image-replacement", + "kind": "explainer" + }, + { + "id": "chromium-idl", + "label": "Chromium html_image_element.idl — verbatim member declarations: [RuntimeEnabled=UAImageReplacementAPI, Measure] readonly attribute boolean replacedByUserAgent; onuareplacestart / onuareplaceend EventHandler attributes", + "url": "https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/core/html/html_image_element.idl", + "kind": "web-idl" + }, + { + "id": "chromium-cc", + "label": "Chromium html_image_element.cc — StartImageReplacement/ResetImageReplacement (Event::Create + EnqueueEvent(TaskType::kDOMManipulation)), replacedByUserAgent()/HasImageReplacement(), reset triggers (RemovedFrom, DidMoveToNewDocument, ResetLayoutDisposition candidate-set check), UA shadow-root iframe presentation", + "url": "https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/core/html/html_image_element.cc", + "kind": "implementation" + }, + { + "id": "event-names", + "label": "Chromium event_type_names.json5 — registers the literal event type strings \"uareplacestart\" and \"uareplaceend\"", + "url": "https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/core/events/event_type_names.json5", + "kind": "implementation" + }, + { + "id": "runtime-features", + "label": "Chromium runtime_enabled_features.json5 — UAImageReplacementAPI entry with origin_trial_feature_name and no status field (not enabled by default anywhere)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/platform/runtime_enabled_features.json5", + "kind": "implementation" + }, + { + "id": "chromestatus", + "label": "ChromeStatus — User Agent Image Replacement API (5076374013476864); status Proposed, Firefox/Safari No signal", + "url": "https://chromestatus.com/feature/5076374013476864", + "kind": "other" + }, + { + "id": "chromestatus-api", + "label": "ChromeStatus API feature record 5076374013476864 — origin-trial stage desktop 152–157, origin_trial_id 1722063907515793409, TAG review 'none as yet' (Pending)", + "url": "https://chromestatus.com/api/v0/features/5076374013476864", + "kind": "other" + }, + { + "id": "intent", + "label": "blink-dev — Intent to Experiment: User Agent Image Replacement API (August 2026; OT desktop 152–157; WPT: No; about://flags name: no information provided)", + "url": "https://groups.google.com/a/chromium.org/g/blink-dev/c/oe7phmFsyy8", + "kind": "intent" + }, + { + "id": "ot-console", + "label": "Chrome Origin Trials console — trial 1722063907515793409 (registration for the User Agent Image Replacement API trial)", + "url": "https://developer.chrome.com/origintrials/#/view_trial/1722063907515793409", + "kind": "other" + }, + { + "id": "crbug", + "label": "Chromium tracking bug 544822216", + "url": "https://issues.chromium.org/issues/544822216", + "kind": "other" + } + ], + "inventory": [ + { + "id": "replacedbyuseragent-property", + "name": "HTMLImageElement.replacedByUserAgent (readonly attribute boolean)", + "kind": "property", + "sourceRefs": ["chromium-idl", "chromium-cc", "explainer"] + }, + { + "id": "uareplacestart-event", + "name": "uareplacestart event", + "kind": "event", + "sourceRefs": ["explainer", "chromium-idl", "chromium-cc", "event-names"] + }, + { + "id": "uareplaceend-event", + "name": "uareplaceend event", + "kind": "event", + "sourceRefs": ["explainer", "chromium-idl", "chromium-cc", "event-names"] + }, + { + "id": "onuareplacestart-handler", + "name": "HTMLImageElement.onuareplacestart (EventHandler attribute)", + "kind": "property", + "sourceRefs": ["chromium-idl", "event-names"] + }, + { + "id": "onuareplaceend-handler", + "name": "HTMLImageElement.onuareplaceend (EventHandler attribute)", + "kind": "property", + "sourceRefs": ["chromium-idl", "event-names"] + } + ], + "documentation": [ + { + "inventoryId": "replacedbyuseragent-property", + "href": "replacedbyuseragent/", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#syntax", + "sourceRefs": ["chromium-idl", "explainer"] + }, + "inputs": { + "status": "documented", + "selector": "#inputs", + "sourceRefs": ["chromium-idl"] + }, + "outputs": { + "status": "documented", + "selector": "#outputs", + "sourceRefs": ["chromium-cc"] + }, + "errors": { + "status": "documented", + "selector": "#errors", + "sourceRefs": ["chromium-idl", "runtime-features"] + }, + "context": { + "status": "documented", + "selector": "#context", + "sourceRefs": ["runtime-features", "explainer", "chromestatus-api"] + }, + "lifecycle": { + "status": "documented", + "selector": "#lifecycle", + "sourceRefs": ["chromium-cc", "explainer"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["explainer"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": ["chromestatus-api", "chromestatus", "intent"] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["explainer", "chromium-cc"] + } + } + }, + { + "inventoryId": "uareplacestart-event", + "href": "events/", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#syntax", + "sourceRefs": ["chromium-idl", "event-names", "explainer"] + }, + "inputs": { + "status": "documented", + "selector": "#inputs", + "sourceRefs": ["explainer", "chromium-cc"] + }, + "outputs": { + "status": "documented", + "selector": "#outputs", + "sourceRefs": ["chromium-cc", "explainer"] + }, + "errors": { + "status": "documented", + "selector": "#errors", + "sourceRefs": ["explainer", "runtime-features"] + }, + "context": { + "status": "documented", + "selector": "#context", + "sourceRefs": ["chromium-cc", "explainer", "chromestatus-api"] + }, + "lifecycle": { + "status": "documented", + "selector": "#lifecycle", + "sourceRefs": ["chromium-cc", "explainer"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["explainer"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": ["chromestatus-api", "chromestatus", "intent"] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["explainer", "chromium-cc"] + } + } + }, + { + "inventoryId": "uareplaceend-event", + "href": "events/", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#syntax", + "sourceRefs": ["chromium-idl", "event-names", "explainer"] + }, + "inputs": { + "status": "documented", + "selector": "#inputs", + "sourceRefs": ["explainer", "chromium-cc"] + }, + "outputs": { + "status": "documented", + "selector": "#outputs", + "sourceRefs": ["chromium-cc", "explainer"] + }, + "errors": { + "status": "documented", + "selector": "#errors", + "sourceRefs": ["explainer", "runtime-features"] + }, + "context": { + "status": "documented", + "selector": "#context", + "sourceRefs": ["chromium-cc", "explainer", "chromestatus-api"] + }, + "lifecycle": { + "status": "documented", + "selector": "#lifecycle", + "sourceRefs": ["chromium-cc", "explainer"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["explainer"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": ["chromestatus-api", "chromestatus", "intent"] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["explainer", "chromium-cc"] + } + } + }, + { + "inventoryId": "onuareplacestart-handler", + "href": "events/", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#syntax", + "sourceRefs": ["chromium-idl", "event-names"] + }, + "inputs": { + "status": "documented", + "selector": "#inputs", + "sourceRefs": ["chromium-cc"] + }, + "outputs": { + "status": "documented", + "selector": "#outputs", + "sourceRefs": ["chromium-cc"] + }, + "errors": { + "status": "documented", + "selector": "#errors", + "sourceRefs": ["runtime-features"] + }, + "context": { + "status": "documented", + "selector": "#context", + "sourceRefs": ["chromium-cc", "chromestatus-api"] + }, + "lifecycle": { + "status": "documented", + "selector": "#lifecycle", + "sourceRefs": ["chromium-cc"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["explainer"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": ["chromestatus-api", "chromestatus"] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["explainer"] + } + } + }, + { + "inventoryId": "onuareplaceend-handler", + "href": "events/", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#syntax", + "sourceRefs": ["chromium-idl", "event-names"] + }, + "inputs": { + "status": "documented", + "selector": "#inputs", + "sourceRefs": ["chromium-cc"] + }, + "outputs": { + "status": "documented", + "selector": "#outputs", + "sourceRefs": ["chromium-cc"] + }, + "errors": { + "status": "documented", + "selector": "#errors", + "sourceRefs": ["runtime-features"] + }, + "context": { + "status": "documented", + "selector": "#context", + "sourceRefs": ["chromium-cc", "chromestatus-api"] + }, + "lifecycle": { + "status": "documented", + "selector": "#lifecycle", + "sourceRefs": ["chromium-cc"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["explainer"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": ["chromestatus-api", "chromestatus"] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["explainer"] + } + } + } + ], + "notes": "Surface derived 2026-09-06 and captured VERBATIM: the entire developer-facing surface is three HTMLImageElement additions declared in Chromium's html_image_element.idl — [RuntimeEnabled=UAImageReplacementAPI, Measure] readonly attribute boolean replacedByUserAgent, plus onuareplacestart/onuareplaceend EventHandler attributes — with the event type strings uareplacestart/uareplaceend registered in event_type_names.json5. Five inventory items (1 boolean property, 2 events, 2 handler attributes) map to two stable child routes (replacedbyuseragent/, events/) plus the overview. There is NO formal specification: the ChromeStatus record's spec link is the explainer repository (maturity 'Unknown status'), and the explainer states the proposal 'has not been approved to ship in Chrome' — every page says so. DELIBERATELY PRESERVED AMBIGUITY (explainer: user-agent/feature-specific, not part of the API contract): when replacement occurs, what changes end it, and whether the page is notified at all. The pages document current Chromium behavior (reset on removal from a connected document, document move, or source change out of the replaced original's candidate set; presentation via UA shadow-root iframe; plain non-bubbling non-cancelable Events enqueued as DOM-manipulation tasks) explicitly labelled as implementation tracing, not contract. Events carry no error detail by design — uareplaceend covers finish/fail/revert indistinguishably. Origin trial desktop 152–157 (origin_trial_id 1722063907515793409); no chrome://flags entry (intent: 'no information provided'; runtime feature has no status field, so the Experimental Web Platform features flag does NOT enable it) — enable steps in every warn-block are exact: OT token (header or meta) or --enable-blink-features=UAImageReplacementAPI. No BCD keys, no MDN pages (all 404 2026-09-06), no WPT (intent answers No; wpt.fyi 'uareplace' search empty 2026-09-06), no webstatus.dev/Baseline entry. TAG review: none as yet (Pending). Claimed implementation-sufficient because every declared member is fully documented across all nine dimensions from primary sources and the remaining unknowns are the explainer's own explicit UA-discretion points, preserved as such. Structural validation cannot prove the prose correct; independent primary-source review remains required." +} diff --git a/v152/user-agent-image-replacement-api/replacedbyuseragent/index.html b/v152/user-agent-image-replacement-api/replacedbyuseragent/index.html new file mode 100644 index 00000000..94f45629 --- /dev/null +++ b/v152/user-agent-image-replacement-api/replacedbyuseragent/index.html @@ -0,0 +1,157 @@ + + + + + + replacedByUserAgent property — User Agent Image Replacement API — Chrome 152 — gendn + + + + +
+

← User Agent Image Replacement API

+ +
+

v152 · web api · property reference · origin trial

+

HTMLImageElement.replacedByUserAgent

+

Read-only boolean on HTMLImageElement: true while the element currently displays substitute content provided by the user agent, false otherwise. It is the synchronous complement to the uareplacestart / uareplaceend events — use it to catch a replacement that happened before your script ran.

+
+ +
+ Origin trial — API surface may change + Available only in the Chrome 152–157 desktop origin trial (token via Origin-Trial header or meta tag) or locally with --enable-blink-features=UAImageReplacementAPI. There is no chrome://flags entry. Full enable steps are on the feature overview. +
+ +
+

Syntax

+

Verbatim from Chromium's html_image_element.idl (fetched 2026-09-06; the explainer describes the same member in prose — there is no formal spec):

+
[RuntimeEnabled=UAImageReplacementAPI, Measure] readonly attribute boolean replacedByUserAgent;
+
// Usage
+const isReplaced = imgElement.replacedByUserAgent; // boolean
+

The [Measure] extended attribute means Chromium records a use counter each time the getter is read. The property has no setter — assignment is ignored (or throws in strict mode).

+ Source: Chromium html_image_element.idl; Explainer — proposed approach. +
+ +
+

Inputs

+

None. This is a parameterless read-only attribute getter; it takes no arguments and there is no way to write it from script. The state it reflects is set exclusively by the user agent's own image-replacement machinery.

+ Source: Chromium html_image_element.idl — readonly attribute. +
+ +
+

Outputs

+

A boolean. In the Chromium implementation the getter returns whether the element's layout disposition is currently the image-replacement state — the same condition that gates the substitute rendering:

+
// Chromium html_image_element.cc (verbatim, fetched 2026-09-06)
+bool HTMLImageElement::replacedByUserAgent() const {
+  return HasImageReplacement();
+}
+
+bool HTMLImageElement::HasImageReplacement() const {
+  return layout_disposition_ == LayoutDisposition::kImageReplacement;
+}
+

The value is true from the moment replacement starts (before the queued uareplacestart event has even fired — the state flips synchronously, the event is asynchronous) until the replacement ends. It reports current state, not history: after a replacement is reverted it is false again, indistinguishable from never-replaced.

+ Source: Chromium html_image_element.cc — replacedByUserAgent(), HasImageReplacement(). +
+ +
+

Errors

+

The getter never throws. The only failure mode is absence: on a build or context where the UAImageReplacementAPI runtime feature is not enabled, the property does not exist on HTMLImageElement.prototype and reads as undefined — which is falsy, so naive if (img.replacedByUserAgent) code degrades safely to the “not replaced” branch. Feature-detect explicitly when you need to distinguish “not replaced” from “API unavailable”: "replacedByUserAgent" in HTMLImageElement.prototype.

+ Source: Chromium html_image_element.idl — [RuntimeEnabled=UAImageReplacementAPI]; Chromium runtime_enabled_features.json5. +
+ +
+

Context

+

Exposed on HTMLImageElement (<img> elements) in Window contexts, only where the UAImageReplacementAPI runtime feature is enabled — by origin-trial token during the Chrome 152–157 trial, or the --enable-blink-features=UAImageReplacementAPI switch. The explainer's privacy goal applies to this property exactly as to the events: a user agent may withhold the fact of replacement (keeping the property false) when disclosing it is sensitive, so false means “not observably replaced”, not a guarantee about what is on screen.

+ Source: Chromium runtime_enabled_features.json5 — origin_trial_feature_name: "UAImageReplacementAPI"; Explainer — privacy goal; ChromeStatus API record — origin-trial stage 152–157. +
+ +
+

Lifecycle

+

The value tracks the element's replacement disposition one-to-one:

+
    +
  1. false — element shows its own content (initial state).
  2. +
  3. Flips to true synchronously when the user agent starts replacement; the uareplacestart event that announces the same transition is queued asynchronously, so inside that event handler the property is already true.
  4. +
  5. Flips to false synchronously when replacement ends — finish, failure, revert, element removal from a connected document, document move, or a source change away from the replaced original (current Chromium behavior; what ends a replacement is ultimately user-agent-specific). The queued uareplaceend handler observes false.
  6. +
+

Because events are asynchronous and replacement can predate script execution, the property is the reliable way to initialize UI state on load — the explainer's own example ends with exactly this check.

+ Source: Chromium html_image_element.cc — StartImageReplacement, ResetImageReplacement; Explainer — example. +
+ +
+

Examples

+

Initialize UI correctly whether or not replacement happened before your script ran, then keep it in sync with the events:

+
function syncTryOnUI(img) {
+  const sizeCaption = img.closest("figure")?.querySelector(".size-caption");
+  if (!sizeCaption) return;
+  // Hide the "model is wearing size M" caption while the user sees
+  // a generated image of themselves instead of the model.
+  sizeCaption.hidden = img.replacedByUserAgent === true;
+}
+
+const img = document.querySelector("img.product-view");
+
+if (img && "replacedByUserAgent" in HTMLImageElement.prototype) {
+  syncTryOnUI(img);                                   // catch pre-script replacement
+  img.addEventListener("uareplacestart", () => syncTryOnUI(img));
+  img.addEventListener("uareplaceend", () => syncTryOnUI(img));
+}
+ Source: pattern derived from the explainer's example (which hides a zoom lens the same way). +
+ +
+

Compatibility

+
+ + + + + + + +
replacedByUserAgent — checked 2026-09-06
Engine / runtimeSupportNotes
Chrome (desktop)Origin trial 152–157Requires token or --enable-blink-features=UAImageReplacementAPI; feature status “Proposed” (ChromeStatus API record; Intent to Experiment)
Chrome (Android / WebView / iOS)UnknownOrigin-trial stage lists desktop milestones only
Firefox / SafariNot supportedVendor positions “No signal” (ChromeStatus record)
BCD / MDNNo entryNo BCD key, MDN page 404 (2026-09-06) — interim table from ChromeStatus + Chromium source
+
+ Source: ChromeStatus API feature record; MDN/BCD checks 2026-09-06. +
+ +
+

Security and privacy

+

The property discloses one bit — “this image is currently replaced” — and only when a replacement was actually initiated by explicit user intent or user-configured policy; pages must not be able to probe for replacement capability through it. The user agent may keep it false for replacements it considers sensitive to disclose. It never exposes the replacement media, which in Chromium renders in an isolated UA shadow-root iframe.

+ Source: Explainer — privacy & security considerations; Chromium html_image_element.cc. +
+ +
+

See also

+ +
+ + +
+ + diff --git a/v153/iterator-join/_questions.json b/v153/iterator-join/_questions.json new file mode 100644 index 00000000..e6a654f0 --- /dev/null +++ b/v153/iterator-join/_questions.json @@ -0,0 +1,115 @@ +{ + "schemaVersion": 1, + "id": "v153/iterator-join", + "route": "/v153/iterator-join/", + "identity": "5095183554314240", + "milestone": 153, + "status": "stub", + "revision": 1, + "reviewedAt": "2026-09-06", + "reviewer": "leaf-reference writer (weekly hardening wave, 2026-09-06)", + "frontendTouched": true, + "rubric": [ + { + "dimension": "factual-source-fidelity", + "score": 5, + "severity": "info", + "evidence": "MDN's Iterator/join page verified substantive (Syntax, Description, Examples, Specifications, Browser compatibility, See also sections all present; 200 on HEAD) on 2026-09-06 before choosing the Case A stub per routine Step 5. Method semantics on the page (join()/join(separator), default comma, undefined/null to empty string, empty iterator to empty string, eager/not-lazy caveat) transcribed from the fetched MDN page text and the TC39 proposal README (Stage 3, author/champion Kevin Gibbons). V8 shipped-flag state verified in V8 trunk src/flags/feature-flags.h: JS_FEATURE(js_iterator_join, \"Iterator.prototype.join\") appears inside FOREACH_SHIPPED_FEATURE_FLAG (line 210 of the fetched file). BCD support values (chrome 153, firefox 154, safari preview, bun 1.4.0) read from the raw javascript/builtins/Iterator.json join entry. Firefox bug 2047995 (RESOLVED FIXED, target 154 Branch) and WebKit bug 304586 (RESOLVED FIXED) confirmed via the bugzilla REST APIs.", + "notes": "Every claim on the page traces to a linked primary source fetched 2026-09-06." + }, + { + "dimension": "milestone-mapping", + "score": 5, + "severity": "info", + "evidence": "Feature id 5095183554314240 appears in the live milestone=153 listing under 'Enabled by default' with listing name 'Iterator Join' (verified 2026-09-06); slug iterator-join derived from the exact listing name per invariant #1; folder placed per invariant #2. The detail record's stale status text ('Proposed') is disclosed on-page rather than propagated; the record's own desktop/android/webview milestone fields (153) agree with the listing but were not used for gating.", + "notes": "" + }, + { + "dimension": "completeness", + "score": 4, + "severity": "info", + "evidence": "Case A stub: MDN owns the detailed reference (stub exemption; no reference-contract.json required). Quick-reference table carries the shipping metadata MDN does not track: listing status + stale-status disclosure + Intent to Ship thread, V8 shipped-flag state + Finch name, BCD row with per-engine bug links, test262 file count, honest Baseline statement (no webstatus.dev web-features entry yet), chromestatus identity + tracking bug, and the four live showcase concept demos.", + "notes": "Stub by design." + }, + { + "dimension": "examples", + "score": 4, + "severity": "info", + "evidence": "Case A: worked code examples intentionally delegated to MDN's example (fibonacci().take(5).join(...)) rather than duplicated; the page says so explicitly. Unlike the joint-iteration sibling stub, this feature HAS live interactive demos: the CPS feature route and all four concept routes (join-basics, separator-semantics, array-vs-accumulate, log-formatter) HEAD-checked 200 on 2026-09-06 and linked in the table.", + "notes": "" + }, + { + "dimension": "browser-compat-fallbacks", + "score": 5, + "severity": "info", + "evidence": "BCD row is verbatim from javascript/builtins/Iterator.json (join entry): Chrome 153, Firefox 154, Safari preview, Bun 1.4.0 — each engine's value backed by its linked bug (bugzilla 2047995, webkit 304586). Baseline row states Limited availability honestly: no webstatus.dev entry as of 2026-09-06 (three query forms returned zero results, disclosed on-page) and no Safari stable release.", + "notes": "" + }, + { + "dimension": "links-validity", + "score": 5, + "severity": "info", + "evidence": "All citation labels are direct links (chromestatus feature + API record + milestone listing, TC39 repo + rendered spec, blink-dev Intent to Ship thread resolved from the chromestatus msgid URL to the canonical Google Groups conversation, V8 feature-flags.h, crbug, test262 tree + PR + gitiles mirror used for the count, BCD file, bugzilla, webkit bug, MDN x2, CPS x5). Zero plain-text source labels. External links use target=_blank rel=noopener.", + "notes": "The gitiles mirror link is included because github.com tree listings cannot be independently counted without the API; the mirror is the verifiable count source used." + }, + { + "dimension": "accessibility", + "score": 5, + "severity": "info", + "evidence": "Single h1, single main landmark, table uses th scope=row, links have distinct discernible text (per modern-web-guidance accessibility guide: no identical accessible names pointing at different hrefs — each concept demo link is uniquely named), shared design-system contrast (WCAG AA), no raw hex colors (CSS variables only).", + "notes": "" + }, + { + "dimension": "responsive-ux", + "score": 5, + "severity": "info", + "evidence": "Verified at a REAL 360-CSS-px viewport (PORT=3103): headless Chromium clamps --window-size width to 500px (measured innerWidth=500 at --window-size=360), so a same-origin probe iframe was used instead — measured scrollWidth=345 <= innerWidth=360 with zero elements extending past 362px, plus a read 360px-wide screenshot (shot-iterator-join-mobile360.png) and a 1280x2400 desktop screenshot: no horizontal overflow, h1 unclipped, doc-table contained in .table-wrap{overflow-x:auto}, long URLs/flag tokens wrap via overflow-wrap:anywhere on cells, h1, and lede.", + "notes": "Screenshot paths + the 500px-min-window finding recorded in the wave report (report-iterator-join.md); the same clamp affects any prior 'mobile' screenshots taken with bare --window-size=360." + }, + { + "dimension": "showcase-demo-relationship", + "score": 5, + "severity": "info", + "evidence": "CPS feature route HEAD-checked 200 (2026-09-06); its four concept sub-routes discovered from the feature index page and each HEAD-checked 200. All five linked from the Interactive demos row and See-also-equivalent references list; the embedded-demo identity points at this feature's own CPS route (v153/iterator-join), not a different feature.", + "notes": "Stub format links rather than iframes the demos, matching the house Case A shape." + } + ], + "guidanceConsulted": [ + { + "id": "css-layout", + "query": "responsive reference documentation data table mobile no horizontal overflow", + "recommendation": "Lean on intrinsic sizing and the browser's layout engine; give scrollable treatment (overflow) to wide content rather than letting it force page overflow; avoid hardcoded dimensions.", + "appliedOrException": "Applied: .table-wrap{overflow-x:auto} around the doc-table; overflow-wrap:anywhere on table cells, h1, and lede; 32% first column with 7.5rem min-width (house stub pattern shared with v153/joint-iteration).", + "evidence": "shot-iterator-join-mobile.png + shot-iterator-join-desktop.png in the wave scratchpad (read and verified, 2026-09-06)" + }, + { + "id": "accessibility", + "query": "link card component accessible external links documentation page", + "recommendation": "Use semantic tables with th scope; give hyperlinks distinct accessible names when they point at different hrefs and reuse the same name for links sharing an href; prefer native HTML semantics over ARIA.", + "appliedOrException": "Applied: doc-table rows use th scope=row; the four CPS concept-demo links carry unique names (join basics / separator semantics / array vs accumulate / log formatter); repeated MDN links reuse the same accessible-name pattern; no ARIA needed on this static page.", + "evidence": "DOM dump dom-iterator-join.html grepped for scope=\"row\" and link texts (2026-09-06)" + } + ], + "openQuestions": [ + "The TC39 proposal is Stage 3; when it advances to Stage 4 and merges into ECMA-262, the Spec row should swap 'not yet merged' for the ecma262 integration PR.", + "webstatus.dev has no web-features entry for tc39-iterator-join yet; once one exists the Baseline row should cite it directly instead of documenting the absence.", + "Safari ships it in preview (webkit 304586 fixed); when a stable Safari version records in BCD, the compat row and the Baseline statement should be updated." + ], + "followUpGoals": [ + { + "goal": "Update the v153/iterator-join Spec row when tc39/proposal-iterator-join reaches Stage 4 and merges into ECMA-262 (link the integration PR, as the joint-iteration stub does).", + "kind": "targeted-fix", + "priority": "medium" + }, + { + "goal": "Replace the 'no webstatus.dev entry' Baseline explanation on v153/iterator-join with a direct webstatus.dev citation once the tc39-iterator-join web-feature is published there.", + "kind": "targeted-fix", + "priority": "low" + }, + { + "goal": "Simplify the v153/iterator-join browser-compatibility row once BCD records a stable Safari version (currently 'preview').", + "kind": "targeted-fix", + "priority": "low" + } + ] +} diff --git a/v153/iterator-join/conformance.json b/v153/iterator-join/conformance.json new file mode 100644 index 00000000..ce15a1cf --- /dev/null +++ b/v153/iterator-join/conformance.json @@ -0,0 +1,191 @@ +{ + "schemaVersion": 1, + "id": "v153/iterator-join", + "route": "/v153/iterator-join/", + "identity": "5095183554314240", + "milestone": 153, + "status": "stub", + "demo": "https://chrome-platform-showcase.paulkinlan-ea.deno.net/v153/iterator-join/", + "cpsFeature": { + "host": "chrome-platform-showcase.paulkinlan-ea.deno.net", + "route": "/v153/iterator-join/", + "conformanceRoute": "/v153/iterator-join/conformance", + "note": "The chrome-platform-showcase suite at conformanceRoute governs only the assertions it explicitly lists; it does not prove unasserted native, hardware, permission, backend, or other behavior. gendn references that listed contract without forking it." + }, + "immutable": true, + "suiteHash": "d3cfef9f1b410d55529b452151f0a856f470d405a3cd054c42014b2640504051", + "generatedAt": "2026-07-19T00:00:00Z", + "author": "gen-conformance/v1 (derived from page metadata)", + "assertions": [ + { + "id": "route-resolves", + "category": "route", + "describe": "The stable route /v153/iterator-join/ responds 200 (durable-demo contract).", + "kind": "http-status", + "test": "/v153/iterator-join/", + "expect": 200, + "deviceClass": "both" + }, + { + "id": "chromestatus-identity-link", + "category": "identity", + "describe": "Page carries its canonical chromestatus.com/feature/5095183554314240 link — the immutable feature identity (CLAUDE.md invariant #3) and the milestone-153 mapping's self-heal.", + "kind": "dom-query", + "selector": "a[href*=\"chromestatus.com/feature/5095183554314240\"]", + "deviceClass": "both" + }, + { + "id": "title-nonempty", + "category": "structure", + "describe": "Document has a non-empty for the reference page.", + "kind": "js-eval", + "test": "document.title.trim().length > 0", + "deviceClass": "both" + }, + { + "id": "single-h1", + "category": "structure", + "describe": "Exactly one <h1> — the API name (listing name), MDN-shaped article heading.", + "kind": "js-eval", + "test": "document.querySelectorAll('h1').length === 1", + "deviceClass": "both" + }, + { + "id": "main-landmark", + "category": "a11y", + "describe": "A single <main> landmark wraps the article content.", + "kind": "js-eval", + "test": "document.querySelectorAll('main').length === 1", + "deviceClass": "both" + }, + { + "id": "stylesheet-linked", + "category": "structure", + "describe": "Shared editorial design system /public/styles.css is linked.", + "kind": "dom-query", + "selector": "link[rel=\"stylesheet\"][href=\"/public/styles.css\"]", + "deviceClass": "both" + }, + { + "id": "viewport-meta", + "category": "responsive", + "describe": "Responsive viewport meta present (width=device-width) for mobile+desktop parity.", + "kind": "dom-query", + "selector": "meta[name=\"viewport\"]", + "deviceClass": "both" + }, + { + "id": "crumb-to-release", + "category": "structure", + "describe": "Breadcrumb links back to the /v153/ release index.", + "kind": "dom-query", + "selector": "a[href=\"/v153/\"]", + "deviceClass": "both" + }, + { + "id": "byline-footer", + "category": "structure", + "describe": "Byline footer present (article provenance).", + "kind": "dom-query", + "selector": ".byline", + "deviceClass": "both" + }, + { + "id": "external-links-rel-safe", + "category": "links", + "describe": "Every target=_blank link carries rel=noopener (no reverse-tabnabbing; MDN-style external link hygiene).", + "kind": "js-eval", + "test": "[...document.querySelectorAll('a[target=\"_blank\"]')].every(el => (el.rel||'').includes('noopener'))", + "deviceClass": "both" + }, + { + "id": "no-empty-anchors", + "category": "links", + "describe": "No anchor has an empty or placeholder (#) href.", + "kind": "js-eval", + "test": "[...document.querySelectorAll('a')].every(el => { const h = el.getAttribute('href'); return h && h !== '#'; })", + "deviceClass": "both" + }, + { + "id": "no-console-errors", + "category": "runtime", + "describe": "Page loads with no console errors.", + "kind": "no-console-errors", + "deviceClass": "both" + }, + { + "id": "no-failed-requests", + "category": "runtime", + "describe": "No failed (>=400 / net-error) network requests on load.", + "kind": "no-failed-requests", + "deviceClass": "both" + }, + { + "id": "no-horizontal-overflow-desktop", + "category": "responsive", + "describe": "No unintended horizontal overflow at desktop (1280x800).", + "kind": "js-eval", + "test": "document.documentElement.scrollWidth <= (window.innerWidth + 1)", + "deviceClass": "desktop" + }, + { + "id": "no-horizontal-overflow-mobile", + "category": "responsive", + "describe": "No unintended horizontal overflow at narrow mobile (360x740, DPR3).", + "kind": "js-eval", + "test": "document.documentElement.scrollWidth <= (window.innerWidth + 1)", + "deviceClass": "mobile" + }, + { + "id": "legible-desktop", + "category": "responsive", + "describe": "Desktop render is legible, contrast passes WCAG AA, controls/text not clipped (screenshot review).", + "kind": "manual-evidenced", + "deviceClass": "desktop" + }, + { + "id": "legible-mobile", + "category": "responsive", + "describe": "Mobile render is legible with adequate tap targets and no clipped text/controls (screenshot review).", + "kind": "manual-evidenced", + "deviceClass": "mobile" + }, + { + "id": "h1-matches-listing-name", + "category": "content", + "describe": "The <h1> is the chromestatus milestone-listing name for this feature (not the broader detail name) — factual/source fidelity.", + "kind": "manual-evidenced", + "deviceClass": "n/a" + }, + { + "id": "guidance-consulted", + "category": "guidance", + "describe": "Frontend implementation consulted modern-web-guidance for its UI/responsive/a11y topics and applied or justified them (recorded in _questions.json guidanceConsulted).", + "kind": "manual-evidenced", + "deviceClass": "n/a" + }, + { + "id": "mdn-card-present", + "category": "structure", + "describe": "Stub shows the 'documented on MDN' card explaining gendn doesn't duplicate MDN.", + "kind": "dom-query", + "selector": ".mdn-card", + "deviceClass": "both" + }, + { + "id": "mdn-outbound-link", + "category": "links", + "describe": "Stub links out to the canonical developer.mozilla.org page for the feature.", + "kind": "js-eval", + "test": "!!document.querySelector('a[href*=\"developer.mozilla.org/en-US/docs/Web\"]')", + "deviceClass": "both" + }, + { + "id": "mdn-coverage-accurate", + "category": "content", + "describe": "The linked MDN page genuinely covers this feature (has Specifications + Browser compat) — accurate 'covered on MDN' claim (source review).", + "kind": "manual-evidenced", + "deviceClass": "n/a" + } + ] +} diff --git a/v153/iterator-join/index.html b/v153/iterator-join/index.html new file mode 100644 index 00000000..accf5ade --- /dev/null +++ b/v153/iterator-join/index.html @@ -0,0 +1,84 @@ +<!doctype html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Iterator Join — Chrome 153 — gendn + + + + +
+

← Chrome 153 reference

+ +
+

v153 · javascript · covered on mdn

+

Iterator Join

+

Adds Iterator.prototype.join(separator) to JavaScript — the iterator analogue of Array.prototype.join(). It consumes the iterator and returns a single string that is the concatenation of every yielded element, separated by a comma by default or by the optional separator string. Elements are converted to strings; undefined and null become the empty string, and an empty iterator joins to "". Unlike most iterator helpers it is not lazy, so it must not be called on an infinite iterator. The TC39 proposal is at Stage 3 and Chrome 153 ships it enabled by default.

+
+ +
+

this feature is documented on MDN

+
+ + MDN: Iterator.prototype.join() method + +

MDN’s reference covers the method in full — syntax, the optional separator parameter, return value (including the undefined/null-to-empty-string and empty-iterator rules), the non-lazy caveat for infinite iterators, a worked example, specifications, and browser compatibility — at Iterator.prototype.join() (verified substantive, 2026-09-06). gendn doesn't duplicate that here.

+
+

Why gendn doesn't duplicate MDN: this site exists for Chrome features that have no MDN reference yet. When MDN covers a feature completely, the honest page is a pointer to the canonical reference plus the shipping metadata MDN doesn't track — duplicated prose would only drift out of sync.

+
+ +
+

quick reference

+
+ + + + + + + + + + + +
The changeOne method on the iterator helpers prototype: Iterator.prototype.join(separator?) → string. Behaves like Array.prototype.join() over the values the iterator yields: default separator ",", elements stringified, undefined/null → "", empty iterator → "". Eager (consumes the whole iterator), so unsuitable for infinite iterators
Chrome statusEnabled by default in Chrome 153 — the milestone=153 listing files it under “Enabled by default” and is authoritative (verified 2026-09-06); shipping was announced in the blink-dev Intent to Ship thread. The detail record’s status text still reads “Proposed” — stale metadata on the record, disclosed here
SpecTC39 Iterator Join proposal, §Iterator.prototype.join — Stage 3 per the proposal README (“ready for implementations”, author/champion Kevin Gibbons; verified 2026-09-06); not yet merged into ECMA-262
V8 stateFlag js_iterator_join (“Iterator.prototype.join”) sits in FOREACH_SHIPPED_FEATURE_FLAG — shipped, on by default — in V8’s feature-flags.h at trunk (verified 2026-09-06). The ChromeStatus record’s Finch name is V8Flag_js_iterator_join
MDNIterator.prototype.join() (under Iterator)
Browser compatibilityBCD javascript/builtins/Iterator.json (join entry, verified 2026-09-06): Chrome 153, Firefox 154 (bug 2047995 RESOLVED FIXED, target 154 Branch), Safari preview (webkit.org/b/304586 RESOLVED FIXED, not yet in a Safari release), Bun 1.4.0
Teststest262 (the ECMA-262 conformance suite; JavaScript features use test262, not WPT): 18 Iterator/prototype/join files, added by test262 PR #4768 (counted 2026-09-06 via the Chromium gitiles mirror)
BaselineLimited availability — no Safari stable release ships it yet, and webstatus.dev has no web-features entry for it as of 2026-09-06 (queries for iterator-join, tc39-iterator-join, and “Iterator.prototype.join” all return zero results); the ChromeStatus record names Web Feature ID tc39-iterator-join
ChromeStatus5095183554314240 — Iterator Join (blink component Blink>JavaScript>Language; tracking bug crbug 465715798)
Interactive demosThe Chrome Platform Showcase feature page is live (HTTP 200, 2026-09-06) with four concept demos: join basics, separator semantics, array vs accumulate, and log formatter (all HEAD-checked 200, 2026-09-06)
+
+ Source: MDN Iterator.prototype.join(), fetched 2026-09-06; chromestatus.com/feature/5095183554314240; tc39/proposal-iterator-join +
+ +
+

references

+ +
+ + +
+ + diff --git a/v153/xml-parsing-in-rust-for-non-xslt-scenarios/_questions.json b/v153/xml-parsing-in-rust-for-non-xslt-scenarios/_questions.json new file mode 100644 index 00000000..a5f45e87 --- /dev/null +++ b/v153/xml-parsing-in-rust-for-non-xslt-scenarios/_questions.json @@ -0,0 +1,122 @@ +{ + "schemaVersion": 1, + "id": "v153/xml-parsing-in-rust-for-non-xslt-scenarios", + "route": "/v153/xml-parsing-in-rust-for-non-xslt-scenarios/", + "identity": "5309598397497344", + "milestone": 153, + "status": "built", + "revision": 1, + "reviewedAt": "2026-09-06", + "reviewer": "writer self-review — independent integrator review pending", + "frontendTouched": true, + "rubric": [ + { + "dimension": "factual-source-fidelity", + "score": 5, + "severity": "info", + "evidence": "Every normative claim traces to a source fetched live 2026-09-06: the four scenarios, compat/ergonomics/security answers, and performance percentiles quoted verbatim from the Intent to Ship (fetched via mail-archive msg16709 full text; canonical Groups msgid CAN6muBvUpuf3UBfv6vFxfy-b1LW-fgBbaMk02w5heHDPqbS8dg linked); Document::CreateParser selection logic quoted verbatim from document.cc; flag names/status/comments from runtime_enabled_features.json5 (XMLRustForNonXslt stable, XMLParsingRust 'breaks XSLT'); error-path behavior read from xml_ffi.rs (try_get_error_details row:col stripping, is_error_resumable), xml_document_parser_rs.h (WellFormed comment) and .cc (shared XMLErrors, kMaxXMLTreeDepth guard); crate identity/version/security-critical status from README.chromium (xml v1.4.0). No invented API surface — the feature type is 'No developer-visible change' and the page documents the migration contract only." + }, + { + "dimension": "milestone-mapping", + "score": 5, + "severity": "info", + "evidence": "Slug 'xml-parsing-in-rust-for-non-xslt-scenarios' derived from the exact listing name 'XML parsing in Rust for non-XSLT scenarios' in the milestone=153 features_by_type listing (re-fetched 2026-09-06; category 'Enabled by default'); folder v153/ per listing position; identity link chromestatus.com/feature/5309598397497344 appears in the at-a-glance table, compat table, and see-also. H1 is the listing name verbatim. The intent's M151 estimate vs the listing's 153 placement is disclosed on-page with the listing stated as authoritative." + }, + { + "dimension": "completeness", + "score": 5, + "severity": "info", + "evidence": "The surface is a migration/behavior contract and all of it is mapped: what changed (four scenarios), the exact selection algorithm (verbatim code), what stays the same (entities, prolog, DOCTYPE, nesting limit, DTD non-support), observable error-reporting deltas, measured performance envelope, and the test/bisect/report path. reference-contract.json inventories 3 items x 9 dimensions; the single not-applicable (errors on the diagnostic flag procedure) carries a sourced rationale. The intent's un-enumerated 'two or three compatibility issues' are preserved as ambiguity, quoted verbatim, not invented." + }, + { + "dimension": "explanation-quality", + "score": 5, + "severity": "info", + "evidence": "Model-first: the XSLT-vs-non-XSLT split is explained before the scenario list (the reader must understand why only four paths move), then the selection algorithm is given as code plus a plain-language contract reading, then deltas (errors, performance) and the developer response (bisect recipe with both flags, and the explicit warning that XMLParsingRust breaks XSLT). The honest framing — 'this is a Chromium bug, verify and report it' — is the actionable takeaway for a no-API change." + }, + { + "dimension": "examples", + "score": 4, + "severity": "info", + "evidence": "Three semantic pre/code examples: structural parsererror detection with DOMParser (with the do-not-string-match rationale tied to the message-text change), responseXML null-check, and the two-command flag bisect recipe. No live iframe: the showcase route HEAD-checked 404 (2026-09-06), stated on-page; an internal parser swap with no intended behavior difference also has little to demo interactively. Examples cannot demonstrate a parse-output difference because none is intended." + }, + { + "dimension": "browser-compat-fallbacks", + "score": 5, + "severity": "info", + "evidence": "No BCD key and no web-features entry exist for the migration (webstatus.dev query linked, zero matches 2026-09-06) — the compat table is labelled interim and compiled from the milestone listing, the API record (desktop/android/webview 153, ios null), the stable flag record, and the intent's 'no signals solicited' statement. Firefox/Safari rows honestly state 'unaffected' rather than implying support of a Chrome-internal change. The affected APIs' unchanged BCD coverage is pointed at via their MDN pages." + }, + { + "dimension": "links-validity", + "score": 5, + "severity": "info", + "evidence": "Every visible source label is a direct link with target=_blank rel=noopener: Groups msgid + mail-archive copies (intent, all three LGTMs), chromestatus feature + API record + milestone listing, runtime_enabled_features.json5, document.cc, xml_document_parser_rs.h/.cc, xml_ffi.rs, entities.rs, xml_document_parser.h, README.chromium, crates.io, kornelski/xml-rs, RuntimeEnabledFeatures.md, both crbugs, both XSLT-deprecation chromestatus entries, W3C XML + Namespaces specs, wpt.fyi domparsing + xhr, webstatus.dev query, MDN pages, showcase route. Zero plain-text source labels. The generic issues.chromium.org/new link is used for filing because no public URL pins the Blink>DOM component id." + }, + { + "dimension": "accessibility", + "score": 4, + "severity": "info", + "evidence": "Semantic h1>h2 hierarchy (single h1, sequential h2 sections), banner role=note with aria-label, all tables use th with header rows, ordered lists for the sequential scenario and bisect steps, code tokens wrap (overflow-wrap:anywhere) rather than clip. Content is a reference page with no interactive controls, dialogs, or focus-order complexity. Not independently screen-reader-tested (recorded honestly rather than claimed)." + }, + { + "dimension": "responsive-ux", + "score": 5, + "severity": "info", + "evidence": "All four tables inside .table-wrap{overflow-x:auto}; row-header first column capped at 30%/9.5rem; long tokens (flag names, gitiles URLs, msgid) covered by overflow-wrap:anywhere on heading/lede/code cells; pre blocks scroll internally (overflow-x:auto with border, per house pattern). Verified by headless-Chromium screenshots at 360x1600 and 1280x2400, both read after capture — no horizontal document overflow, banner and tables legible at 360px (see writer report shot-xml-parsing-*.png)." + }, + { + "dimension": "showcase-demo-relationship", + "score": 5, + "severity": "info", + "evidence": "Showcase feature route HEAD-checked: 404 (2026-09-06) — per the Case B rule the page uses a text link plus pre/code snippets and states the 404 and the date explicitly instead of embedding a broken iframe. The see-also entry points at the canonical showcase feature URL for when a demo lands; no other feature's demo was repointed." + } + ], + "guidanceConsulted": [ + { + "id": "css-layout", + "query": "responsive reference documentation data tables no horizontal overflow mobile", + "recommendation": "Lean on intrinsic sizing and contained overflow: wrap wide content in its own overflow-x:auto container, use overflow-wrap for unbreakable tokens, avoid fixed pixel widths so the page body never scrolls horizontally.", + "appliedOrException": "Applied: .table-wrap{overflow-x:auto} around all four tables; overflow-wrap:anywhere on h1, lede, and p/li/td code; pre{overflow-x:auto} so the verbatim C++ snippet and CLI recipe scroll internally; first-column width capped at 30% with a rem minimum, no other hardcoded widths. Confirmed by reading 360px and 1280px screenshots." + }, + { + "id": "scrollability-affordance-hints", + "query": "readable code blocks pre overflow scrolling mobile documentation", + "recommendation": "Make scrollable regions perceivable: keep scrolling contained to the region and consider visual affordances (shadows/gradients via scroll-state container queries) so users know more content exists.", + "appliedOrException": "Partially applied with a recorded exception: overflow is contained per the guide (each wide table/code block scrolls inside its own bordered container, whose 2px border and background visually delimit the scrollable region). The scroll-state-query gradient indicators were NOT added — the house design system (public/styles.css + committed v153 exemplars) has no such indicator pattern, and introducing one on a single leaf page would fork the shared shell, which the durable-contract rules reserve for the infrastructure writer." + }, + { + "id": "accessibility", + "query": "accessible inline status banner note semantics", + "recommendation": "Place content in landmarks, keep heading levels sequential, use lists for repeated contiguous content, and give non-landmark callouts an appropriate role and accessible name.", + "appliedOrException": "Applied: single main landmark with footer byline (house pattern); h1 then sequential h2s; scenario list and bisect recipe as ol, related links as ul; the Baseline banner uses role=note with aria-label='Baseline status' matching the committed exemplar; tables use th header cells with a scoped first column." + } + ], + "openQuestions": [ + "The ChromeStatus stage record's intent_thread_url (msgid CAH6JyLQFDfe=v2LS0-XWh2nDhP0_7_K6o4mAiK_FAA0ZZrZ1KA) resolves to an unrelated 'Intent to Ship: Update Device Memory API limits' thread — a chromestatus data-entry error. This page links the correct thread (msgid CAN6muBvUpuf3UBfv6vFxfy-b1LW-fgBbaMk02w5heHDPqbS8dg, verified against the mail-archive full text). Should this be reported to the feature owner?", + "Which exactly were the 'two or three compatibility issues ... identified during the experiment phase and have been fixed'? No public source enumerates them; the tracking bug (crbug.com/466303347) may, but issue access was not available to this run.", + "chromestatus lists finch_name 'XMLParsingRust' while the shipped runtime flag is 'XMLRustForNonXslt' — is the Finch study genuinely named after the other flag, or is that field also stale?", + "When the XSLT deprecation (chromestatus 4709671889534976) concludes and XMLParsingRust becomes the default, does this entry get a successor chromestatus feature, and should gendn cross-link it?" + ], + "followUpGoals": [ + { + "goal": "When Chrome removes XSLT and flips full Rust XML parsing (XMLParsingRust, crbug.com/441911594), add a new page for that successor change (new slug) and update this page's lifecycle note with the landed milestone — keeping this route intact.", + "kind": "additive-page", + "priority": "medium" + }, + { + "goal": "If the tracking bug or a follow-up post publicly enumerates the experiment-phase compatibility issues that were fixed, cite them in the #flags section so developers can recognize the known-fixed patterns.", + "kind": "targeted-fix", + "priority": "medium" + }, + { + "goal": "Re-verify the vendored xml crate version (currently 1.4.0 per README.chromium) and the M153-branch flag status once 153 reaches stable; update the at-a-glance and compat rows if the rollout used Finch staging.", + "kind": "targeted-fix", + "priority": "low" + }, + { + "goal": "When the Chrome Platform Showcase ships a /v153/xml-parsing-in-rust-for-non-xslt-scenarios/ route, replace the text-link fallback in #examples with the live embed.", + "kind": "targeted-fix", + "priority": "low" + } + ] +} diff --git a/v151/xml-parsing-in-rust-for-non-xslt-scenarios/conformance.json b/v153/xml-parsing-in-rust-for-non-xslt-scenarios/conformance.json similarity index 85% rename from v151/xml-parsing-in-rust-for-non-xslt-scenarios/conformance.json rename to v153/xml-parsing-in-rust-for-non-xslt-scenarios/conformance.json index f1a8297d..b2b174af 100644 --- a/v151/xml-parsing-in-rust-for-non-xslt-scenarios/conformance.json +++ b/v153/xml-parsing-in-rust-for-non-xslt-scenarios/conformance.json @@ -1,30 +1,35 @@ { "schemaVersion": 1, - "id": "v151/xml-parsing-in-rust-for-non-xslt-scenarios", - "route": "/v151/xml-parsing-in-rust-for-non-xslt-scenarios/", + "id": "v153/xml-parsing-in-rust-for-non-xslt-scenarios", + "route": "/v153/xml-parsing-in-rust-for-non-xslt-scenarios/", "identity": "5309598397497344", - "milestone": 151, + "milestone": 153, "status": "built", - "demo": null, - "cpsFeature": null, + "demo": "https://chrome-platform-showcase.paulkinlan-ea.deno.net/v153/xml-parsing-in-rust-for-non-xslt-scenarios/", + "cpsFeature": { + "host": "chrome-platform-showcase.paulkinlan-ea.deno.net", + "route": "/v153/xml-parsing-in-rust-for-non-xslt-scenarios/", + "conformanceRoute": "/v153/xml-parsing-in-rust-for-non-xslt-scenarios/conformance", + "note": "The chrome-platform-showcase suite at conformanceRoute governs only the assertions it explicitly lists; it does not prove unasserted native, hardware, permission, backend, or other behavior. gendn references that listed contract without forking it." + }, "immutable": true, - "suiteHash": "ef8159aba28b53c9ca30fb61c10f18a18e032418275f58f4517d54f8e5aa3945", + "suiteHash": "854a3cb0d2ccf9f77f247ecae6c30890a52785bb4a55d215299d804242d249fb", "generatedAt": "2026-07-19T00:00:00Z", "author": "gen-conformance/v1 (derived from page metadata)", "assertions": [ { "id": "route-resolves", "category": "route", - "describe": "The stable route /v151/xml-parsing-in-rust-for-non-xslt-scenarios/ responds 200 (durable-demo contract).", + "describe": "The stable route /v153/xml-parsing-in-rust-for-non-xslt-scenarios/ responds 200 (durable-demo contract).", "kind": "http-status", - "test": "/v151/xml-parsing-in-rust-for-non-xslt-scenarios/", + "test": "/v153/xml-parsing-in-rust-for-non-xslt-scenarios/", "expect": 200, "deviceClass": "both" }, { "id": "chromestatus-identity-link", "category": "identity", - "describe": "Page carries its canonical chromestatus.com/feature/5309598397497344 link — the immutable feature identity (CLAUDE.md invariant #3) and the milestone-151 mapping's self-heal.", + "describe": "Page carries its canonical chromestatus.com/feature/5309598397497344 link — the immutable feature identity (CLAUDE.md invariant #3) and the milestone-153 mapping's self-heal.", "kind": "dom-query", "selector": "a[href*=\"chromestatus.com/feature/5309598397497344\"]", "deviceClass": "both" @@ -72,9 +77,9 @@ { "id": "crumb-to-release", "category": "structure", - "describe": "Breadcrumb links back to the /v147/ release index.", + "describe": "Breadcrumb links back to the /v153/ release index.", "kind": "dom-query", - "selector": "a[href=\"/v151/\"]", + "selector": "a[href=\"/v153/\"]", "deviceClass": "both" }, { diff --git a/v153/xml-parsing-in-rust-for-non-xslt-scenarios/index.html b/v153/xml-parsing-in-rust-for-non-xslt-scenarios/index.html new file mode 100644 index 00000000..9d66d187 --- /dev/null +++ b/v153/xml-parsing-in-rust-for-non-xslt-scenarios/index.html @@ -0,0 +1,258 @@ + + + + + + XML parsing in Rust for non-XSLT scenarios — Chrome 153 — gendn + + + + +
+

← Chrome 153 reference

+ +
+

v153 · dom · internal change · enabled by default

+

XML parsing in Rust for non-XSLT scenarios

+ +
+

Not a Baseline-tracked feature — internal implementation change, no new API

+
    +
  • Chrome · 153 (milestone listing)
  • +
  • Edge · not separately reported (Chromium-based)
  • +
  • Firefox · unaffected (own parser)
  • +
  • Safari · unaffected (own parser)
  • +
+

This entry documents Chrome swapping its internal XML parsing engine from libxml2 (C) to the memory-safe Rust xml crate in scenarios that never involve XSLT. There is no web-exposed API surface: the Intent to Ship states “No browser vendor or developers signals were solicited as there is no functional change or introduction of new API”, the ChromeStatus record lists no Web Feature ID, a webstatus.dev query returns zero matches, and there is no BCD key for the migration itself (the affected APIs — DOMParser, XMLHttpRequest.responseXML — keep their existing BCD entries because their contracts are unchanged). All verified 2026-09-06.

+
+ +

Starting in Chrome 153, XML that reaches the browser through the DOMParser API, XMLHttpRequest.responseXML, standalone SVG documents, or SVG loaded as an external image is parsed by a memory-safe Rust parser instead of libxml2. The parse result is intended to be functionally identical — same DOM, same well-formedness rules — while eliminating the class of memory-corruption vulnerabilities that C parsers are prone to. XML documents that may still need XSLT (top-level non-SVG XML navigations in a frame) stay on libxml2 until Chrome’s separate XSLT deprecation concludes.

+
+ +
+

at a glance

+
+ + + + + + + + + +
What it isAn internal parser swap: Blink’s XMLDocumentParserRs (backed by the Rust xml crate, a.k.a. xml-rs, vendored at v1.4.0) replaces the libxml2-backed XMLDocumentParser for four non-XSLT scenarios
Web-exposed APINone — ChromeStatus files it as feature type “No developer-visible change”; no IDL, no CSS, no headers. What is documented here is the migration and behavior contract
Scenarios covered1. DOMParser · 2. XMLHttpRequest.responseXML · 3. standalone SVG documents (top-level navigation to image.svg) · 4. SVG as an external image resource
Runtime flagXMLRustForNonXslt — status stable in runtime_enabled_features.json5 at trunk (fetched 2026-09-06). A second flag, XMLParsingRust, switches (almost) all XML parsing to Rust but “breaks XSLT” per its own comment — it is not what ships here
Milestone listingChrome 153 — Enabled by default (milestone=153 listing, verified 2026-09-06). The Intent to Ship (2026-06-09) estimated M151 for desktop, Android, and WebView; the listing position is authoritative for gendn
ApprovalsLGTM×3 on blink-dev, 2026-06-09: Chris Harrelson, Yoav Weiss (“non-web-exposed implementation change”), Mike Taylor
Tracking bugcrbug.com/466303347 (non-XSLT rollout); crbug.com/441911594 (full Rust XML parsing, post-XSLT-removal)
ChromeStatus5309598397497344 — XML parsing in Rust for non-XSLT scenarios (Blink component Blink>DOM, owner drott@chromium.org)
+
+ Source: chromestatus.com/feature/5309598397497344; Intent to Ship (mail-archive copy); README.chromium for the xml crate +
+ +
+

what changed: the four scenarios

+

Chrome parses XML in two broad situations: documents that might be transformed by XSLT (a top-level XML navigation carrying an <?xml-stylesheet?> processing instruction), and everything else. The Rust parser is incompatible with libxslt, so this change targets only the “everything else” set — scenarios where Chrome is certain no XSLT processing will occur. Verbatim from the Intent to Ship:

+
    +
  1. DOMParser Web API — parseFromString() with an XML MIME type.
  2. +
  3. Accessing responseXML of XMLHttpRequest — the parsed Document for XML responses.
  4. +
  5. SVG standalone images — “accessing a image.svg document directly as a top level navigation”.
  6. +
  7. SVG external images — “a main document embedding an SVG as an external image resource” (e.g. <img src="icon.svg">). Per the intent’s measurement note, SVG usage as external images “remains high at about 60%” of page loads, so this is the highest-traffic path.
  8. +
+

Scenarios 3 and 4 were unlocked by a prior deprecation: Remove Inline XSLT for production of SVG removed the last way an SVG image could legitimately depend on XSLT.

+ Source: Intent to Ship — summary (verbatim list); chromestatus 5143784390262784 +
+ +
+

how Chrome picks the parser

+

The decision is made in Document::CreateParser() in third_party/blink/renderer/core/dom/document.cc (fetched 2026-09-06), quoted verbatim (HTML documents take the HTML parser before this point):

+
// Use the Rust XML parser for situations non-XSLT situations: XMLHttpRequest,
+// JS DOMParser API, where no dom_window_ is available, or for SVG images.
+if (!GetFrame() || IsSVGDocument()) {
+  // ...
+  if (RuntimeEnabledFeatures::XMLRustForNonXsltEnabled()) {
+    data_->using_rust_xml_parser_ = true;
+    return MakeGarbageCollected<XMLDocumentParserRs>(*this, View());
+  }
+}
+
+// FIXME: this should probably pass the frame instead
+if (RuntimeEnabledFeatures::XMLParsingRustEnabled()) {
+  data_->using_rust_xml_parser_ = true;
+  return MakeGarbageCollected<XMLDocumentParserRs>(*this, View());
+} else {
+  return MakeGarbageCollected<XMLDocumentParser>(*this, View());
+}
+

Read as a contract: an XML document that has no frame (documents created by DOMParser and XMLHttpRequest never have one) or is an SVG document (both standalone and external-image SVG) is parsed by XMLDocumentParserRs when XMLRustForNonXslt is enabled — which it is by default in Chrome 153. Any other XML document — a framed, non-SVG XML navigation, exactly the case that may carry an <?xml-stylesheet?> PI — still gets the libxml2-backed XMLDocumentParser unless the separate, XSLT-breaking XMLParsingRust flag is turned on.

+ Source: Document::CreateParser, document.cc (verbatim); runtime_enabled_features.json5 +
+ +
+

what stays the same

+

The intent’s compatibility position is that the Rust implementation is “expected and shown to be functionally equivalent to the C++ based implementation. No functional change.” Specifics visible in the implementation:

+
    +
  • API contracts are untouched. DOMParser.parseFromString(), XMLHttpRequest.responseXML, and SVG loading keep their specified signatures and semantics — nothing on MDN about them changes.
  • +
  • XHTML named entities still resolve. XMLDocumentParserRs pre-registers the Latin-1, Symbol, Special, and HTML5 entity maps (add_xhtml_entities() in xml_ffi.rs with entities.rs), matching the libxml2 path’s handling of &nbsp; and friends in XHTML.
  • +
  • XML prolog handling matches. Version numbers other than 1.0 are silently processed as 1.0, mirroring the old parser and the XML 1.0 prolog note; standalone and encoding declarations are carried onto the document as before (see StartDocument in xml_document_parser_rs.cc).
  • +
  • DOCTYPE nodes are still created (name, public ID, system ID), and the tree-depth guard is the same shared constant: parsing fails fatally with “Excessive node nesting.” beyond kMaxXMLTreeDepth = 5000 (defined in xml_document_parser.h, used by both parsers).
  • +
  • DTD-dependent behavior was already unsupported. The intent notes remaining upstream xml-rs conformance-test failures “pertain to functionality that we do not use (DTD parsing, for example), or are because of conflicting specifications” — custom entity definitions in internal DTD subsets were not a supported Chrome behavior on these paths before, and are not now.
  • +
+ Source: Intent to Ship — interoperability and compatibility; xml_ffi.rs; xml_document_parser_rs.cc +
+ +
+

error reporting: what is observably different

+

Well-formedness failures surface through the same channels as before — but the text of error messages now comes from the Rust xml crate rather than libxml2. If your code or tests string-match parser error messages, this is the one place the swap can be visible:

+
+ + + + + + + + +
SurfaceBehavior after the swap
DOMParserA malformed document still yields a document whose root content is a <parsererror> element (Blink’s shared XMLErrors::InsertErrorMessageBlock(), called identically from XMLDocumentParserRs). Detect the element, not its message text.
XMLHttpRequest.responseXMLStill null for a non-well-formed response: the header for XMLDocumentParserRs::WellFormed() notes it is “Used by the XMLHttpRequest to check if the responseXML was well formed”, and it returns true only when the Rust reader recorded no error.
Error message textProduced by the Rust crate; the FFI layer strips the crate’s row:col prefix and passes row and column separately into Blink’s existing error formatting (try_get_error_details() in xml_ffi.rs). Wording differs from libxml2’s messages for the same malformed input.
Error positionsRow and column are reported from the Rust reader’s position tracking; the position of the last successfully parsed event is used where an exact error position is unavailable.
Streaming end-of-inputAn “Unexpected end of stream” condition mid-parse is treated as resumable (is_error_resumable()) so chunked document loads do not error prematurely; a genuinely unbalanced root at the true end of input is converted to a fatal error at finish time.
Nesting limitFatal “Excessive node nesting.” error beyond 5000 open elements — unchanged, shared constant with the libxml2 path.
+
+ Source: xml_ffi.rs — try_get_error_details, is_error_resumable (verbatim behavior); xml_document_parser_rs.h — WellFormed() comment; xml_document_parser_rs.cc +
+ +
+

performance: a measured, bounded regression

+

The intent is unusually candid here. A 1%-of-stable experiment measured the Blink.XMLParsing.NonXsltXmlParsingTime.Combined histogram and “confirms an isolated parser performance regression”, while “guard rail metrics are unaffected on all relevant platforms”:

+
    +
  • Android: parsing 36% slower at the 50th percentile to 54% slower at the 99th.
  • +
  • Windows: 23% slower at the 25th percentile, 74% at the 95th, up to 209% at the 99th.
  • +
  • In absolute terms: “parse times reaching only tens of milliseconds” even at those percentiles.
  • +
+

If your application parses very large XML payloads on the client (multi-megabyte feeds, large SVG assets), budget for parse times up to roughly 2–3× at the tail on Windows — still tens of milliseconds in the measured distribution — and consider moving heavy parsing off the critical path (e.g. into a worker via fetch + DOMParser on demand).

+ Source: Intent to Ship — ergonomics (verbatim figures) +
+ +
+

testing, bisecting, and reporting regressions

+

Because this is a behavior-preserving swap, the practical developer contract is: if XML that parsed before Chrome 153 stops parsing (or parses differently), that is a Chromium bug — verify and report it. The intent records that “two or three compatibility issues were identified during the experiment phase and have been fixed” and rates the residual risk “very low”, but the reporting path is the safety net.

+
    +
  1. Confirm the parser is the variable. Blink runtime features can be toggled from the command line (RuntimeEnabledFeatures.md). Run your repro twice: +
    # Rust parser for the four non-XSLT scenarios (Chrome 153 default)
    +chrome
    +
    +# Old libxml2 path restored for those scenarios
    +chrome --disable-blink-features=XMLRustForNonXslt
    + If the behavior difference tracks the flag, it is this migration.
  2. +
  3. Do not ship the flags as a workaround. XMLRustForNonXslt is a transition mechanism; the stated end state is to “deactivate libxml2 XML parsing and move to Rust XML parsing completely” once XSLT deprecation concludes. The opposite flag, --enable-blink-features=XMLParsingRust, force-routes almost all XML parsing through Rust today but “breaks XSLT” per its flag comment — useful only for testing the future state.
  4. +
  5. File the regression. Report at issues.chromium.org against component Blink>DOM (component query), referencing tracking bug crbug.com/466303347, with the XML input that reproduces the difference.
  6. +
+

There is no chrome://flags entry for this feature (the ChromeStatus record lists flag: false); the command-line switches above are the only toggle.

+ Source: RuntimeEnabledFeatures.md — command-line switches; Intent to Ship — compatibility and security sections; ChromeStatus API record +
+ +
+

examples

+

Parsing XML with DOMParser — detect failure structurally, never by matching error text (the message wording changed with this migration and differs across browsers anyway):

+
const doc = new DOMParser().parseFromString(xmlString, "application/xml");
+
+// Cross-browser, parser-agnostic failure check:
+const parseError = doc.querySelector("parsererror");
+if (parseError) {
+  // Malformed XML. Fine to LOG parseError.textContent for humans,
+  // but do not branch on its wording.
+  console.warn("XML did not parse:", parseError.textContent);
+} else {
+  useDocument(doc);
+}
+

XMLHttpRequest.responseXML — the well-formedness contract is unchanged: null means the response was not well-formed XML:

+
const xhr = new XMLHttpRequest();
+xhr.open("GET", "/inventory.xml");
+xhr.responseType = "document";
+xhr.onload = () => {
+  const doc = xhr.responseXML;   // Document, or null if not well-formed
+  if (doc === null) {
+    console.warn("inventory.xml is not well-formed XML");
+    return;
+  }
+  render(doc.querySelectorAll("item"));
+};
+xhr.send();
+

The Chrome Platform Showcase entry for this feature has no live demo route yet (HEAD-checked 404, 2026-09-06) — and an internal parser swap with no intended behavior difference has little to demo beyond the snippets above. If a demo lands it will appear at that URL.

+ Source: MDN — DOMParser.parseFromString (parsererror contract); MDN — XMLHttpRequest.responseXML (null on failure); chrome-platform-showcase (404 at fetch time) +
+ +
+

web platform tests

+

There is no feature-specific WPT (there is no new feature to test); instead, the migration is validated by the existing XML conformance surface. The intent answers “Is this feature fully tested by web-platform-tests?” with “Yes” — the relevant suites are the DOM parsing tests (wpt.fyi/results/domparsing) and the XMLHttpRequest tests covering responseXML (wpt.fyi/results/xhr), which now exercise the Rust parser in Chrome. Additionally, the upstream xml-rs crate runs XML conformance test suites “with a good pass rate”; investigated failures concern functionality Chrome does not use (DTD parsing) or conflicting specifications, per the intent.

+ Source: Intent to Ship — WPT answer + interop section; wpt.fyi domparsing; wpt.fyi xhr +
+ +
+

browser compatibility

+

Interim table. This is a Chromium-internal change: there is no BCD key and no web-features entry for it (webstatus.dev query: zero matches, 2026-09-06). Rows are compiled from the linked primary sources. Other engines are listed for completeness only — they are not affected by a Chromium parser swap.

+
+ + + + + + +
BrowserStatusEvidence
Chrome153 — Enabled by default on desktop, Android, and WebView (XMLRustForNonXslt status stable at trunk, 2026-09-06). Intent estimated M151; the milestone listing places it at 153. Not supported on iOS (WebKit-based)milestone listing; flag record; API record (desktop/android/webview: 153, ios: null)
EdgeNot separately reported (Chromium-based; inherits the same parser)API record (no separate Edge signal)
FirefoxUnaffected — uses its own XML parser (expat); “No signal” solicited, as there is no functional changeIntent — signals section; API record (ff view: No signal)
SafariUnaffected — WebKit keeps its own parsing (libxml2-based); “No signal” solicitedAPI record (safari view: No signal)
+
+

The web-developer-facing compatibility statement from the intent, verbatim: “No interoperability risks, the new memory-safe implementation is expected and shown to be functionally equivalent to the C++ based implementation. No functional change.” — with the residual-risk caveat quoted in the reporting section.

+ Source: chromestatus.com/feature/5309598397497344; Intent to Ship +
+ +
+

security and privacy

+
    +
  • Security is the point. Verbatim from the intent: “This change’s main intention is to improve security. Almost all XML parsing we perform will run through the Rust memory-safe parser. When XSLT deprecation concludes, we can deactivate libxml2 XML parsing and move to Rust XML parsing completely.” XML parsers are a classic memory-corruption attack surface because they process untrusted network input; Rust’s memory safety removes that bug class for these paths.
  • +
  • The vendored crate is treated as security-critical. Chromium’s README.chromium for the xml crate (v1.4.0) records Security Critical: yes and a manual update mechanism (crbug.com/449898466).
  • +
  • No privacy delta. No new data is collected, stored, or exposed; the change is not observable cross-origin. The only new telemetry is the parse-time histogram used to monitor the rollout.
  • +
+ Source: Intent to Ship — security section (verbatim); README.chromium for the xml crate +
+ +
+

specifications

+

The parser implements existing specifications — this feature introduces no new normative text of its own.

+
+ + + + + +
DocumentStatus
Extensible Markup Language (XML) 1.0 (Fifth Edition)W3C Recommendation — the specification the ChromeStatus record and intent cite as the conformance target
Namespaces in XML 1.0W3C Recommendation — namespace handling implemented by the FFI layer’s namespace-stack logic in xml_ffi.rs
xml-rs — the Rust xml crate (crates.io/crates/xml)The parser implementation; vendored in Chromium at third_party/rust/…/xml-v1, version 1.4.0 (fetched 2026-09-06)
+
+ Source: ChromeStatus API record (spec_link); README.chromium +
+ +
+

see also

+ +
+ + +
+ + diff --git a/v153/xml-parsing-in-rust-for-non-xslt-scenarios/reference-contract.json b/v153/xml-parsing-in-rust-for-non-xslt-scenarios/reference-contract.json new file mode 100644 index 00000000..eee708df --- /dev/null +++ b/v153/xml-parsing-in-rust-for-non-xslt-scenarios/reference-contract.json @@ -0,0 +1,350 @@ +{ + "schemaVersion": 1, + "id": "v153/xml-parsing-in-rust-for-non-xslt-scenarios", + "route": "/v153/xml-parsing-in-rust-for-non-xslt-scenarios/", + "kind": "other", + "completeness": "implementation-sufficient", + "assessedAt": "2026-09-06", + "assessor": "writer self-assessment; independent integrator review pending", + "notes": "This feature is an internal implementation migration (libxml2 to the Rust xml crate) with feature type 'No developer-visible change'. The developer-facing surface is therefore the migration/behavior contract: which parsing scenarios changed engines, the parser-selection algorithm, the observable error-reporting deltas, the measured performance envelope, and the test/bisect/report path. No API items are inventoried because none exist — DOMParser and XMLHttpRequest.responseXML keep their unchanged, MDN-documented contracts. The intent's 'two or three compatibility issues ... identified during the experiment phase' are not individually enumerated in any public source; the page preserves that ambiguity verbatim rather than inventing specifics.", + "sources": [ + { + "id": "intent", + "label": "blink-dev — Intent to Ship: XML Parsing in Rust for non XSLT scenarios (Dominik Röttsches, 2026-06-09; scenarios list, compat/ergonomics/security answers, WPT answer, milestones; LGTM×3)", + "url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAN6muBvUpuf3UBfv6vFxfy-b1LW-fgBbaMk02w5heHDPqbS8dg%40mail.gmail.com", + "kind": "intent" + }, + { + "id": "intent-archive", + "label": "mail-archive copy of the Intent to Ship (msg16709; readable full text used for verbatim quotes)", + "url": "https://www.mail-archive.com/blink-dev%40chromium.org/msg16709.html", + "kind": "intent" + }, + { + "id": "chromestatus-record", + "label": "ChromeStatus API record 5309598397497344 (feature type 'No developer-visible change'; desktop/android/webview 153, ios null; flag false; Blink>DOM)", + "url": "https://chromestatus.com/api/v0/features/5309598397497344", + "kind": "browser-data" + }, + { + "id": "milestone-listing", + "label": "ChromeStatus milestone=153 listing (files the feature under 'Enabled by default'; authoritative for milestone, slug, and category)", + "url": "https://chromestatus.com/api/v0/features?milestone=153", + "kind": "browser-data" + }, + { + "id": "runtime-flags", + "label": "Chromium runtime_enabled_features.json5 — XMLRustForNonXslt (status stable; covers DOMParser + XHR responseXML per its comment) and XMLParsingRust ('breaks XSLT' per its comment); fetched 2026-09-06", + "url": "https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/platform/runtime_enabled_features.json5", + "kind": "implementation" + }, + { + "id": "document-cc", + "label": "Blink Document::CreateParser (document.cc) — the parser-selection algorithm quoted verbatim on the page (frameless or SVG documents → XMLDocumentParserRs when XMLRustForNonXslt enabled; framed non-SVG XML stays on libxml2)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/core/dom/document.cc", + "kind": "implementation" + }, + { + "id": "parser-rs-h", + "label": "XMLDocumentParserRs header (WellFormed() 'Used by the XMLHttpRequest to check if the responseXML was well formed'; XmlCallbacks surface)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/core/xml/parser/xml_document_parser_rs.h", + "kind": "implementation" + }, + { + "id": "parser-rs-cc", + "label": "XMLDocumentParserRs implementation (shared XMLErrors/InsertErrorMessageBlock error path, kMaxXMLTreeDepth nesting guard, XML 1.0 prolog handling, DOCTYPE node creation)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/core/xml/parser/xml_document_parser_rs.cc", + "kind": "implementation" + }, + { + "id": "xml-ffi-rs", + "label": "xml_ffi.rs — Rust FFI layer (xml crate EventReader config; add_xhtml_entities with LAT1/SYMBOL/SPECIAL/HTML5 maps; try_get_error_details stripping the row:col prefix; is_error_resumable for 'Unexpected end of stream')", + "url": "https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/core/xml/parser/xml_ffi.rs", + "kind": "implementation" + }, + { + "id": "entities-rs", + "label": "entities.rs — XHTML named entity maps registered into the Rust reader", + "url": "https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/core/xml/parser/entities.rs", + "kind": "implementation" + }, + { + "id": "parser-h", + "label": "xml_document_parser.h — kMaxXMLTreeDepth = 5000 (shared constant between libxml2 and Rust parser paths)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/core/xml/parser/xml_document_parser.h", + "kind": "implementation" + }, + { + "id": "crate-readme", + "label": "Chromium README.chromium for the vendored xml crate (version 1.4.0; Security Critical: yes; manual update mechanism crbug.com/449898466)", + "url": "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/xml/v1/README.chromium", + "kind": "implementation" + }, + { + "id": "xml-rs-upstream", + "label": "kornelski/xml-rs — upstream repository of the Rust xml crate", + "url": "https://github.com/kornelski/xml-rs", + "kind": "other" + }, + { + "id": "ref-md", + "label": "Blink RuntimeEnabledFeatures.md — documents --enable-blink-features / --disable-blink-features command-line switches used in the bisect recipe", + "url": "https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/platform/RuntimeEnabledFeatures.md", + "kind": "release-doc" + }, + { + "id": "xml-spec", + "label": "Extensible Markup Language (XML) 1.0 (Fifth Edition) — conformance target cited by the ChromeStatus record and intent", + "url": "https://www.w3.org/TR/xml/", + "kind": "normative-spec" + }, + { + "id": "xml-names-spec", + "label": "Namespaces in XML 1.0 — namespace handling implemented by the FFI layer", + "url": "https://www.w3.org/TR/xml-names/", + "kind": "normative-spec" + }, + { + "id": "tracking-bug", + "label": "crbug.com/466303347 — tracking bug for the non-XSLT Rust XML parsing rollout (also the reference point for regression reports)", + "url": "https://crbug.com/466303347", + "kind": "implementation" + }, + { + "id": "full-switch-bug", + "label": "crbug.com/441911594 — tracking bug for full Rust XML parsing (XMLParsingRust; post-XSLT-removal end state)", + "url": "https://crbug.com/441911594", + "kind": "implementation" + }, + { + "id": "xslt-deprecation", + "label": "ChromeStatus 4709671889534976 — Deprecate and remove XSLT (the parallel track gating full libxml2 removal)", + "url": "https://chromestatus.com/feature/4709671889534976", + "kind": "browser-data" + }, + { + "id": "svg-inline-xslt-removal", + "label": "ChromeStatus 5143784390262784 — Remove Inline XSLT for production of SVG (prerequisite for scenarios 3 and 4)", + "url": "https://chromestatus.com/feature/5143784390262784", + "kind": "browser-data" + }, + { + "id": "webstatus-query", + "label": "webstatus.dev query for 'XML parsing in Rust' (zero matches — not a Baseline/web-features entry; verified 2026-09-06)", + "url": "https://api.webstatus.dev/v1/features?q=XML%20parsing%20in%20Rust", + "kind": "browser-data" + }, + { + "id": "wpt-domparsing", + "label": "wpt.fyi — domparsing suite (existing conformance surface now exercising the Rust parser in Chrome)", + "url": "https://wpt.fyi/results/domparsing", + "kind": "test" + }, + { + "id": "wpt-xhr", + "label": "wpt.fyi — xhr suite (responseXML conformance surface)", + "url": "https://wpt.fyi/results/xhr", + "kind": "test" + }, + { + "id": "mdn-domparser", + "label": "MDN — DOMParser / parseFromString (unchanged API contract; parsererror detection pattern)", + "url": "https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString", + "kind": "other" + }, + { + "id": "mdn-responsexml", + "label": "MDN — XMLHttpRequest.responseXML (unchanged API contract; null on non-well-formed)", + "url": "https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML", + "kind": "other" + }, + { + "id": "cps-route", + "label": "Chrome Platform Showcase route for this feature (HEAD-checked 404 on 2026-09-06 — no demo yet; text-link fallback used)", + "url": "https://chrome-platform-showcase.paulkinlan-ea.deno.net/v153/xml-parsing-in-rust-for-non-xslt-scenarios/", + "kind": "other" + } + ], + "inventory": [ + { + "id": "parser-selection-migration", + "name": "Non-XSLT XML parser migration (libxml2 → Rust xml crate): the four covered scenarios and the Document::CreateParser selection algorithm", + "kind": "migration", + "sourceRefs": ["intent", "document-cc", "runtime-flags", "chromestatus-record"] + }, + { + "id": "error-reporting-contract", + "name": "Observable error-reporting behavior after the swap (parsererror document, responseXML null via WellFormed(), Rust-crate error text with separated row/col, resumable end-of-stream, 5000-deep nesting guard)", + "kind": "state", + "sourceRefs": ["xml-ffi-rs", "parser-rs-h", "parser-rs-cc", "parser-h"] + }, + { + "id": "regression-response-contract", + "name": "Developer test/bisect/report contract (XMLRustForNonXslt and XMLParsingRust flags via --enable/--disable-blink-features; filing against Blink>DOM referencing crbug.com/466303347)", + "kind": "other", + "sourceRefs": ["ref-md", "runtime-flags", "tracking-bug", "intent"] + } + ], + "documentation": [ + { + "inventoryId": "parser-selection-migration", + "href": "./", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#selection-algorithm", + "sourceRefs": ["document-cc", "runtime-flags"] + }, + "inputs": { + "status": "documented", + "selector": "#what-changed", + "sourceRefs": ["intent", "chromestatus-record"] + }, + "outputs": { + "status": "documented", + "selector": "#unchanged", + "sourceRefs": ["intent", "xml-ffi-rs", "parser-rs-cc", "entities-rs"] + }, + "errors": { + "status": "documented", + "selector": "#error-reporting", + "sourceRefs": ["xml-ffi-rs", "parser-rs-h", "parser-rs-cc"] + }, + "context": { + "status": "documented", + "selector": "#selection-algorithm", + "sourceRefs": ["document-cc", "intent", "svg-inline-xslt-removal"] + }, + "lifecycle": { + "status": "documented", + "selector": "#performance", + "sourceRefs": ["intent", "chromestatus-record", "xslt-deprecation"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["mdn-domparser", "mdn-responsexml"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": [ + "milestone-listing", + "chromestatus-record", + "runtime-flags", + "intent", + "webstatus-query" + ] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["intent", "crate-readme"] + } + } + }, + { + "inventoryId": "error-reporting-contract", + "href": "./", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#error-reporting", + "sourceRefs": ["xml-ffi-rs", "parser-rs-h"] + }, + "inputs": { + "status": "documented", + "selector": "#error-reporting", + "sourceRefs": ["xml-ffi-rs", "parser-rs-cc"] + }, + "outputs": { + "status": "documented", + "selector": "#error-reporting", + "sourceRefs": ["xml-ffi-rs", "parser-rs-h", "parser-rs-cc"] + }, + "errors": { + "status": "documented", + "selector": "#error-reporting", + "sourceRefs": ["xml-ffi-rs", "parser-h", "parser-rs-cc"] + }, + "context": { + "status": "documented", + "selector": "#selection-algorithm", + "sourceRefs": ["document-cc"] + }, + "lifecycle": { + "status": "documented", + "selector": "#error-reporting", + "sourceRefs": ["xml-ffi-rs", "parser-rs-cc"] + }, + "examples": { + "status": "documented", + "selector": "#examples", + "sourceRefs": ["mdn-domparser", "mdn-responsexml"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": ["milestone-listing", "chromestatus-record", "intent"] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["intent", "crate-readme"] + } + } + }, + { + "inventoryId": "regression-response-contract", + "href": "./", + "dimensions": { + "syntax": { + "status": "documented", + "selector": "#flags", + "sourceRefs": ["ref-md", "runtime-flags"] + }, + "inputs": { + "status": "documented", + "selector": "#flags", + "sourceRefs": ["ref-md", "runtime-flags"] + }, + "outputs": { + "status": "documented", + "selector": "#flags", + "sourceRefs": ["runtime-flags", "document-cc"] + }, + "errors": { + "status": "not-applicable", + "selector": "#flags", + "rationale": "The bisect/report contract is a diagnostic procedure, not an executable API: toggling a Blink runtime feature via the documented --enable-blink-features / --disable-blink-features switches has no author-visible error surface of its own (RuntimeEnabledFeatures.md defines no error behavior for the switches), and the failure mode being diagnosed — a parse difference — is documented as this feature's error-reporting contract in #error-reporting.", + "sourceRefs": ["ref-md"] + }, + "context": { + "status": "documented", + "selector": "#flags", + "sourceRefs": ["runtime-flags", "chromestatus-record", "ref-md"] + }, + "lifecycle": { + "status": "documented", + "selector": "#flags", + "sourceRefs": ["intent", "runtime-flags", "xslt-deprecation", "full-switch-bug"] + }, + "examples": { + "status": "documented", + "selector": "#flags", + "sourceRefs": ["ref-md", "runtime-flags"] + }, + "compatibility": { + "status": "documented", + "selector": "#compatibility", + "sourceRefs": ["milestone-listing", "chromestatus-record", "runtime-flags"] + }, + "securityPrivacy": { + "status": "documented", + "selector": "#security-privacy", + "sourceRefs": ["intent", "crate-readme"] + } + } + } + ] +}