aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini2
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini3
-rw-r--r--tests/wpt/metadata/MANIFEST.json973
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/CSS2/text/white-space-002.xht.ini2
-rw-r--r--tests/wpt/metadata/css/CSS2/text/white-space-003.xht.ini2
-rw-r--r--tests/wpt/metadata/css/CSS2/visudet/line-height-204.html.ini2
-rw-r--r--tests/wpt/metadata/css/compositing/parsing/background-blend-mode-computed.html.ini57
-rw-r--r--tests/wpt/metadata/css/compositing/parsing/isolation-computed.html.ini6
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/align-content-computed.html.ini24
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/align-items-computed.html.ini24
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/align-self-computed.html.ini27
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/column-gap-computed.html.ini15
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/gap-computed.html.ini33
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/justify-content-computed.html.ini24
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/justify-items-computed.html.ini57
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/justify-self-computed.html.ini48
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/place-content-computed.html.ini69
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/place-items-computed.html.ini54
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/place-self-computed.html.ini48
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/row-gap-computed.html.ini18
-rw-r--r--tests/wpt/metadata/css/css-animations/parsing/animation-computed.html.ini33
-rw-r--r--tests/wpt/metadata/css/css-animations/parsing/animation-timing-function-computed.html.ini12
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/background-repeat/background-repeat-round-roundup.xht.ini2
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/background-attachment-computed.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/background-clip-computed.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/background-computed.html.ini78
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/background-origin-computed.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/background-position-computed.html.ini87
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/background-position-x-computed.html.ini21
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/background-position-y-computed.html.ini21
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/background-repeat-computed.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/background-size-computed.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/border-color-computed.html.ini12
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/border-image-source-computed.sub.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/border-radius-computed.html.ini27
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/border-style-computed.html.ini12
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/border-width-computed.html.ini18
-rw-r--r--tests/wpt/metadata/css/css-flexbox/parsing/flex-computed.html.ini24
-rw-r--r--tests/wpt/metadata/css/css-flexbox/parsing/flex-flow-computed.html.ini6
-rw-r--r--tests/wpt/metadata/css/css-flexbox/parsing/flex-grow-computed.html.ini6
-rw-r--r--tests/wpt/metadata/css/css-flexbox/parsing/flex-shrink-computed.html.ini6
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-computed.html.ini927
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-feature-settings-computed.html.ini24
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-kerning-computed.html.ini9
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-language-override-computed.html.ini6
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-optical-sizing-computed.html.ini6
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-size-adjust-computed.html.ini6
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-synthesis-computed.html.ini12
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-variant-caps-computed.html.ini15
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-variant-east-asian-computed.html.ini36
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-variant-ligatures-computed.html.ini30
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-variant-numeric-computed.html.ini33
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-variant-position-computed.html.ini9
-rw-r--r--tests/wpt/metadata/css/css-fonts/parsing/font-variation-settings-computed.html.ini12
-rw-r--r--tests/wpt/metadata/css/css-images/parsing/image-orientation-computed.html.ini6
-rw-r--r--tests/wpt/metadata/css/css-images/parsing/image-rendering-computed.html.ini6
-rw-r--r--tests/wpt/metadata/css/css-images/parsing/object-fit-computed.html.ini18
-rw-r--r--tests/wpt/metadata/css/css-images/parsing/object-position-computed.html.ini48
-rw-r--r--tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-color-computed.html.ini9
-rw-r--r--tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-computed.html.ini36
-rw-r--r--tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-line-computed.html.ini6
-rw-r--r--tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-skip-ink-computed.html.ini6
-rw-r--r--tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-style-computed.html.ini15
-rw-r--r--tests/wpt/metadata/css/css-text-decor/parsing/text-underline-position-computed.html.ini15
-rw-r--r--tests/wpt/metadata/css/css-text-decor/text-decoration-thickness-computed.html.ini9
-rw-r--r--tests/wpt/metadata/css/css-text-decor/text-underline-offset-computed.html.ini9
-rw-r--r--tests/wpt/metadata/css/css-text/hyphens/hyphens-out-of-flow-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/line-break/line-break-normal-018.xht.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/line-break/line-break-strict-018.xht.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/parsing/hyphens-computed.html.ini9
-rw-r--r--tests/wpt/metadata/css/css-text/parsing/line-break-computed.html.ini15
-rw-r--r--tests/wpt/metadata/css/css-text/parsing/tab-size-computed.html.ini24
-rw-r--r--tests/wpt/metadata/css/css-text/parsing/text-align-computed.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-text/parsing/text-align-last-computed.html.ini24
-rw-r--r--tests/wpt/metadata/css/css-text/parsing/text-indent-computed.html.ini12
-rw-r--r--tests/wpt/metadata/css/css-text/parsing/text-justify-computed.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-text/parsing/white-space-computed.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-text/parsing/word-boundary-detection-computed.html.ini6
-rw-r--r--tests/wpt/metadata/css/css-text/parsing/word-boundary-expansion-computed.html.ini9
-rw-r--r--tests/wpt/metadata/css/css-text/parsing/word-break-computed.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-002.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-003.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-004.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-break/word-break-break-all-007.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-break/word-break-keep-all-006.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transforms/parsing/perspective-origin-computed.html.ini63
-rw-r--r--tests/wpt/metadata/css/css-transforms/parsing/transform-box-computed.html.ini15
-rw-r--r--tests/wpt/metadata/css/css-transforms/parsing/transform-origin-computed.html.ini66
-rw-r--r--tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transitions/parsing/transition-computed.html.ini21
-rw-r--r--tests/wpt/metadata/css/css-transitions/parsing/transition-timing-function-computed.html.ini12
-rw-r--r--tests/wpt/metadata/css/css-ui/parsing/caret-color-computed.html.ini9
-rw-r--r--tests/wpt/metadata/css/css-ui/parsing/resize-computed.html.ini12
-rw-r--r--tests/wpt/metadata/css/css-ui/parsing/user-select-computed.html.ini15
-rw-r--r--tests/wpt/metadata/css/css-values/clamp-length-computed.html.ini12
-rw-r--r--tests/wpt/metadata/css/css-values/minmax-angle-computed.html.ini96
-rw-r--r--tests/wpt/metadata/css/css-values/minmax-integer-computed.html.ini30
-rw-r--r--tests/wpt/metadata/css/css-values/minmax-length-computed.html.ini240
-rw-r--r--tests/wpt/metadata/css/css-values/minmax-length-percent-computed.html.ini150
-rw-r--r--tests/wpt/metadata/css/css-values/minmax-number-computed.html.ini42
-rw-r--r--tests/wpt/metadata/css/css-values/minmax-percentage-computed.html.ini42
-rw-r--r--tests/wpt/metadata/css/css-values/minmax-time-computed.html.ini66
-rw-r--r--tests/wpt/metadata/css/cssom-view/parsing/scroll-behavior-computed.html.ini6
-rw-r--r--tests/wpt/metadata/css/cssom/border-shorthand-serialization.html.ini4
-rw-r--r--tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-computed.html.ini84
-rw-r--r--tests/wpt/metadata/css/filter-effects/parsing/color-interpolation-filters-computed.html.ini9
-rw-r--r--tests/wpt/metadata/css/filter-effects/parsing/filter-computed.html.ini9
-rw-r--r--tests/wpt/metadata/css/filter-effects/parsing/flood-color-computed.html.ini24
-rw-r--r--tests/wpt/metadata/css/filter-effects/parsing/lighting-color-computed.html.ini3
-rw-r--r--tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_html.html.ini2
-rw-r--r--tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_txt.html.ini2
-rw-r--r--tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_xml.html.ini2
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini15
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini2
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini (renamed from tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini)2
-rw-r--r--tests/wpt/metadata/html/browsers/sandboxing/sandbox-new-execution-context.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini34
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini34
-rw-r--r--tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini12
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-style-element/mutations.window.js.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini2
-rw-r--r--tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/size.large.html.ini2
-rw-r--r--tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/size.large.worker.js.ini2
-rw-r--r--tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini3
-rw-r--r--tests/wpt/metadata/permissions/test-periodic-background-sync-permission.html.ini4
-rw-r--r--tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini1
-rw-r--r--tests/wpt/metadata/resource-timing/workerStart-tao-protected.https.html.ini11
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini1
-rw-r--r--tests/wpt/metadata/webdriver/tests/set_window_rect/set.py.ini3
-rw-r--r--tests/wpt/metadata/webmessaging/with-ports/018.html.ini5
-rw-r--r--tests/wpt/metadata/webmessaging/without-ports/018.html.ini5
-rw-r--r--tests/wpt/metadata/workers/Worker-constructor-proto.any.js.ini3
-rw-r--r--tests/wpt/metadata/workers/Worker-location.sub.any.js.ini3
-rw-r--r--tests/wpt/metadata/workers/Worker-multi-port.html.ini10
-rw-r--r--tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini1
-rw-r--r--tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini1
-rw-r--r--tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini1
-rw-r--r--tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini1
-rw-r--r--tests/wpt/web-platform-tests/.taskcluster.yml2
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/get-databases.any.js4
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept_ch_feature_policy.tentative.sub.https.html4
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept_ch_feature_policy.tentative.sub.https.html.headers4
-rw-r--r--tests/wpt/web-platform-tests/client-hints/echo_client_hints_received.py2
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/META.yml1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-all-spaces-with-following-source-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-all-with-following-source-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-empty-with-following-source-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-spaces-with-following-source-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-uppercase-with-following-source-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-sizes-with-following-source-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-img-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-source-media-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-source-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-source-type-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/audio-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-img-end-tag-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-picture-no-end-tag-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-picture-slash-no-end-tag-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-picture-slash-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-source-end-tag-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-picture-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-source-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-srcset-and-picture-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-srcset-no-descriptor-with-sizes-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-srcset-w-and-x-width-sizes-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-srcset-w-no-sizes-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-type-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-type-with-picture-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-with-sizes-no-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/input-type-image-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-after-img-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-after-source-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-before-img-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-before-source-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-figure-wrapping-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-input-type-hidden-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-math-nog-img-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-noscript-after-source-no-img-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-noscript-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-p-after-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-p-before-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-p-wrapping-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-picture-before-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-picture-wrapping-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-span-after-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-span-before-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-span-wrapping-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-style-scroped-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-svg-no-img-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-svg-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-after-img-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-after-source-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-before-img-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-before-source-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-video-before-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-video-no-img-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/link-rel-icon-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-empty-picture-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-only-script-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-only-source-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-script-and-source-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-source-and-script-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-with-script-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-with-source-and-script-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-with-source-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/object-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-dl-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-hgroup-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-noscript-in-head-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-rp-novalid.html5
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-ul-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-align-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-alt-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-application-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-button-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-img-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-presentation-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-region-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-border-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-crossorigin-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-height-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-hspace-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-ismap-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-isvalid.html4
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-longdesc-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-lowsrc-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-media-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-name-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-sizes-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-src-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-usemap-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-vspace-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-width-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-auto-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-comma-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-css-comment-after-plus-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-css-comment-before-unit-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-default-first-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-default-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-deg-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-dpcm-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-dpi-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-dppx-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-empty-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-foo-bar-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-grad-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-hz-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-inherit-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-initial-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-junk-in-default-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-junk-in-source-size-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-khz-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-all-and-min-width-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-all-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-bad-junk-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-general-enclosed-junk-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-min-width-no-parenthesis-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-ms-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-negative-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-no-unit-in-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-percent-in-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-rad-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-s-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-scientific-notation-negative-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-scientific-notation-non-integer-in-exponent-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-trailing-comma-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-trailing-junk-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-turn-source-size-value-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-two-defaults-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-after-img-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-align-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-alt-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-aria-role-img-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-aria-role-presentation-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-before-and-after-img-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-border-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-crossorigin-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-height-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-hspace-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-ismap-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-longdesc-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-name-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-with-media-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-with-sizes-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-with-type-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-src-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-src-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-h-with-sizes-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-w-and-x-with-sizes-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-w-no-sizes-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-x-with-sizes-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-type-srcset-w-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-usemap-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-vspace-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-width-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-broken-url-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-comma-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-css-comment-after-descriptor-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-curly-bracket-junk-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-empty-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-function-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-h-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-infinity-x-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-leading-comma-multiple-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-leading-comma-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-nan-x-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-w-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-x-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-zero-w-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-zero-x-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-non-integer-w-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-parenthesis-junk-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-pipe-junk-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-plus-w-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-plus-x-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-scientific-notation-w-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-square-bracket-junk-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-trailing-comma-multiple-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-trailing-comma-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-1x-and-omitted-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-2x-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-integer-and-decimals-x-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-w-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-uppercase-w-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-w-and-h-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-w-and-no-descriptor-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-x-and-h-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-x-and-w-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-zero-w-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-zero-x-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/svg-image-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/track-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-media-src-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-sizes-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-srcset-src-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-srcset-novalid.html1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/messages.json1
-rw-r--r--tests/wpt/web-platform-tests/conformance-checkers/tools/picture.py7
-rw-r--r--tests/wpt/web-platform-tests/credential-management/federatedcredential-framed-get.sub.https.html28
-rw-r--r--tests/wpt/web-platform-tests/credential-management/passwordcredential-framed-get.sub.https.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-position/position-absolute-dynamic-static-position-inline.html13
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/marker-content-007.tentative.html (renamed from tests/wpt/web-platform-tests/css/css-pseudo/marker-content-007.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/marker-content-008.tentative.html (renamed from tests/wpt/web-platform-tests/css/css-pseudo/marker-content-008.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/marker-content-009.tentative.html (renamed from tests/wpt/web-platform-tests/css/css-pseudo/marker-content-009.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/marker-content-011.tentative.html (renamed from tests/wpt/web-platform-tests/css/css-pseudo/marker-content-011.html)0
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/ortho-writing-mode-001.html16
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/README.md2
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/minmax-length-computed.html8
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/minmax-length-percent-computed.html12
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/border-shorthand-serialization.html42
-rw-r--r--tests/wpt/web-platform-tests/css/support/computed-testcommon.js18
-rw-r--r--tests/wpt/web-platform-tests/css/tools/apiclient/README.md4
-rw-r--r--tests/wpt/web-platform-tests/docs/writing-tests/testdriver-extension-tutorial.md4
-rw-r--r--tests/wpt/web-platform-tests/docs/writing-tests/testdriver.md2
-rw-r--r--tests/wpt/web-platform-tests/dom/svg-insert-crash.html18
-rw-r--r--tests/wpt/web-platform-tests/dpub-aam/README.md2
-rw-r--r--tests/wpt/web-platform-tests/dpub-aria/README.md2
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-timing-iframe-camera.https.sub.html15
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-timing.https.sub.html69
-rw-r--r--tests/wpt/web-platform-tests/fetch/content-type/README.md2
-rw-r--r--tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html5
-rw-r--r--tests/wpt/web-platform-tests/fetch/metadata/appcache.tentative.https.sub.html2
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-navigation-timing-iframe.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-navigation-timing.tentative.html29
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-new-execution-context.html35
-rw-r--r--tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-about-blank.html47
-rw-r--r--tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-about-blank.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-about-srcdoc.html49
-rw-r--r--tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-about-srcdoc.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-style-element/mutations.window.js39
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini4
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html.ini3
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini1
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/set_permission.https.html.ini (renamed from tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/set_permission.html.ini)2
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html56
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/testdriver/set_permission.https.html (renamed from tests/wpt/web-platform-tests/infrastructure/testdriver/set_permission.html)4
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webauthn.idl2
-rw-r--r--tests/wpt/web-platform-tests/loading/lazyload/disconnected-image-loading-lazy.tentative.html30
-rw-r--r--tests/wpt/web-platform-tests/permissions/test-periodic-background-sync-permission.html13
-rw-r--r--tests/wpt/web-platform-tests/portals/csp/frame-ancestors.sub.html13
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/resources/sw-install.html47
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/resources/sw.js3
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/workerStart-tao-protected.https.html82
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js45
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/webxr-test.js34
-rw-r--r--tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-1.html12
-rw-r--r--tests/wpt/web-platform-tests/resources/test/tests/unit/assert_object_equals.html170
-rw-r--r--tests/wpt/web-platform-tests/resources/testdriver.js12
-rw-r--r--tests/wpt/web-platform-tests/screen_enumeration/getScreens.tentative.https.window.js (renamed from tests/wpt/web-platform-tests/screen_enumeration/getScreens.tentative.https.any.js)9
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/dummy-worker-interceptor.js5
-rw-r--r--tests/wpt/web-platform-tests/sms/detached-iframe.https.html24
-rw-r--r--tests/wpt/web-platform-tests/svg-aam/README.md2
-rw-r--r--tests/wpt/web-platform-tests/svg/META.yml1
-rw-r--r--tests/wpt/web-platform-tests/svg/animations/discard-on-discard.html54
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/reftests/marker-units-strokewidth-non-scaling-stroke.svg13
-rw-r--r--tests/wpt/web-platform-tests/svg/painting/reftests/marker-units-userspaceonuse-non-scaling-stroke.svg13
-rw-r--r--tests/wpt/web-platform-tests/svg/struct/reftests/requiredextensions-empty-string.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/struct/reftests/requiredextensions-xhtml.tentative.svg12
-rwxr-xr-xtests/wpt/web-platform-tests/tools/ci/run_tc.py88
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tc/decision.py50
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml7
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tc/tests/test_valid.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/manifest/testpaths.py36
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/browser.py16
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/run.py28
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py3
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/android_weblayer.py135
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py6
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py6
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/protocol.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py17
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-constants.tentative.html18
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.html245
-rw-r--r--tests/wpt/web-platform-tests/wai-aria/README.md2
-rw-r--r--tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html36
-rw-r--r--tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/target.html154
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation-ref.html19
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation.html65
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html69
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html49
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html31
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFErrorEvent_constructor.https.html20
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFMessage_constructor.https.html1
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html80
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan_filter.https.html19
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFReadingEvent_constructor.https.html1
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html6
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html22
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/idlharness.https.window.js1
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js3
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html40
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-timing-info.https.html64
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-onerror.https.html66
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html4
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https.html94
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/no-cors.https.html92
-rw-r--r--tests/wpt/web-platform-tests/webauthn/resources/common-inputs.js34
-rw-r--r--tests/wpt/web-platform-tests/webauthn/resources/utils.js335
-rw-r--r--tests/wpt/web-platform-tests/webauthn/webauthn-testdriver-basic.https.html117
-rw-r--r--tests/wpt/web-platform-tests/workers/Worker-constructor-proto.any.js2
-rw-r--r--tests/wpt/web-platform-tests/workers/Worker-location.sub.any.js2
-rw-r--r--tests/wpt/web-platform-tests/workers/Worker-multi-port.html6
-rw-r--r--tests/wpt/web-platform-tests/workers/WorkerGlobalScope-close.html27
-rw-r--r--tests/wpt/web-platform-tests/workers/Worker_script_mimetype.htm2
473 files changed, 6961 insertions, 1370 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
index a9e46713244..76b398963ae 100644
--- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -7,7 +7,7 @@
expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.]
- expected: TIMEOUT
+ expected: FAIL
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: FAIL
diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
index f28a19f1250..4c1aa18e695 100644
--- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
@@ -10,3 +10,6 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
+ [Revoke blob URL after calling fetch, fetch should succeed]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 5c7f260f9fe..11a218a0ae8 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -137869,6 +137869,18 @@
{}
]
],
+ "css/css-position/position-absolute-dynamic-static-position-inline.html": [
+ [
+ "css/css-position/position-absolute-dynamic-static-position-inline.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-position/position-absolute-dynamic-static-position-margin-001.html": [
[
"css/css-position/position-absolute-dynamic-static-position-margin-001.html",
@@ -139153,9 +139165,9 @@
{}
]
],
- "css/css-pseudo/marker-content-007.html": [
+ "css/css-pseudo/marker-content-007.tentative.html": [
[
- "css/css-pseudo/marker-content-007.html",
+ "css/css-pseudo/marker-content-007.tentative.html",
[
[
"/css/css-pseudo/marker-content-007-ref.html",
@@ -139165,9 +139177,9 @@
{}
]
],
- "css/css-pseudo/marker-content-008.html": [
+ "css/css-pseudo/marker-content-008.tentative.html": [
[
- "css/css-pseudo/marker-content-008.html",
+ "css/css-pseudo/marker-content-008.tentative.html",
[
[
"/css/css-pseudo/marker-content-008-ref.html",
@@ -139177,9 +139189,9 @@
{}
]
],
- "css/css-pseudo/marker-content-009.html": [
+ "css/css-pseudo/marker-content-009.tentative.html": [
[
- "css/css-pseudo/marker-content-009.html",
+ "css/css-pseudo/marker-content-009.tentative.html",
[
[
"/css/css-pseudo/marker-content-009-ref.html",
@@ -139201,9 +139213,9 @@
{}
]
],
- "css/css-pseudo/marker-content-011.html": [
+ "css/css-pseudo/marker-content-011.tentative.html": [
[
- "css/css-pseudo/marker-content-011.html",
+ "css/css-pseudo/marker-content-011.tentative.html",
[
[
"/css/css-pseudo/marker-content-011-ref.html",
@@ -144453,18 +144465,6 @@
{}
]
],
- "css/css-sizing/ortho-writing-mode-001.html": [
- [
- "css/css-sizing/ortho-writing-mode-001.html",
- [
- [
- "/css/reference/ref-filled-green-100px-square.xht",
- "=="
- ]
- ],
- {}
- ]
- ],
"css/css-sizing/orthogonal-writing-mode-float-in-inline.html": [
[
"css/css-sizing/orthogonal-writing-mode-float-in-inline.html",
@@ -207935,6 +207935,30 @@
{}
]
],
+ "svg/painting/reftests/marker-units-strokewidth-non-scaling-stroke.svg": [
+ [
+ "svg/painting/reftests/marker-units-strokewidth-non-scaling-stroke.svg",
+ [
+ [
+ "/svg/embedded/reference/green-rect-100x100.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "svg/painting/reftests/marker-units-userspaceonuse-non-scaling-stroke.svg": [
+ [
+ "svg/painting/reftests/marker-units-userspaceonuse-non-scaling-stroke.svg",
+ [
+ [
+ "/svg/embedded/reference/green-rect-100x100.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"svg/painting/reftests/markers-orient-001.svg": [
[
"svg/painting/reftests/markers-orient-001.svg",
@@ -208595,6 +208619,30 @@
{}
]
],
+ "svg/struct/reftests/requiredextensions-empty-string.svg": [
+ [
+ "svg/struct/reftests/requiredextensions-empty-string.svg",
+ [
+ [
+ "/svg/struct/scripted/blank.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "svg/struct/reftests/requiredextensions-xhtml.tentative.svg": [
+ [
+ "svg/struct/reftests/requiredextensions-xhtml.tentative.svg",
+ [
+ [
+ "/svg/struct/reftests/reference/green-100x100.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"svg/struct/reftests/use-external-resource-with-revalidation.tentative.html": [
[
"svg/struct/reftests/use-external-resource-with-revalidation.tentative.html",
@@ -226772,6 +226820,9 @@
"conformance-checkers/html/elements/picture/parent-noscript-in-head-novalid.html": [
[]
],
+ "conformance-checkers/html/elements/picture/parent-rp-novalid.html": [
+ []
+ ],
"conformance-checkers/html/elements/picture/parent-ul-novalid.html": [
[]
],
@@ -268406,6 +268457,9 @@
"feature-policy/feature-policy-frame-policy-disallowed-for-all.https.sub.html.sub.headers": [
[]
],
+ "feature-policy/feature-policy-frame-policy-timing-iframe-camera.https.sub.html": [
+ []
+ ],
"feature-policy/feature-policy-header-policy-allowed-for-all.https.sub.html.sub.headers": [
[]
],
@@ -270479,6 +270533,9 @@
"html/browsers/sandboxing/resources/post-done-to-opener.html": [
[]
],
+ "html/browsers/sandboxing/sandbox-navigation-timing-iframe.tentative.html": [
+ []
+ ],
"html/browsers/sandboxing/sandbox-new-execution-context-iframe.html": [
[]
],
@@ -270743,6 +270800,12 @@
"html/cross-origin-embedder-policy/none.https.html.headers": [
[]
],
+ "html/cross-origin-embedder-policy/require-corp-about-blank.html.headers": [
+ []
+ ],
+ "html/cross-origin-embedder-policy/require-corp-about-srcdoc.html.headers": [
+ []
+ ],
"html/cross-origin-embedder-policy/require-corp-sw-from-require-corp.https.html.headers": [
[]
],
@@ -276857,6 +276920,9 @@
"infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini": [
[]
],
+ "infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html.ini": [
+ []
+ ],
"infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini": [
[]
],
@@ -276872,7 +276938,7 @@
"infrastructure/metadata/infrastructure/testdriver/generate_test_report.html.ini": [
[]
],
- "infrastructure/metadata/infrastructure/testdriver/set_permission.html.ini": [
+ "infrastructure/metadata/infrastructure/testdriver/set_permission.https.html.ini": [
[]
],
"infrastructure/metadata/infrastructure/testdriver/virtual_authenticator.html.ini": [
@@ -281897,6 +281963,12 @@
"resource-timing/resources/status-code.py": [
[]
],
+ "resource-timing/resources/sw-install.html": [
+ []
+ ],
+ "resource-timing/resources/sw.js": [
+ []
+ ],
"resource-timing/resources/webperftestharness.js": [
[]
],
@@ -282278,6 +282350,9 @@
"resources/test/tests/unit/IdlInterfaceMember/is_to_json_regular_operation.html": [
[]
],
+ "resources/test/tests/unit/assert_object_equals.html": [
+ []
+ ],
"resources/test/tests/unit/basic.html": [
[]
],
@@ -289052,6 +289127,9 @@
"tools/wptrunner/wptrunner/browsers/__init__.py": [
[]
],
+ "tools/wptrunner/wptrunner/browsers/android_weblayer.py": [
+ []
+ ],
"tools/wptrunner/wptrunner/browsers/android_webview.py": [
[]
],
@@ -290576,6 +290654,12 @@
"webauthn/helpers.js": [
[]
],
+ "webauthn/resources/common-inputs.js": [
+ []
+ ],
+ "webauthn/resources/utils.js": [
+ []
+ ],
"webdriver/META.yml": [
[]
],
@@ -335867,6 +335951,12 @@
{}
]
],
+ "css/cssom/border-shorthand-serialization.html": [
+ [
+ "css/cssom/border-shorthand-serialization.html",
+ {}
+ ]
+ ],
"css/cssom/computed-style-001.html": [
[
"css/cssom/computed-style-001.html",
@@ -340200,6 +340290,12 @@
{}
]
],
+ "dom/svg-insert-crash.html": [
+ [
+ "dom/svg-insert-crash.html",
+ {}
+ ]
+ ],
"dom/traversal/NodeFilter-constants.html": [
[
"dom/traversal/NodeFilter-constants.html",
@@ -351565,6 +351661,12 @@
}
]
],
+ "feature-policy/feature-policy-frame-policy-timing.https.sub.html": [
+ [
+ "feature-policy/feature-policy-frame-policy-timing.https.sub.html",
+ {}
+ ]
+ ],
"feature-policy/feature-policy-header-policy-allowed-for-all.https.sub.html": [
[
"feature-policy/feature-policy-header-policy-allowed-for-all.https.sub.html",
@@ -357307,6 +357409,12 @@
{}
]
],
+ "html/browsers/sandboxing/sandbox-navigation-timing.tentative.html": [
+ [
+ "html/browsers/sandboxing/sandbox-navigation-timing.tentative.html",
+ {}
+ ]
+ ],
"html/browsers/sandboxing/sandbox-new-execution-context.html": [
[
"html/browsers/sandboxing/sandbox-new-execution-context.html",
@@ -358052,6 +358160,18 @@
}
]
],
+ "html/cross-origin-embedder-policy/require-corp-about-blank.html": [
+ [
+ "html/cross-origin-embedder-policy/require-corp-about-blank.html",
+ {}
+ ]
+ ],
+ "html/cross-origin-embedder-policy/require-corp-about-srcdoc.html": [
+ [
+ "html/cross-origin-embedder-policy/require-corp-about-srcdoc.html",
+ {}
+ ]
+ ],
"html/cross-origin-embedder-policy/require-corp-sw-from-none.https.html": [
[
"html/cross-origin-embedder-policy/require-corp-sw-from-none.https.html",
@@ -360339,6 +360459,12 @@
{}
]
],
+ "html/semantics/document-metadata/the-style-element/mutations.window.js": [
+ [
+ "html/semantics/document-metadata/the-style-element/mutations.window.html",
+ {}
+ ]
+ ],
"html/semantics/document-metadata/the-style-element/style-error-01.html": [
[
"html/semantics/document-metadata/the-style-element/style-error-01.html",
@@ -371573,6 +371699,14 @@
}
]
],
+ "infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html": [
+ [
+ "infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"infrastructure/testdriver/actions/multiTouchPointsWithPause.html": [
[
"infrastructure/testdriver/actions/multiTouchPointsWithPause.html",
@@ -371629,9 +371763,9 @@
}
]
],
- "infrastructure/testdriver/set_permission.html": [
+ "infrastructure/testdriver/set_permission.https.html": [
[
- "infrastructure/testdriver/set_permission.html",
+ "infrastructure/testdriver/set_permission.https.html",
{
"testdriver": true
}
@@ -372669,6 +372803,12 @@
{}
]
],
+ "loading/lazyload/disconnected-image-loading-lazy.tentative.html": [
+ [
+ "loading/lazyload/disconnected-image-loading-lazy.tentative.html",
+ {}
+ ]
+ ],
"loading/lazyload/iframe-loading-eager.tentative.html": [
[
"loading/lazyload/iframe-loading-eager.tentative.html",
@@ -389309,6 +389449,12 @@
{}
]
],
+ "permissions/test-periodic-background-sync-permission.html": [
+ [
+ "permissions/test-periodic-background-sync-permission.html",
+ {}
+ ]
+ ],
"picture-in-picture/css-selector.html": [
[
"picture-in-picture/css-selector.html",
@@ -390148,6 +390294,14 @@
{}
]
],
+ "portals/csp/frame-ancestors.sub.html": [
+ [
+ "portals/csp/frame-ancestors.sub.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
"portals/csp/frame-src.sub.html": [
[
"portals/csp/frame-src.sub.html",
@@ -405919,6 +406073,14 @@
{}
]
],
+ "resource-timing/workerStart-tao-protected.https.html": [
+ [
+ "resource-timing/workerStart-tao-protected.https.html",
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
"screen-capture/feature-policy.https.html": [
[
"screen-capture/feature-policy.https.html",
@@ -406041,42 +406203,9 @@
}
]
],
- "screen_enumeration/getScreens.tentative.https.any.js": [
- [
- "screen_enumeration/getScreens.tentative.https.any.html",
- {
- "script_metadata": [
- [
- "global",
- "window,dedicatedworker,sharedworker,serviceworker"
- ]
- ]
- }
- ],
- [
- "screen_enumeration/getScreens.tentative.https.any.serviceworker.html",
- {
- "script_metadata": [
- [
- "global",
- "window,dedicatedworker,sharedworker,serviceworker"
- ]
- ]
- }
- ],
- [
- "screen_enumeration/getScreens.tentative.https.any.sharedworker.html",
- {
- "script_metadata": [
- [
- "global",
- "window,dedicatedworker,sharedworker,serviceworker"
- ]
- ]
- }
- ],
+ "screen_enumeration/getScreens.tentative.https.window.js": [
[
- "screen_enumeration/getScreens.tentative.https.any.worker.html",
+ "screen_enumeration/getScreens.tentative.https.window.html",
{
"script_metadata": [
[
@@ -409560,6 +409689,12 @@
{}
]
],
+ "sms/detached-iframe.https.html": [
+ [
+ "sms/detached-iframe.https.html",
+ {}
+ ]
+ ],
"sms/idlharness.https.any.js": [
[
"sms/idlharness.https.any.html",
@@ -415638,12 +415773,6 @@
{}
]
],
- "svg/animations/discard-on-discard.html": [
- [
- "svg/animations/discard-on-discard.html",
- {}
- ]
- ],
"svg/animations/end-attribute-change-end-time.html": [
[
"svg/animations/end-attribute-change-end-time.html",
@@ -426655,12 +426784,6 @@
{}
]
],
- "web-nfc/NDEFErrorEvent_constructor.https.html": [
- [
- "web-nfc/NDEFErrorEvent_constructor.https.html",
- {}
- ]
- ],
"web-nfc/NDEFMessage_constructor.https.html": [
[
"web-nfc/NDEFMessage_constructor.https.html",
@@ -428143,6 +428266,14 @@
{}
]
],
+ "webauthn/webauthn-testdriver-basic.https.html": [
+ [
+ "webauthn/webauthn-testdriver-basic.https.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"webdriver/tests/interface.html": [
[
"webdriver/tests/interface.html",
@@ -461056,7 +461187,7 @@
"support"
],
".taskcluster.yml": [
- "8bdbabb9e2a6ddbc367f54c205ee25139a002cfe",
+ "815648df5121e596dced15ce9384815d2e6c426f",
"support"
],
".well-known/README.md": [
@@ -465908,7 +466039,7 @@
"testharness"
],
"IndexedDB/get-databases.any.js": [
- "823cfce284b2beed49821825f2794849edda5753",
+ "2e533dceb0187902045c9e77fb685ba298a10f27",
"testharness"
],
"IndexedDB/globalscope-indexedDB-SameObject.html": [
@@ -472040,11 +472171,11 @@
"support"
],
"client-hints/accept_ch_feature_policy.tentative.sub.https.html": [
- "6a5c00a759dc602c36adefd2d6d21bcee65add16",
+ "1df308ab2f82628fc251c5db21929d55193897f0",
"testharness"
],
"client-hints/accept_ch_feature_policy.tentative.sub.https.html.headers": [
- "31e3b5be18bed65b8582a86bd33098d88e6b71cb",
+ "cf453cf368ddfb8096a62ad9720af877480bcc07",
"support"
],
"client-hints/accept_ch_malformed_header.https.html": [
@@ -472064,7 +472195,7 @@
"support"
],
"client-hints/echo_client_hints_received.py": [
- "e5088c87199247416aac2397ee1a3a78f0a6e688",
+ "7427a3878e1a41aa7b8f589834bc1b5139f693a3",
"support"
],
"client-hints/echo_ua_client_hints_received.py": [
@@ -472744,7 +472875,7 @@
"support"
],
"conformance-checkers/META.yml": [
- "978b5c85721c28f267ec21ceb620017514441385",
+ "9b8c31d67eeac86ab7c5875d63d16cac965aafcc",
"support"
],
"conformance-checkers/Makefile": [
@@ -486272,663 +486403,667 @@
"support"
],
"conformance-checkers/html/elements/picture/always-matching-source-media-all-spaces-with-following-source-srcset-novalid.html": [
- "7bcac2b42f2d404203dc392d0f8b79655ffa70cd",
+ "e63f7c12190dfcaf17d40a19971e52723b046d01",
"support"
],
"conformance-checkers/html/elements/picture/always-matching-source-media-all-with-following-source-srcset-novalid.html": [
- "320ca6912484622b1a174bcc3048764a6cad2723",
+ "f97bc41f451cb93266b7f329467756667dcc61fa",
"support"
],
"conformance-checkers/html/elements/picture/always-matching-source-media-empty-with-following-source-srcset-novalid.html": [
- "a9dd0ab87ca08041db1eb4339b8ec49fee08495d",
+ "b1bf9476d906c2ae3dbbbdfb47568c7c7d3beafc",
"support"
],
"conformance-checkers/html/elements/picture/always-matching-source-media-spaces-with-following-source-srcset-novalid.html": [
- "95c36b0cd217ef58c28a7ba5227b62597f1b1511",
+ "66641ad6129b547e43b111f4626350de8574a61b",
"support"
],
"conformance-checkers/html/elements/picture/always-matching-source-media-uppercase-with-following-source-srcset-novalid.html": [
- "d495d18b46ba59ebe1cb921a211df554a3d1c090",
+ "584dfe97c704cab66749afd69f48d22dbd26931e",
"support"
],
"conformance-checkers/html/elements/picture/always-matching-source-sizes-with-following-source-srcset-novalid.html": [
- "2cb7ea8029771bad2543fa20e1b89e2fc2f4c168",
+ "4fdbe261b3fc50fd281d93475bc199a3940bba3c",
"support"
],
"conformance-checkers/html/elements/picture/always-matching-source-with-following-img-srcset-novalid.html": [
- "c2962a9a7f8cd93c303ccb7804d2f9fb57de7ec9",
+ "15e0a02c9f6cd3729e7baa9255d4eaca24192ae3",
"support"
],
"conformance-checkers/html/elements/picture/always-matching-source-with-following-source-media-novalid.html": [
- "a097307cd1ed26c9047407cb80f49c88968da39e",
+ "b3723fc63b853288fc97a4765a7659897c16e8c3",
"support"
],
"conformance-checkers/html/elements/picture/always-matching-source-with-following-source-srcset-novalid.html": [
- "d0f3ea9379ef78823b447ac5083e6d70e4997f92",
+ "45046bcc44eb8961ab76b56f0d75e8215624163d",
"support"
],
"conformance-checkers/html/elements/picture/always-matching-source-with-following-source-type-novalid.html": [
- "99eadd808d66fe64c39c3f5504a70511f7402720",
+ "ad6f6bd971ece3c3ec3baad886a36ec784ba5f53",
"support"
],
"conformance-checkers/html/elements/picture/audio-srcset-novalid.html": [
- "883f05be4326b6b66024e7f6cb9b8cc7e3dcadc4",
+ "39d47ac73abf690247130dc461795772bbb2422d",
"support"
],
"conformance-checkers/html/elements/picture/html-syntax-img-end-tag-novalid.html": [
- "0c56b597abe501f8cb3e7e0cf2f182027c8bf4aa",
+ "69676d5cb29190077a450e8d4ba8bbee9b0054db",
"support"
],
"conformance-checkers/html/elements/picture/html-syntax-picture-no-end-tag-novalid.html": [
- "a7e378d38ed27bc3ff41378db64aff9f17b7470b",
+ "f12ef1203f6e54af56627194e2eb789cf70dd7bf",
"support"
],
"conformance-checkers/html/elements/picture/html-syntax-picture-slash-no-end-tag-novalid.html": [
- "50816e522d45679768c717f2af57cde53fc46e50",
+ "a555b834d0786a725ebf6ddd4364373f00f89f81",
"support"
],
"conformance-checkers/html/elements/picture/html-syntax-picture-slash-novalid.html": [
- "0c824ef56c8f6262d2ad9b927d71e109c4bd2d58",
+ "ffb3476e3abfd96c7c50f586b881377dc8fa7dde",
"support"
],
"conformance-checkers/html/elements/picture/html-syntax-source-end-tag-novalid.html": [
- "8a8b2c447ef056e13aa8c351f1d0dcd97f1a2baf",
+ "747a6def29af825f25ceeceb7f34897db10bb9d2",
"support"
],
"conformance-checkers/html/elements/picture/img-no-src-novalid.html": [
- "a97c2a52d80609a91e960412118604a0caece759",
+ "23f09e118e880bcc6816e811352863c3a838c5ff",
"support"
],
"conformance-checkers/html/elements/picture/img-no-src-with-picture-novalid.html": [
- "aae2586129e1b869226ee9518a482d35a5f5f037",
+ "e414b938a06e3544e57491945dcd910f58a3073f",
"support"
],
"conformance-checkers/html/elements/picture/img-no-src-with-source-novalid.html": [
- "185231fd6322d70ee29ed1578eeee0d70b5eab7f",
+ "10ef732eb462646a800d841d72734344c16a36bd",
"support"
],
"conformance-checkers/html/elements/picture/img-no-src-with-srcset-and-picture-novalid.html": [
- "d7e820a1eec72e3d33d5e0c9def4c94ea931304b",
+ "d91f5a7e5848033d05b113cfca17ddccecd3769c",
"support"
],
"conformance-checkers/html/elements/picture/img-no-src-with-srcset-novalid.html": [
- "aade7df01ca033fdfd45c1f6782710e9e5ac5f9d",
+ "de5b4504db0fb8bfd7459ef24ca1c2fed9a7563c",
"support"
],
"conformance-checkers/html/elements/picture/img-srcset-no-descriptor-with-sizes-novalid.html": [
- "c23295931bb878f62e4f17d4ec6e00163979bc4c",
+ "12101c39ddba05d1a092ed3c85213b646f088640",
"support"
],
"conformance-checkers/html/elements/picture/img-srcset-w-and-x-width-sizes-novalid.html": [
- "ae5cba4e1891fef7d2d4e73793ebf94e86e25c0c",
+ "e3f979775b77965bef9b6ecb5154ba63518fb97e",
"support"
],
"conformance-checkers/html/elements/picture/img-srcset-w-no-sizes-novalid.html": [
- "c6970b7587fb278e7817bf7025f9ae28fa564a8a",
+ "3a62ae23528b3388b0ab7847f117d2eb06692804",
"support"
],
"conformance-checkers/html/elements/picture/img-type-novalid.html": [
- "41a813c1c446c9e51df7c749472128f20ebf9b45",
+ "c65a153a17e6f259775723d412048af5add7dc4f",
"support"
],
"conformance-checkers/html/elements/picture/img-type-with-picture-novalid.html": [
- "d05284ee5895617d1780b8422ba3320de69061c4",
+ "844eb5cfa0e23ae6635bba090a022a140aef8916",
"support"
],
"conformance-checkers/html/elements/picture/img-with-sizes-no-srcset-novalid.html": [
- "a77c4a53906786508e99f0531c401fc0a2c60c3f",
+ "4afba1247497a970971f93618a14c897877665c2",
"support"
],
"conformance-checkers/html/elements/picture/input-type-image-srcset-novalid.html": [
- "80c7995e5b042662a9e8901a74989befc21633d9",
+ "f8c882c05953edb4620f99cf35dfc5ccdf57eab0",
"support"
],
"conformance-checkers/html/elements/picture/junk-br-after-img-novalid.html": [
- "66ea1f9605fe0508ce580f5b105d4c3b64a191a1",
+ "21b5995725432acb5ae70543a8952ffc61558c1a",
"support"
],
"conformance-checkers/html/elements/picture/junk-br-after-source-novalid.html": [
- "55bb78c19e6d8fe4388637706ff2958d37f5bc63",
+ "ae89b13710bd0f893b4f2dd844fa3a4edc221c0f",
"support"
],
"conformance-checkers/html/elements/picture/junk-br-before-img-novalid.html": [
- "06462c42bfefc34d856e0f8cca9e94fd08d305ec",
+ "9e0f29df1d8882a3920398d042a62e4d9b291b74",
"support"
],
"conformance-checkers/html/elements/picture/junk-br-before-source-novalid.html": [
- "7f9bbc0a26f7fb13cdb68db731670adc346740d6",
+ "08fc66213decbc2b54ae77908083ea20f91e597b",
"support"
],
"conformance-checkers/html/elements/picture/junk-figure-wrapping-novalid.html": [
- "ffe22b73b13f702134a6edf24ad2b4d195c23996",
+ "948cb83a2a1dae2755710da0bcaabed732b28626",
"support"
],
"conformance-checkers/html/elements/picture/junk-input-type-hidden-novalid.html": [
- "b4763de6e4ca24505e2474c1fbefc61dc65c06c9",
+ "29e5310ce80433baa9688bbdeafd852212b1032a",
"support"
],
"conformance-checkers/html/elements/picture/junk-math-nog-img-novalid.html": [
- "5f1b85dbb282d5835c99e8e62fca5e2c423eb9e0",
+ "cbe6391cf5906cb550fec81ea4dc58175e3348c2",
"support"
],
"conformance-checkers/html/elements/picture/junk-noscript-after-source-no-img-novalid.html": [
- "957c8bc1a39a24fe6c277e18d4838e9e495ccae4",
+ "e66f61684301cc5656e45640031f6b0b2c05e10f",
"support"
],
"conformance-checkers/html/elements/picture/junk-noscript-novalid.html": [
- "45efb6712c5f8f722152995858bb3337f6c7aa4a",
+ "430cc880fb9c2ad0f288f920a8d86b5a343f11f9",
"support"
],
"conformance-checkers/html/elements/picture/junk-p-after-novalid.html": [
- "0848d51e045b891f3580fd1e4c417df251328c94",
+ "f09c344ce42d5f7b6a2b49840444161ad2f692b1",
"support"
],
"conformance-checkers/html/elements/picture/junk-p-before-novalid.html": [
- "abb046b764056244d264c21c9e50e84c5b683fe9",
+ "3e12510b541e39285e526f8e42973b2ac997aed9",
"support"
],
"conformance-checkers/html/elements/picture/junk-p-wrapping-novalid.html": [
- "c1561cf33b46fe7256af13ef11f3bc307e318409",
+ "45d19b42769ac65de325942c3e6d66215ef265d2",
"support"
],
"conformance-checkers/html/elements/picture/junk-picture-before-novalid.html": [
- "d2d3ce9ff230782a994e14963cd008289e5882e7",
+ "001e5429b2398b0c9c508f7a789a122b8c756f42",
"support"
],
"conformance-checkers/html/elements/picture/junk-picture-wrapping-novalid.html": [
- "beb9577c5ebf98a4cc6c9462a86c0f0a772c63c6",
+ "611ebde6d35869e5aafb4231235d857c2039f085",
"support"
],
"conformance-checkers/html/elements/picture/junk-span-after-novalid.html": [
- "03f6923e776cd53119ade7593ad2950678c15c2c",
+ "0e6d842539fffddb3d17355477b397b857b97aa4",
"support"
],
"conformance-checkers/html/elements/picture/junk-span-before-novalid.html": [
- "85307cfb5ec1569f39b01aeb8609767223204426",
+ "4fd5c2c1c3ba784b12a4ff2541805295cfffd385",
"support"
],
"conformance-checkers/html/elements/picture/junk-span-wrapping-novalid.html": [
- "701a263d569e1c7e598fa323bfbfb1718e129c0a",
+ "5e9262ddb70d3874615807343347da5e6f4fb4ce",
"support"
],
"conformance-checkers/html/elements/picture/junk-style-scroped-novalid.html": [
- "7aae2a0fe7a9e48b7f496d9de6fc57789bc6eb6c",
+ "bb622258f3405dbe6bcefdf2cd585676277ebfe3",
"support"
],
"conformance-checkers/html/elements/picture/junk-svg-no-img-novalid.html": [
- "0a444584989ad9f5c9b75da64cf773cd789d6875",
+ "1464b8f79ba060630ed6791644cb8d99b0d258d2",
"support"
],
"conformance-checkers/html/elements/picture/junk-svg-novalid.html": [
- "03d47c7189fe52119bfd144c87ee1cd08dabdbf2",
+ "769415548ec4e7b9b6cb0a95e1d47e92d2931612",
"support"
],
"conformance-checkers/html/elements/picture/junk-text-after-img-novalid.html": [
- "700f317c2b0984a3da0b0a50433265a68d4c47e6",
+ "f730e98115514760daa0c862cbd0d8c13e4c2067",
"support"
],
"conformance-checkers/html/elements/picture/junk-text-after-source-novalid.html": [
- "99c173e8f6049b19c235ee3e043daeb8661a6823",
+ "82023174149e4b159787e63f1efc43845af2da05",
"support"
],
"conformance-checkers/html/elements/picture/junk-text-before-img-novalid.html": [
- "256804c9623031882f8c303c417fa1eed61d8e6c",
+ "dc5b2e57a110730ebc282e4f34245563babbe1a4",
"support"
],
"conformance-checkers/html/elements/picture/junk-text-before-source-novalid.html": [
- "cf1cf0f4ea5a67cb4240c29a8f0a0aa4b033d308",
+ "0817bd361692113bee6a2392dbf57246913e4661",
"support"
],
"conformance-checkers/html/elements/picture/junk-video-before-novalid.html": [
- "2e91d9c2984aad5ccf22a6a46b5752a5b3c2963a",
+ "e7f2cd93d256c94753259a66b2f2618a5036373d",
"support"
],
"conformance-checkers/html/elements/picture/junk-video-no-img-novalid.html": [
- "05d89383b991d823b0f51a8480befb081a2cd23c",
+ "e65fe3d85e6653b94b89d542330e576ab5fabe91",
"support"
],
"conformance-checkers/html/elements/picture/link-rel-icon-srcset-novalid.html": [
- "df2d56c8efeff15a75ae531bbe99ba8a0b9085d9",
+ "bbd4ec8ecac75a75635c22859e39d50d2dd092ee",
"support"
],
"conformance-checkers/html/elements/picture/missing-img-empty-picture-novalid.html": [
- "6f604e165be844c1edeb6ebf9e6d2c01617ba0f0",
+ "5772ba29a70a0f850dfd3e1dece8ddc0a5512872",
"support"
],
"conformance-checkers/html/elements/picture/missing-img-only-script-novalid.html": [
- "96015048cff3d8e58097d620c980862f254e4388",
+ "5d1e7dca71b5497ac3a7daf35f2d7569fe5480ad",
"support"
],
"conformance-checkers/html/elements/picture/missing-img-only-source-novalid.html": [
- "b8b25bd73773e312d9fdb53a6b0e52fd026cb46f",
+ "dc535ae8fb42d01f5cca0869be6ec67bfb1b66bd",
"support"
],
"conformance-checkers/html/elements/picture/missing-img-script-and-source-novalid.html": [
- "ea61fadbdb1690fa3ecaf770417c15f5a980b4ee",
+ "c41226368c0c18730a6c923bb12700ac2731a88a",
"support"
],
"conformance-checkers/html/elements/picture/missing-img-source-and-script-novalid.html": [
- "a31715d3369cd45604d544dc5c2f9c26769fcd2a",
+ "01f4c833640101eafcf7b1af9a7d4045ebd4ffbc",
"support"
],
"conformance-checkers/html/elements/picture/multiple-img-novalid.html": [
- "bed5b38ac90e5739a99493e234e29df902b7627c",
+ "5da354872dbb56e794e93bbbdc6ca63288a071bb",
"support"
],
"conformance-checkers/html/elements/picture/multiple-img-with-script-novalid.html": [
- "973d01f807bcf7d7fbf0a2d6ce16a991b0052fc7",
+ "9a0d3c7b4437cc0777f0ce144175742e0b5278e7",
"support"
],
"conformance-checkers/html/elements/picture/multiple-img-with-source-and-script-novalid.html": [
- "8c722ac0704fd81da87dffc24ab034659cb7faca",
+ "a97d7ccca1f5cfe3488dea622688f77edd864fa2",
"support"
],
"conformance-checkers/html/elements/picture/multiple-img-with-source-novalid.html": [
- "d6c2402e85f7d9ec5503ef27f7a8501491274208",
+ "60740ee48e1ca6ab49a22d76a3e30561c2f99bc8",
"support"
],
"conformance-checkers/html/elements/picture/object-srcset-novalid.html": [
- "df784de7ef2bb9d77ba175e7b641df3b1b105a10",
+ "62482e92db9110c90634756c17d5fcae2dda99d8",
"support"
],
"conformance-checkers/html/elements/picture/parent-dl-novalid.html": [
- "12b32af343028038c4bf9a6570bbbd75dbcab183",
+ "8277b989d9483d857f1d009b585b233b34ccb424",
"support"
],
"conformance-checkers/html/elements/picture/parent-hgroup-novalid.html": [
- "3b260d27f285a858e78e31d326ffc6e7a3ce7de5",
+ "936d93e21fdcd82ce7812e0d9750b7a8d932823c",
"support"
],
"conformance-checkers/html/elements/picture/parent-noscript-in-head-novalid.html": [
- "648a16c1dc886f0e41fc4271c4b48300e929b487",
+ "d04b77248c0e14695ae8060b954a32529ebf6ca8",
+ "support"
+ ],
+ "conformance-checkers/html/elements/picture/parent-rp-novalid.html": [
+ "5763e57ae90bb98faeebb6a15eb49a80180f2062",
"support"
],
"conformance-checkers/html/elements/picture/parent-ul-novalid.html": [
- "ed39ef722bb834a83f916920b2667d6f9061a756",
+ "2bad211f31d4b536f766d8694f25f4ce0e72e63e",
"support"
],
"conformance-checkers/html/elements/picture/picture-align-novalid.html": [
- "494a44d0b5d5acf46aac9b4dfd9a1bf3aa9f7563",
+ "81ce1eeed07a288a32d117c76ff2d60341738e1d",
"support"
],
"conformance-checkers/html/elements/picture/picture-alt-novalid.html": [
- "678dfe46a99bb9230d6d32b175153b7a58b435be",
+ "80f5bfe9482ed20b2f3f4005b3f902115950780e",
"support"
],
"conformance-checkers/html/elements/picture/picture-aria-role-application-novalid.html": [
- "6d1771f2a9e99aba3dc10b0f7e5788383a30121a",
+ "db4a9356c3b872a7b8a7b675d53cf8e5eeb537be",
"support"
],
"conformance-checkers/html/elements/picture/picture-aria-role-button-novalid.html": [
- "ad144b79d7f34cfaf989ddc6f84497dabd3fe03c",
+ "e362cfdc23816589f88b2e645b4cb089ae713662",
"support"
],
"conformance-checkers/html/elements/picture/picture-aria-role-img-novalid.html": [
- "f91f267105892a33ed95a283fbb0605ffecc92ba",
+ "1d9540acf555914b12bf0f904a732ea998f22d57",
"support"
],
"conformance-checkers/html/elements/picture/picture-aria-role-presentation-novalid.html": [
- "7c8998c2ab90a157699a4509057e95858c24e9cf",
+ "428fdc7477873223f6e63ca773be9577a708fbcb",
"support"
],
"conformance-checkers/html/elements/picture/picture-aria-role-region-novalid.html": [
- "336b58d6fa98d574d941e2af5617fe492b9ab09e",
+ "b264824ea8074500581b27e66ef8b4fea7fe354f",
"support"
],
"conformance-checkers/html/elements/picture/picture-border-novalid.html": [
- "013d6d668b5b950a376fa9c8f5d56c4ad0873db1",
+ "1882bb31e6027d2d8755afd83647fcd40a18e512",
"support"
],
"conformance-checkers/html/elements/picture/picture-crossorigin-novalid.html": [
- "733be02c5bd2d462a41521778631cd5bd4c52d44",
+ "ed45d49a63f34eb0c673922ded0104bfd08a2988",
"support"
],
"conformance-checkers/html/elements/picture/picture-height-novalid.html": [
- "d5c0f0c1a0fd3f4e981b16cbbf5dabcce0484814",
+ "ad7da34636015f56fff99986d6992651dd8c2ec1",
"support"
],
"conformance-checkers/html/elements/picture/picture-hspace-novalid.html": [
- "53912928bfd0823234fe20ed490fff54725d9192",
+ "fb9b97ee5819435fa238df016df90b568ff6c6a9",
"support"
],
"conformance-checkers/html/elements/picture/picture-ismap-novalid.html": [
- "d6dbfe4254a0517a7a034dfd348eb14e98033cf3",
+ "58fcfcfae2069d49c463f1ea0541753d62d0a9e0",
"support"
],
"conformance-checkers/html/elements/picture/picture-isvalid.html": [
- "302ce107e9a5641654c678048e7915de0b385a69",
+ "efc4d4023eb0c8f3adb46f57f0f1fa298461de19",
"support"
],
"conformance-checkers/html/elements/picture/picture-longdesc-novalid.html": [
- "86d77931388830754cd03fbcdd943e333f2c56ab",
+ "2aa1e086b178c156f8b6f9b2113911baec04c5c8",
"support"
],
"conformance-checkers/html/elements/picture/picture-lowsrc-novalid.html": [
- "00361b00febae086126c94267496dbadda881ad3",
+ "be2315431dc16e945ca1924d630be144c526a466",
"support"
],
"conformance-checkers/html/elements/picture/picture-media-novalid.html": [
- "e81f5e9ef0cf7804c4421ef21480a25a3fdc4814",
+ "4e3e8c4f427a30325079fcd3161063691fe2e4cb",
"support"
],
"conformance-checkers/html/elements/picture/picture-name-novalid.html": [
- "d8867a1b2efd318aa1b54dae87edabf2cfb1acbf",
+ "b846050183e4350faac53934ccbe5bd7c7b3a8f9",
"support"
],
"conformance-checkers/html/elements/picture/picture-sizes-novalid.html": [
- "8064a3d26859804f056972afe9c096f30f1e6202",
+ "8f90bdd6d92f97597db76fa7c1ef4e162dac4d3a",
"support"
],
"conformance-checkers/html/elements/picture/picture-src-novalid.html": [
- "b5e6e30e829799091a704ab1afd04aaf04d341e5",
+ "00b5825c4f183924b4efac35d4eaf7f1d9d61582",
"support"
],
"conformance-checkers/html/elements/picture/picture-srcset-novalid.html": [
- "1f3703e50be693e6ba97b6386d748817060954b8",
+ "6075ef734eebd6d8de47e1e15e7d7a3e63a92e02",
"support"
],
"conformance-checkers/html/elements/picture/picture-usemap-novalid.html": [
- "1def698f176805c92bc4e80b8241a93b38323f57",
+ "60d2cdcf6ffcbe9e1b30e77a6d6c3e62a9913762",
"support"
],
"conformance-checkers/html/elements/picture/picture-vspace-novalid.html": [
- "fc62cd514d9b874579041db156945f3d7ffd3430",
+ "aed4fa45ac779f64f6097a3f985b9d172bc726c0",
"support"
],
"conformance-checkers/html/elements/picture/picture-width-novalid.html": [
- "1fa63afa0c4cc78c39ed58306a2a48a2bcceb07c",
+ "01b3901953257c278dcb9482c398f27de9aaf94f",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-auto-source-size-value-novalid.html": [
- "734ed4a8c52ce2316d7184c8fc331d3e9054eff8",
+ "df9c8b24e808ae99c8842db7d485759edd40d122",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-comma-novalid.html": [
- "06b83dc4ae5d191e65f881bd20b45ec59c80af0e",
+ "c33642a21d0e630e6b712f8b8b7df62390d29228",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-css-comment-after-plus-novalid.html": [
- "c3e04ca6b6e93ccbfc4a12126d3b1d1eef13b503",
+ "14c85d1e67b933edeca2a446834c797149629ded",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-css-comment-before-unit-novalid.html": [
- "3d0ad297dc244a2909710808a28a93bf1d91fa32",
+ "3e5ee116ed75e647a903c64b9a77a0b2bf10082f",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-default-first-novalid.html": [
- "c5331b0d4ef6d3ddee8cb3e5a2eb5183e99fa3d4",
+ "5afb90ef047f7158f1e389fd3402665bc3a7341e",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-default-source-size-value-novalid.html": [
- "2f70de718abd24d34091c700f10fa792365ac3c8",
+ "3a419b379c79bb43778d5506f4b7f6bf549bff91",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-deg-source-size-value-novalid.html": [
- "d0e608b95d69a56433a3cb676a7cfb3f9c9354d8",
+ "038faa5323164637ceb049730af5812c921a999e",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-dpcm-source-size-value-novalid.html": [
- "c8b8b7a2dd85cc6876e466fbe37ad4966fc2a174",
+ "84db64355b51c25e454719098a741470b4adc932",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-dpi-source-size-value-novalid.html": [
- "95160c13939edaed15a1e794f1fc4d360541f5e2",
+ "a50757617b902cf1cd13aa585c7d7f0de39f14f7",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-dppx-source-size-value-novalid.html": [
- "778f6b49b9975e033f1fd7a096d6379a396aeabf",
+ "e50642ba48539bfb77f08718296aaa31e4b362a7",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-empty-novalid.html": [
- "be232a5cd1f04e4470fa79b088c86c9e60633936",
+ "9ffe660d5fcbb3a3e7cd09955dab60310dab067b",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-foo-bar-source-size-value-novalid.html": [
- "7e969dafcb6efaffe5a7ad478fd104896b2dd788",
+ "45ce5512bf633017dbe169848e54da224a991acf",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-grad-source-size-value-novalid.html": [
- "506ebf561cb2cb288d95f7c8433b439476269cb8",
+ "ac89302bce3468558768cef67bf3bd73f36444a0",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-hz-source-size-value-novalid.html": [
- "bc4e21c3fd202cc0f4625f432d4cab21387ee7ca",
+ "94d58ec98c4c4b758488177627e99af7e0ed258c",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-inherit-source-size-value-novalid.html": [
- "c232648dc6f94a578015b32a1bd7adb9106432e2",
+ "96103df2dc0cf1a1793a64c0d09f058bf6ef76f8",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-initial-source-size-value-novalid.html": [
- "b70a543dee38bf3211d215ad925a50dcf5132a04",
+ "94dfcbd9431b10ec3e13c6308e90453836e85dde",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-junk-in-default-novalid.html": [
- "1121b56691f4fbc2c10f21261fb506f60ff5970b",
+ "d73502a8ec110eb3735002d5fc48584eee417792",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-junk-in-source-size-novalid.html": [
- "1fc7cffec927e8c3e8a7b896531cb0bf24ba10b8",
+ "9681d67bf1fc6b4fbdda727a627b8cc21058c7c4",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-khz-source-size-value-novalid.html": [
- "039da34cf6906384bca119ce02695499bb9cd492",
+ "b1a31b0c024291aa2fff6692a50d131f93a8266d",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-media-all-and-min-width-novalid.html": [
- "1ac0cf6e31ae6739e146d6a952962731786c449f",
+ "8ba429c8a1eeb0f66d45addacc006c995c2ba648",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-media-all-novalid.html": [
- "453ba8ac9e2ec824593c1622e3385acc87835cc1",
+ "e09bb2b593e30a1c612d946897060c60dbe625e3",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-media-bad-junk-novalid.html": [
- "27fc624ac537fd7f91c1aae5d627c090aa1b4f95",
+ "0d5854417f0e4688bfffca8d053832db176ea5da",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-media-general-enclosed-junk-novalid.html": [
- "b8b8f8e990912814a0fc80eb8e123fadb27239ff",
+ "67f80827174394e7f954562f3197295cc3693ea8",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-media-min-width-no-parenthesis-novalid.html": [
- "b442eeddcc116fcaf1a9c9e88bfa01356c0c4013",
+ "0a3e5cb2c640691302b8ecacdc6bcfbc8f986ea4",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-ms-source-size-value-novalid.html": [
- "4fa0acf7c17e3584539a157f9d362048c6941150",
+ "da8f67714ee94cb33256d24c75a89e7668ba6cc5",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-negative-source-size-value-novalid.html": [
- "0ac929a8194c6c8d95c828efb90be06d446d950d",
+ "ad28f404b5a7f8157ce864160cfb43cc8e7743e6",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-no-unit-in-source-size-value-novalid.html": [
- "6c01862695095f7d316ae34144b42ad963bc57a9",
+ "915d5be21f60280022da3d758a606ac07915f10b",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-percent-in-source-size-value-novalid.html": [
- "2864631e091bc0069513de4afb3ef55389d5cfe2",
+ "7d5b7c102d1fa389500cbe1251e49684677097e8",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-rad-source-size-value-novalid.html": [
- "ec98f9d349f5e8cb19438c39765e347554cb27a3",
+ "c33365f75482a462d06805ab6cbfc08b8d72668b",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-s-source-size-value-novalid.html": [
- "a85f14d919073cf421669823c661d84569a19e7e",
+ "0aac2f5330483f73bb12c3624c336642e9e275f3",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-scientific-notation-negative-novalid.html": [
- "8a4d9c66830f086e3f4814f033872053441fe952",
+ "816f2fa0e219dbfac0df55aa7e65dbd455c7a623",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-scientific-notation-non-integer-in-exponent-novalid.html": [
- "08db943cd92b4df750a8803c6af0c6c38ca8fac2",
+ "fac203893e97c29329178095632595b98a47bdc8",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-trailing-comma-novalid.html": [
- "8a6a809375f3788ea29c0f4470c73fd16edf2d9f",
+ "29316620eceead6acfe8cfc7af19163d79a35f74",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-trailing-junk-novalid.html": [
- "d987fecfc2406a9e3aebb401e6caada149475e92",
+ "deef3b0e43632001a1b459cea980e7ed2c0551ff",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-turn-source-size-value-novalid.html": [
- "6edfd39c8af1deaf957cdce416a270e2b3e7c716",
+ "4e7870d5b180ec7164eb14e91392f2e4a18bb01d",
"support"
],
"conformance-checkers/html/elements/picture/sizes-microsyntax-two-defaults-novalid.html": [
- "ee6ce9f63e367ba89d620e76286116444b4443d8",
+ "bb5a144b525746bf0fa9f4f5ddd02e622dbccfd1",
"support"
],
"conformance-checkers/html/elements/picture/source-after-img-novalid.html": [
- "3a209dc590def1544d518b6b9e9e00a0ca20620a",
+ "de9f5461ff6011e12118e4af38326bcb31cb73f9",
"support"
],
"conformance-checkers/html/elements/picture/source-align-novalid.html": [
- "e1584674f0c0986a0d5fb672323902404420dc97",
+ "958aea50ee1e61a41b390c2ac2987c2063f6a3a4",
"support"
],
"conformance-checkers/html/elements/picture/source-alt-novalid.html": [
- "0bd6646f096c9deb86e0ec93053e5b6589766535",
+ "31799a727c4149b62f9551a762786e4c02b8acff",
"support"
],
"conformance-checkers/html/elements/picture/source-aria-role-img-novalid.html": [
- "6f8d130aa1f4f77eddb33ac6bb232691c7c6ccd9",
+ "d88e29ff93dba30457102c0698a071d898936f20",
"support"
],
"conformance-checkers/html/elements/picture/source-aria-role-presentation-novalid.html": [
- "b0fcbc05e10d177d76184b4eaf89cb085ede4311",
+ "13464a014190c065cb16f8a21f5a9bf0819e5525",
"support"
],
"conformance-checkers/html/elements/picture/source-before-and-after-img-novalid.html": [
- "3e083105bbcbd6f8fdb053defc3f122dd628fe7e",
+ "9b54722b266fa619d751c704f6f7aaa521ef5c12",
"support"
],
"conformance-checkers/html/elements/picture/source-border-novalid.html": [
- "fa746a81d98de883d797a5ac830fb753073c08c5",
+ "c75a22191210f488ddaf38c1e7fe65c778a8d444",
"support"
],
"conformance-checkers/html/elements/picture/source-crossorigin-novalid.html": [
- "a4ebb7ecb0d8538967d918b93a260d27629c3115",
+ "aadccf9658356964018793eaeb517022cbc7fd88",
"support"
],
"conformance-checkers/html/elements/picture/source-height-novalid.html": [
- "2eeb159345c4c1ff1ee0e1374d4b03fe07350a94",
+ "af37ef1f1894bb32f20d581312a3eac7c80a558d",
"support"
],
"conformance-checkers/html/elements/picture/source-hspace-novalid.html": [
- "a6e717357f782e53abc2981ab4d5d5e9e958844b",
+ "cf796bd27ddb4a8523462ab3ad94de2f8a59c81a",
"support"
],
"conformance-checkers/html/elements/picture/source-ismap-novalid.html": [
- "2c02869e3578081b2bc5b708bf75e17a5f872e4f",
+ "a31514f431edd06afe771b05049dc951412760af",
"support"
],
"conformance-checkers/html/elements/picture/source-longdesc-novalid.html": [
- "c523ef2107605d9dab748b0806660c00a56326d0",
+ "84a6f124db20f7e1036ae76cf35676a16e905cd5",
"support"
],
"conformance-checkers/html/elements/picture/source-name-novalid.html": [
- "dab3247e7730c7fb1772dcc8e8ee7f590f88fbf9",
+ "0308647413877def2c1986023cf951405d23dad0",
"support"
],
"conformance-checkers/html/elements/picture/source-no-srcset-novalid.html": [
- "acb6eab05bf689928e910c2b15418ed64b4219ea",
+ "5b2a3837b610cceb891a972a2776f79358d49e34",
"support"
],
"conformance-checkers/html/elements/picture/source-no-srcset-with-media-novalid.html": [
- "a7625f755a2bc2cab6fd5f1dc87c20293d104547",
+ "a3e687433147541d4a198a89489f381df3b9d37b",
"support"
],
"conformance-checkers/html/elements/picture/source-no-srcset-with-sizes-novalid.html": [
- "517c67054b729802c8f7e2ee7b605966edcbca5e",
+ "503f7d55854a8821399140d8e864be6a6f456609",
"support"
],
"conformance-checkers/html/elements/picture/source-no-srcset-with-type-novalid.html": [
- "510c7eed6b9aa5c53b2dc128f4db67271c14d53a",
+ "4d21d5b860987f79c41e3d6e30f494d61352ba3c",
"support"
],
"conformance-checkers/html/elements/picture/source-src-novalid.html": [
- "a5eff2b7019d06a8f8fc6417128dbb9fb0c1e539",
+ "758a29a9fa51fbcd4f850da0f3087963edb62e20",
"support"
],
"conformance-checkers/html/elements/picture/source-src-srcset-novalid.html": [
- "80714cb86fb49a28d44546461679917862791d82",
+ "3dbab2194d3a74e8b2546932f4cee749fba97a9a",
"support"
],
"conformance-checkers/html/elements/picture/source-srcset-h-with-sizes-novalid.html": [
- "5da6331e53959a57e416a8fc1496f1a90a3d7784",
+ "91bbf65cfd4144e0a497ae48c8b8de1018c36350",
"support"
],
"conformance-checkers/html/elements/picture/source-srcset-w-and-x-with-sizes-novalid.html": [
- "cf6603ea8ff9fc83d7a6738f81d64e8cd0e44ff5",
+ "babdcb6b9be14f68932a0a59b24b61724f0b8dc2",
"support"
],
"conformance-checkers/html/elements/picture/source-srcset-w-no-sizes-novalid.html": [
- "0375c5415f25291f5a00b91481158afa51951624",
+ "94fd3aef229e44a340e3b0db7dc2103c16689dc1",
"support"
],
"conformance-checkers/html/elements/picture/source-srcset-x-with-sizes-novalid.html": [
- "a8efda291ee13ff898bc93a0af1830092db87f5f",
+ "4e3d679554063a2157ef785caaa3332b540364a7",
"support"
],
"conformance-checkers/html/elements/picture/source-type-srcset-w-novalid.html": [
- "a9ccaa312b8c6e3cd34717e2dc506d26da760ea7",
+ "7a8fe9af0e1ea9aaafb755c3e453c35c6a28be65",
"support"
],
"conformance-checkers/html/elements/picture/source-usemap-novalid.html": [
- "603bb472d8a7abd1a1e8c901169b0064ba417559",
+ "5eb2fdc66b9250f1e14945a0bc01a62138ecf414",
"support"
],
"conformance-checkers/html/elements/picture/source-vspace-novalid.html": [
- "2e26c73ce442d0dd797cb435ea8145dcaca04cf5",
+ "6bd83d1be992dfde9b729c8475edef7a1fb7509a",
"support"
],
"conformance-checkers/html/elements/picture/source-width-novalid.html": [
- "1649b791b29a77ac8cd9bf2ac7050029af481321",
+ "a481bd1421d8bcb8c0238ed13d2fa4228fcd915f",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-broken-url-novalid.html": [
- "82388ab5136d132ab6e60804d0c73d9b56644240",
+ "43aa15f762189fa97ac9df56fa2db6e65dff64ff",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-comma-novalid.html": [
- "ff36674849eb114a37f927005a3e53520e00ee58",
+ "94d6e199c694879698bd68a53b88baccb3e94aa3",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-css-comment-after-descriptor-novalid.html": [
- "758c3551ca7d282f5138f89b08d87c854eb45f1e",
+ "8a7360a2e69b64bef1cfbbcc5a698fe863e79def",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-curly-bracket-junk-novalid.html": [
- "346f160886d0c05dad7c9dfecd08027fd5fe752d",
+ "98230eac7b95b1e570fb0c8c4feee9c729a1112d",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-empty-novalid.html": [
- "ad8a12a3a03e9503f4ca80cb8cc8998d8a04fac5",
+ "f511e88e732dcbb70ec58130cf8efd44c18eadbc",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-function-novalid.html": [
- "499a14752b4edd7e68325673589fcabf7e8d67de",
+ "aadcc4c648687c851982c9f611886c0e418bdd3b",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-h-novalid.html": [
- "3c381e04ebac7aaa091009303ba269161988b9ea",
+ "66b739688f595eae1a97c53304c08a6fde15943c",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-infinity-x-novalid.html": [
- "51aba7b2970dc1c76abc8a3ba29989f60b0470ea",
+ "19d679d8e3130e4c1b57a2d272d49cefacf057ab",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-leading-comma-multiple-novalid.html": [
- "c715e0e35d0f9d7ad51420c6ba1fc790738bcfb1",
+ "c9407d1d7ab4efaccc2a44ed32d6015f4e56cce5",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-leading-comma-novalid.html": [
- "ad138943734fa353ec5404e946b6e0303d50fe08",
+ "c09dc183534223c34ea17c1edb444f8f24808829",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-leading-dot-x-valid.html": [
@@ -486936,131 +487071,131 @@
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-nan-x-novalid.html": [
- "da7d829dff656e3ddb3eb90f9c4c06aaa53c2310",
+ "3cd64a69cfc8a134e74989ab17788c3130c4f100",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-negative-w-novalid.html": [
- "0e61668fd882284f6e1f04a4d22edad9cb733997",
+ "093552e9a1c17af58b99f3326ee213f88775ba2b",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-negative-x-novalid.html": [
- "08e5fb70a4a8d52dff8b52ab4c5483558a18eef5",
+ "9b69e0c1f81c9446bec4cbbdaffecb94efdd7e46",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-negative-zero-w-novalid.html": [
- "ebc5d346a76c900dc04a8f4fc2b67da1a87b1d13",
+ "b4edfbe9742b4455b58ebcda9b29c3df503609cd",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-negative-zero-x-novalid.html": [
- "d1260c027fb01ce648b96f642faa8cb4d3e54418",
+ "a68489093a989640d23ec9ebb3148d92e63c7449",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-non-integer-w-novalid.html": [
- "05554d8ee376d07b5e7ea1ab05b2b2ccdc844eba",
+ "e09f9f003b71c545d9345bf3b5242c806e0b0e69",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-parenthesis-junk-novalid.html": [
- "1459e1610b2c62446e60201565e94484c9765107",
+ "b58caaa0754c369f1b1cfd7129852e51515a85db",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-pipe-junk-novalid.html": [
- "7c1ee3a0414bc93faa87f7c5949f61fd1d6f165c",
+ "9becc4fbabdb53dd5115f30893f7226bc9eac4ff",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-plus-w-novalid.html": [
- "c452c91738e49d89e307e84c5e4f4c0fb882334a",
+ "5bc9d91495ae3f7e746746b6aa678bb92cddb0b9",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-plus-x-novalid.html": [
- "7c285635d9694cdb1f9e7efe2f93d31b02033710",
+ "242a0a5eabdedb4459438f9d71aeee42eaa4d859",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-scientific-notation-w-novalid.html": [
- "b1be35753909d76b3351f50dac532209d27caf28",
+ "e17e4bc65128ef486313c5b06184f1bbe34347f6",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-square-bracket-junk-novalid.html": [
- "effc9379673f3feedf366525b6a2175aecbb135e",
+ "69e7febbd93f976f5421d734cf10a19c00111606",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-trailing-comma-multiple-novalid.html": [
- "869af64fa5b0be42d72bbec0d2a2dc22b3965311",
+ "978b7d44b119152829e42a246a05fc4af9270813",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-trailing-comma-novalid.html": [
- "9250e468dff6043226e30fb02340c7b39170c16b",
+ "0a0ad83f06f2c8c15512df53833709e7aa07ebd0",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-1x-and-omitted-novalid.html": [
- "72bc68e075bad7fe0878bbcbe601f0c600feb01d",
+ "0a381c378ca498a4143aafe157ba16a9a01c87c7",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-2x-novalid.html": [
- "9ab38cd24128dc421eefa317de8774202b9d4282",
+ "d2559446e83d4b176a6e957758f53f379e7f31e9",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-integer-and-decimals-x-novalid.html": [
- "76d6eeccf493b45817c02b0cc091a6cfa6d286f3",
+ "22130738061cfee025553601b65c6f08b28dc0bd",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-w-novalid.html": [
- "d5c8fdab130a65eedc8b08e87591d1e65ec87f11",
+ "c561e1041434f5650c5d6bdf812bf97719d89e58",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-uppercase-w-novalid.html": [
- "51601192f3faf88bb8eb28435cf76b064ac513f5",
+ "d587be5f5ee0c6468cdcca15dd0f007520e0a3ca",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-w-and-h-novalid.html": [
- "84ef6ae2bb85305e6c88b357adfb338e74f3ebca",
+ "036f5a46e45b85c275de759ebd675a546863bacd",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-w-and-no-descriptor-novalid.html": [
- "78c44834ef307a3385d51a036e43142f3eff6cfc",
+ "b4084fbd82961e87303992301609fc4b8b562c2a",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-x-and-h-novalid.html": [
- "4c26cfaf3b964eb175d9b805988dfc603bedb3ff",
+ "54d4d1f03ee5738603fc66f1f1af2499a2ec3850",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-x-and-w-novalid.html": [
- "3c0cd89b9fe3c68b0d0d5a5bef1dfbda318d3f6f",
+ "2dedd9c2c8229ffb1cb1e021ceef492d212c482d",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-zero-w-novalid.html": [
- "908343f81b226eb5b4a43586708adbd24b24b8e6",
+ "2f1a5abe9d97834c31a36ad6816d734e5b62deb3",
"support"
],
"conformance-checkers/html/elements/picture/srcset-microsyntax-zero-x-novalid.html": [
- "fbf7e98e69805b09fdaad97c930811adad9ff25a",
+ "39b610772725043de8a8f8da79f6ef7f33cde39a",
"support"
],
"conformance-checkers/html/elements/picture/svg-image-srcset-novalid.html": [
- "22950c23e83a6b1499b7e7a89edbe4fabb3a0c3b",
+ "fd6289fd7eaaaff57ffbb7abbfab7e8033fb50ed",
"support"
],
"conformance-checkers/html/elements/picture/track-srcset-novalid.html": [
- "99dd22be0fd577c4227f23108d69998fd6b2d94b",
+ "2668a8400ed4b0440d020310824b18f146732077",
"support"
],
"conformance-checkers/html/elements/picture/video-source-media-src-novalid.html": [
- "f065a12f49357079e8242592ef415434e8e5a98a",
+ "a18d20389d2f4553ad5a1171fa2e09639a995ab2",
"support"
],
"conformance-checkers/html/elements/picture/video-source-sizes-srcset-novalid.html": [
- "a20fd2db62671b25422724040da4006e39cc181c",
+ "be370c75cf782b1f170c4ed196553b9d5e8715d5",
"support"
],
"conformance-checkers/html/elements/picture/video-source-srcset-novalid.html": [
- "bde4a64b8f62b688f40a5290ee32dcf78d5c8490",
+ "440a2885908c9c4de74b21ac2a5b741dcc17ea57",
"support"
],
"conformance-checkers/html/elements/picture/video-source-srcset-src-novalid.html": [
- "f7bf48446543efeee872180f7ccb9e0c30dd8c1e",
+ "588581fce792a34abd4569b908e3ce764b163fed",
"support"
],
"conformance-checkers/html/elements/picture/video-srcset-novalid.html": [
- "2115044869dd63193d39568b0ff844c974a7b364",
+ "7ff3e3ecddbb4a492813f918ea303f6d21abbd49",
"support"
],
"conformance-checkers/html/elements/pre/model-isvalid.html": [
@@ -489812,7 +489947,7 @@
"support"
],
"conformance-checkers/messages.json": [
- "2dcd3830d72dc42396e7270557954d107e6abbc0",
+ "4439888f1753132daf7aa6c07dc55397a18d94fd",
"support"
],
"conformance-checkers/tools/build-svg-tests.py": [
@@ -489828,7 +489963,7 @@
"support"
],
"conformance-checkers/tools/picture.py": [
- "5b03f67ac9884a02c2ad0369104f9a4e4856079a",
+ "417eff14368fe057e0415363ae89531b31fd03a3",
"support"
],
"conformance-checkers/tools/url.py": [
@@ -496664,7 +496799,7 @@
"testharness"
],
"credential-management/federatedcredential-framed-get.sub.https.html": [
- "08688ab440bbfdf76896da5353bdddb3e9876c34",
+ "a7c87e2331ffdb518fe33d42aed1f269cfc8b9a3",
"testharness"
],
"credential-management/idlharness.https.window.js": [
@@ -496672,7 +496807,7 @@
"testharness"
],
"credential-management/passwordcredential-framed-get.sub.https.html": [
- "04bb16a2670b81246ae4b8c21472e777a54a23df",
+ "d86c6e09c70874f06714c9cde0b63a2cef959f69",
"testharness"
],
"credential-management/require_securecontext.html": [
@@ -587507,6 +587642,10 @@
"3ccd1462fd1530e29b43b3710b0708d270818a8f",
"reftest"
],
+ "css/css-position/position-absolute-dynamic-static-position-inline.html": [
+ "c0f9ac07188f1e49e869ac65f8a075f4827a6cb8",
+ "reftest"
+ ],
"css/css-position/position-absolute-dynamic-static-position-margin-001.html": [
"78b0ced9df2fd0ea299a7cc35e9ca0c360f453fa",
"reftest"
@@ -588387,7 +588526,7 @@
"8cec2799c2e0218e2e0c796ee4589b64d732cb39",
"support"
],
- "css/css-pseudo/marker-content-007.html": [
+ "css/css-pseudo/marker-content-007.tentative.html": [
"fb452666e3c16094945ea5212e66cf04914f47f4",
"reftest"
],
@@ -588395,7 +588534,7 @@
"6d5052b378b7a5f626a51cb033fba8f7339192aa",
"support"
],
- "css/css-pseudo/marker-content-008.html": [
+ "css/css-pseudo/marker-content-008.tentative.html": [
"88aee13dc8c9530967d73da7f09a609a40e483ac",
"reftest"
],
@@ -588403,7 +588542,7 @@
"a3db09f078148cdfe8105bc0d12186e15cf33d48",
"support"
],
- "css/css-pseudo/marker-content-009.html": [
+ "css/css-pseudo/marker-content-009.tentative.html": [
"b3627cca7554076f85d59869eec7bc80e39b82be",
"reftest"
],
@@ -588419,7 +588558,7 @@
"62a64a1e5e16ac7d90ada265317235cfb6dbe64f",
"support"
],
- "css/css-pseudo/marker-content-011.html": [
+ "css/css-pseudo/marker-content-011.tentative.html": [
"0cc20b0cdcd242021bc37b9e2d3500ed21c5b35f",
"reftest"
],
@@ -588504,7 +588643,7 @@
"reftest"
],
"css/css-pseudo/parsing/marker-supported-properties.html": [
- "a34fd76fea48eb05b080933b63e049a667d33b3c",
+ "0ffd6f4c2b82dfa9819b4890b1d7c1e61dd8e2b2",
"testharness"
],
"css/css-pseudo/parsing/tree-abiding-pseudo-elements.html": [
@@ -593299,10 +593438,6 @@
"d2617f8aa2d1c966e394abb1d1617c012ea4648e",
"testharness"
],
- "css/css-sizing/ortho-writing-mode-001.html": [
- "9342802645faa7b57a12ce4b8ef17d755fcaface",
- "reftest"
- ],
"css/css-sizing/orthogonal-writing-mode-float-in-inline.html": [
"fa95069dbf0083b0dc7095d2bb3acf20a6ccf898",
"reftest"
@@ -607500,7 +607635,7 @@
"support"
],
"css/css-transitions/README.md": [
- "f11374e47b1876d06231854907c3082b5d4774ab",
+ "f72f11dccae5e8b63de6148573723f86fbb4c708",
"support"
],
"css/css-transitions/animations/text-shadow-interpolation.html": [
@@ -612692,7 +612827,7 @@
"testharness"
],
"css/css-values/minmax-length-computed.html": [
- "410884495461508d94b3a11c385ab1afba60d75d",
+ "2d6e24e51944beb0f7d030bd99eb14576f7dd3dc",
"testharness"
],
"css/css-values/minmax-length-invalid.html": [
@@ -612700,7 +612835,7 @@
"testharness"
],
"css/css-values/minmax-length-percent-computed.html": [
- "881905ddd565960d47839f1b5a64770ad7627ba5",
+ "acd0f2b31bb7554d1e74dd43ad56bd5a68543f07",
"testharness"
],
"css/css-values/minmax-length-percent-invalid.html": [
@@ -621315,6 +621450,10 @@
"04a8a2289aa67e05a359ece1d09d961539d82571",
"testharness"
],
+ "css/cssom/border-shorthand-serialization.html": [
+ "9b5821563c49c8874f7bbd8dc4ffb2f9813a789e",
+ "testharness"
+ ],
"css/cssom/computed-style-001.html": [
"d637b066b03a71283ad89315a5c346a1715900f1",
"testharness"
@@ -625712,7 +625851,7 @@
"support"
],
"css/support/computed-testcommon.js": [
- "c7c7e073203a67844ebcdf029f5c323964a41c99",
+ "43851cb87fccb7d09cb985b294ae27d14317aedd",
"support"
],
"css/support/green.ico": [
@@ -625888,7 +626027,7 @@
"support"
],
"css/tools/apiclient/README.md": [
- "528625e45274cbb481ed8bfb2d3b2ff4d0e07dc7",
+ "6e332b852adc993940e6765ff9f7075d09a21fcf",
"support"
],
"css/tools/apiclient/__init__.py": [
@@ -635988,11 +636127,11 @@
"support"
],
"docs/writing-tests/testdriver-extension-tutorial.md": [
- "262e394353632ccc4aaa8b42955d09a0de61624f",
+ "92ce939f09f5499c7a0bdff60bf42c0752e2ff78",
"support"
],
"docs/writing-tests/testdriver.md": [
- "6b398b993b61f835dc18b1a97019ab3d3d1377e0",
+ "bc1cf8dcad17210ad0400c79ea33b1231cfff4c8",
"support"
],
"docs/writing-tests/testharness-api.md": [
@@ -637667,6 +637806,10 @@
"55a969415ce62e9c14d02e58d63b2827ae2aa6bc",
"testharness"
],
+ "dom/svg-insert-crash.html": [
+ "539fb1fae7057a2d331d6c5f8e4a07efab6bc98a",
+ "testharness"
+ ],
"dom/traversal/NodeFilter-constants.html": [
"1ce4736cc618046fdc3def9aa1bf1b9469beb56e",
"testharness"
@@ -637908,7 +638051,7 @@
"support"
],
"dpub-aam/README.md": [
- "ce4804944404b7bb51690d763070ffb7f6b6a986",
+ "2805b143bda310e6f0570e4e4a78bc8898dd3282",
"support"
],
"dpub-aam/doc-abstract-manual.html": [
@@ -638076,7 +638219,7 @@
"support"
],
"dpub-aria/README.md": [
- "b2ffb99fd51a2448af4259768603fb6388d01185",
+ "cf76613c6b9e01d1cb77f99d9c39c57f01c7861a",
"support"
],
"dpub-aria/inuse-manual.html": [
@@ -641515,6 +641658,14 @@
"961d40336aeb3ed04c58b9a8b6196b3393cb92d5",
"support"
],
+ "feature-policy/feature-policy-frame-policy-timing-iframe-camera.https.sub.html": [
+ "8ea5d77cfecae3ff97791fd29b7f5cc0cd77323b",
+ "support"
+ ],
+ "feature-policy/feature-policy-frame-policy-timing.https.sub.html": [
+ "c78d16132bc6ab1dc787fef4901f215d1377272d",
+ "testharness"
+ ],
"feature-policy/feature-policy-header-policy-allowed-for-all.https.sub.html": [
"6bf7ca65326a8a5a146b2f5c399b7adbce527805",
"testharness"
@@ -642952,7 +643103,7 @@
"support"
],
"fetch/content-type/README.md": [
- "3a9d1bd7266baaaaf74c29954debcd0187511ca4",
+ "f553b7ee8e6c9b158f73120c6c77542297d47931",
"support"
],
"fetch/content-type/resources/content-type.py": [
@@ -643136,7 +643287,7 @@
"testharness"
],
"fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html": [
- "4e34ecd94b47839f271ec8d6998c06941e76b44f",
+ "917e54984f460fc1f5a9c13c9ae4520492e17355",
"testharness"
],
"fetch/corb/style-css-mislabeled-as-html-nosniff.sub.html": [
@@ -643324,7 +643475,7 @@
"support"
],
"fetch/metadata/appcache.tentative.https.sub.html": [
- "5e35472fcfdce6972191160b57fa7cce559f96a0",
+ "3dc47c696fb87ead0ef808b99b7e6e52cff01ebe",
"testharness"
],
"fetch/metadata/embed.tentative.https.sub.html": [
@@ -647259,12 +647410,20 @@
"1bc116ada46d39b0e7b17dc448cab0c33707057a",
"testharness"
],
+ "html/browsers/sandboxing/sandbox-navigation-timing-iframe.tentative.html": [
+ "43726e7720065d9fe3c7d2ea3f3563f5f80315bb",
+ "support"
+ ],
+ "html/browsers/sandboxing/sandbox-navigation-timing.tentative.html": [
+ "686f1c0c9f6847772edbe2ef070a483db1df3d9d",
+ "testharness"
+ ],
"html/browsers/sandboxing/sandbox-new-execution-context-iframe.html": [
"dc15d57c6a352e045ef59d6103ac1540ebc3ad82",
"support"
],
"html/browsers/sandboxing/sandbox-new-execution-context.html": [
- "6692257bc416114df6c29a2b63586646f5113925",
+ "653729384feccd527e40cbe7b5ba514c09bed8ba",
"testharness"
],
"html/browsers/sandboxing/sandbox-parse-noscript-ref.html": [
@@ -648083,6 +648242,22 @@
"43c44cffd64e01f12a8d0dc22bbddfdd05a79a90",
"support"
],
+ "html/cross-origin-embedder-policy/require-corp-about-blank.html": [
+ "b94cb57b95f8c290a8d3ed32b4f6b55d4f629159",
+ "testharness"
+ ],
+ "html/cross-origin-embedder-policy/require-corp-about-blank.html.headers": [
+ "8df98474b589d070992677cb0134bd47bd0509c4",
+ "support"
+ ],
+ "html/cross-origin-embedder-policy/require-corp-about-srcdoc.html": [
+ "a832db1cebbf106b215a8f7c8900bf5f1d3287e3",
+ "testharness"
+ ],
+ "html/cross-origin-embedder-policy/require-corp-about-srcdoc.html.headers": [
+ "8df98474b589d070992677cb0134bd47bd0509c4",
+ "support"
+ ],
"html/cross-origin-embedder-policy/require-corp-sw-from-none.https.html": [
"896ea46ff08000dae262187268b7d8f57ccd1573",
"testharness"
@@ -655639,6 +655814,10 @@
"839548f01cf0283607d35bedfe4d9dfb25320982",
"reftest"
],
+ "html/semantics/document-metadata/the-style-element/mutations.window.js": [
+ "145ea8b66a97e2684ff64bc36ab63b6504841e40",
+ "testharness"
+ ],
"html/semantics/document-metadata/the-style-element/style-error-01.html": [
"0bdef0e17588cf6d2f95a2a14784f2ac26ad1c43",
"testharness"
@@ -666208,11 +666387,15 @@
"support"
],
"infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini": [
- "358c6f0902e88fc61d24368b0d0874d318ae92d3",
+ "c7b3482c786fc4532488f388b802930ccea8dc0e",
+ "support"
+ ],
+ "infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html.ini": [
+ "40626b8193ecc99e3e5ec5fe181f5553bfd8473a",
"support"
],
"infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini": [
- "83ade1dddf02b0e9d9df5721338bd68c0d0acac3",
+ "4f1939a431ae272024f62a4169bf8431efc2c5bb",
"support"
],
"infrastructure/metadata/infrastructure/testdriver/actions/pause.html.ini": [
@@ -666231,8 +666414,8 @@
"3e43b63af9545f2828efd2f7ce510bbc9a87bbfc",
"support"
],
- "infrastructure/metadata/infrastructure/testdriver/set_permission.html.ini": [
- "9a250edf1a918bc53b41ef9fee429478a9587e1e",
+ "infrastructure/metadata/infrastructure/testdriver/set_permission.https.html.ini": [
+ "2101196fa2fe436c3f94c5f84451f1746501c84d",
"support"
],
"infrastructure/metadata/infrastructure/testdriver/virtual_authenticator.html.ini": [
@@ -666455,6 +666638,10 @@
"c8169733306b4f348509145f2f04df2573cc6c3e",
"testharness"
],
+ "infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html": [
+ "5014be40f6176111107e4e8d49a67fe0af1cdb31",
+ "testharness"
+ ],
"infrastructure/testdriver/actions/multiTouchPointsWithPause.html": [
"645caf2c720ee6af08a37d4c7e1e1d68c565fd55",
"testharness"
@@ -666491,8 +666678,8 @@
"2170347c9729564f7e492009b3d20b3267422c1d",
"testharness"
],
- "infrastructure/testdriver/set_permission.html": [
- "1e92a26398d3215646e4d4d152549510abea1cdc",
+ "infrastructure/testdriver/set_permission.https.html": [
+ "af743f638289602ecc512a7dbd4000de6056b796",
"testharness"
],
"infrastructure/testdriver/virtual_authenticator.html": [
@@ -667080,7 +667267,7 @@
"support"
],
"interfaces/webauthn.idl": [
- "fd35c0dfd373a6b31ae3664ca20637b07c35ecec",
+ "29025f35eecb5c82b33ffcc7039c4a99f081f4e3",
"support"
],
"interfaces/webdriver.idl": [
@@ -667903,6 +668090,10 @@
"0a7b408b649fe04604b6f08188a2399eefbbd0a4",
"support"
],
+ "loading/lazyload/disconnected-image-loading-lazy.tentative.html": [
+ "c3b72b26239ea18c0575b65d0d6aa3aaef08792d",
+ "testharness"
+ ],
"loading/lazyload/iframe-loading-eager.tentative.html": [
"26209332ff5a0c4af64e0ae4893f1c396a111ce1",
"testharness"
@@ -681219,6 +681410,10 @@
"c824ecf1d2b47630f8ebcef3ed42c8c908c8e9eb",
"testharness"
],
+ "permissions/test-periodic-background-sync-permission.html": [
+ "c3b6a1d8b9e2ae2e0d1819959fb03d43fa058fbb",
+ "testharness"
+ ],
"picture-in-picture/META.yml": [
"b878dd547b8267196db6563b0009035af3d4f52a",
"support"
@@ -681771,6 +681966,10 @@
"207d477697d823d6611b4d8dc6681b3e2fc90a73",
"testharness"
],
+ "portals/csp/frame-ancestors.sub.html": [
+ "57f1eb3d88c7b27a1ab82e66b06a7e7511bb0b1d",
+ "testharness"
+ ],
"portals/csp/frame-src.sub.html": [
"34f1474d4b37f6a867b858a0bfc88e03db48153a",
"testharness"
@@ -695623,6 +695822,14 @@
"6ddad159524db2870acd4a56115af6d74c460387",
"support"
],
+ "resource-timing/resources/sw-install.html": [
+ "0a2fbe2245b865681e88178903e450a6edfe9d73",
+ "support"
+ ],
+ "resource-timing/resources/sw.js": [
+ "4e4fe1e1f068fd88e57506ac4ac295a9ea4f0193",
+ "support"
+ ],
"resource-timing/resources/webperftestharness.js": [
"8e04e52f9c57fafb6a599da3a1963aa6ed545e6f",
"support"
@@ -695663,6 +695870,10 @@
"598a727bf88e7f47556d509f6929a86b64b0506c",
"support"
],
+ "resource-timing/workerStart-tao-protected.https.html": [
+ "cf5c2e3d606fba4543e251caa980abc71a901c14",
+ "testharness"
+ ],
"resources/.htaccess": [
"fd46101ca0099e76a8ed5723515f6e1bd220aebb",
"support"
@@ -695776,7 +695987,7 @@
"support"
],
"resources/chromium/nfc-mock.js": [
- "224a6078c1e0d95299d1e3a2e79c6bf3f7614b5f",
+ "6823f6362fa13c77c3acb556b4b7f6467144dde8",
"support"
],
"resources/chromium/sensor.mojom.js": [
@@ -695836,7 +696047,7 @@
"support"
],
"resources/chromium/webxr-test.js": [
- "c4bfec3547d42524c7d3df4a0cda47720466251c",
+ "739d771d40bede77937cf5f767727fff63f8b9f9",
"support"
],
"resources/chromium/webxr-test.js.headers": [
@@ -695924,7 +696135,7 @@
"support"
],
"resources/test/tests/functional/api-tests-1.html": [
- "e4246e7faba8a57920bca06eafa11f7817fb07ed",
+ "7d46994aa9903fcd156477d56eefe1d6157ffb32",
"support"
],
"resources/test/tests/functional/api-tests-2.html": [
@@ -696151,6 +696362,10 @@
"abfa4ab800b3c8e6b5f6fd3b42a982cc2e4fe99e",
"support"
],
+ "resources/test/tests/unit/assert_object_equals.html": [
+ "73a9b958438c1b83d1e4b4c79870013c98bc5ad7",
+ "support"
+ ],
"resources/test/tests/unit/basic.html": [
"d907c7bb9fbf4fa4dc674bd57e6a856b68ed13ea",
"support"
@@ -696220,7 +696435,7 @@
"support"
],
"resources/testdriver.js": [
- "22d5ead72267a39b7a0b954b479e60ab6516ec9f",
+ "f102c8774f7efcb3e9c9bddebcd5ab3d715011d2",
"support"
],
"resources/testdriver.js.headers": [
@@ -696339,8 +696554,8 @@
"e1b50f670105f3a05dacd3518d62770685121c67",
"support"
],
- "screen_enumeration/getScreens.tentative.https.any.js": [
- "0b8c226ddbd7035d29760b8afa84d8429a3d3482",
+ "screen_enumeration/getScreens.tentative.https.window.js": [
+ "3b893bbbb772a773dfa9c18cf4bd844cfe4db99f",
"testharness"
],
"scroll-animations/META.yml": [
@@ -698716,7 +698931,7 @@
"support"
],
"service-workers/service-worker/resources/dummy-worker-interceptor.js": [
- "1c381fd180e2b3d3b7a11394926096141b0a3c76",
+ "5129ed51ea550c210abc53e11209e7a3e9dc36b1",
"support"
],
"service-workers/service-worker/resources/dummy.html": [
@@ -701111,6 +701326,10 @@
"1f34178beace0786a347a6b378489b3741c960d9",
"support"
],
+ "sms/detached-iframe.https.html": [
+ "bde6e25b80c63ff30ef279bc576e3d993466c3f3",
+ "testharness"
+ ],
"sms/idlharness.https.any.js": [
"0c31744937c6dbc9b292586ab8ce5f10b268f3ed",
"testharness"
@@ -701820,11 +702039,11 @@
"support"
],
"svg-aam/README.md": [
- "e9163e3536129676dbc5e381180f6ec9b3143e89",
+ "a1dcef58700dd65643e49dcd4f1abec417f12f34",
"support"
],
"svg/META.yml": [
- "ee0fff087c4f9a5723f53cc002e228a713e730da",
+ "a928f0c399126a5e463e1497c4a454dabe6f24fe",
"support"
],
"svg/README.md": [
@@ -702091,10 +702310,6 @@
"4879e5f6ce8774f176526406ecff680bba65b6a9",
"testharness"
],
- "svg/animations/discard-on-discard.html": [
- "4a6b9f9368dcb020120f502e4528860beb5f14c6",
- "testharness"
- ],
"svg/animations/end-attribute-change-end-time.html": [
"9f05d7d405d364a1eadfa104c1c4bd90a2bf3b8c",
"testharness"
@@ -705575,6 +705790,14 @@
"d1a7dbf747efa7c26973773c8233c38c3ff74ea0",
"testharness"
],
+ "svg/painting/reftests/marker-units-strokewidth-non-scaling-stroke.svg": [
+ "116c61c45ebfa7d2725df78f3a920fc3c24c7165",
+ "reftest"
+ ],
+ "svg/painting/reftests/marker-units-userspaceonuse-non-scaling-stroke.svg": [
+ "7c4c5e0fcf3352e89f808e308c5477ae7e862f24",
+ "reftest"
+ ],
"svg/painting/reftests/markers-orient-001-ref.svg": [
"871003f3a2303404696d467a7cfaad729b811206",
"support"
@@ -706123,6 +706346,14 @@
"120941444a4898197d6b6001f9908a6cd48b62ba",
"support"
],
+ "svg/struct/reftests/requiredextensions-empty-string.svg": [
+ "28f5da4a3e4358821d907a2883b6ef8fa40eeaa4",
+ "reftest"
+ ],
+ "svg/struct/reftests/requiredextensions-xhtml.tentative.svg": [
+ "911f983cab68ee733b01517486b198fa6fcf3dc0",
+ "reftest"
+ ],
"svg/struct/reftests/support/etag-max-age-zero-icons.svg": [
"6f7fb0f830158972800e2c5c6d8f8de6a53bf2c8",
"support"
@@ -706844,7 +707075,7 @@
"support"
],
"tools/ci/run_tc.py": [
- "b4cb2b01b9745de1c234c9eeaf414e65b8fe7ae3",
+ "482de1ad336a1824d2335c9e6d7996063f71a78e",
"support"
],
"tools/ci/taskcluster-run.py": [
@@ -706860,7 +707091,7 @@
"support"
],
"tools/ci/tc/decision.py": [
- "92a27ef79ab3fb49aff79197ca503b7a766c8c03",
+ "0c935b93f8ee87f66dadefddd3a116160ed9dd3f",
"support"
],
"tools/ci/tc/download.py": [
@@ -706872,7 +707103,7 @@
"support"
],
"tools/ci/tc/tasks/test.yml": [
- "a64ef3749211bbb2b3580efc2eee3ea5a810ea6f",
+ "6e5e1b5070adc14c0c90498b82e5fecaae4f6c1e",
"support"
],
"tools/ci/tc/testdata/epochs_daily_push_event.json": [
@@ -706900,7 +707131,7 @@
"support"
],
"tools/ci/tc/tests/test_valid.py": [
- "d6cbfba4e2cb69488ce585d4db9064dcaa5fe6fa",
+ "4280387127d35a513592908242c60f4bd3610ffe",
"support"
],
"tools/ci/tests/test_jobs.py": [
@@ -707184,7 +707415,7 @@
"support"
],
"tools/manifest/testpaths.py": [
- "3c1f09d437304a0ce7bbcbc542dede672f01a17e",
+ "2197792cd64eb8b61a48c1615089fd5376902a8f",
"support"
],
"tools/manifest/tests/__init__.py": [
@@ -711664,7 +711895,7 @@
"support"
],
"tools/wpt/browser.py": [
- "a94d5509cc8ba1bfcc4cbceafd9f511a4f9804ab",
+ "3ee98d959ec5befc58b884e0ec5385d554bc8725",
"support"
],
"tools/wpt/commands.json": [
@@ -711700,7 +711931,7 @@
"support"
],
"tools/wpt/run.py": [
- "4c1f2c99128de8937dca01479b1b4c4319414f8b",
+ "0c732e7ae8aee7d441015642ba8f2fcbd7e66e0e",
"support"
],
"tools/wpt/testfiles.py": [
@@ -711776,7 +712007,7 @@
"support"
],
"tools/wptrunner/docs/expectation.rst": [
- "77938abe03d55ce14571ec1b4c2b43d0ed4a409b",
+ "e0bc7a850bf581921d5062a07154d01a0cb18e4e",
"support"
],
"tools/wptrunner/docs/internals.rst": [
@@ -711972,7 +712203,11 @@
"support"
],
"tools/wptrunner/wptrunner/browsers/__init__.py": [
- "957d2a689acda4801cddc351e1c2cd4c06a8d7e3",
+ "da68ddb861876262864b3cf7954f2584edb06c65",
+ "support"
+ ],
+ "tools/wptrunner/wptrunner/browsers/android_weblayer.py": [
+ "93f4d6b630d288c75f888cb7304bbf8a4195db6c",
"support"
],
"tools/wptrunner/wptrunner/browsers/android_webview.py": [
@@ -712072,7 +712307,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/base.py": [
- "c8a26d042ebb3fc8276b73f3520e8e523bffc7df",
+ "9e302107118fd42fb84765fb16d87ecbf0270c5a",
"support"
],
"tools/wptrunner/wptrunner/executors/executorchrome.py": [
@@ -712116,7 +712351,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/executorwebdriver.py": [
- "8ea59b2577d0825080e1f425e33e114d62b695fb",
+ "221f48a3ea9cb8cf37a687203bce94af5a8b0f2a",
"support"
],
"tools/wptrunner/wptrunner/executors/executorwebkit.py": [
@@ -712128,7 +712363,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/protocol.py": [
- "1a47fa9f1d8cc46a7fe5b8657b20dea6de60b0bf",
+ "a1e8dacecb695af1039829dceb493f91da77b6dc",
"support"
],
"tools/wptrunner/wptrunner/executors/pytestrunner/__init__.py": [
@@ -712244,7 +712479,7 @@
"support"
],
"tools/wptrunner/wptrunner/testrunner.py": [
- "8dece20a8e93e279204ccfee70f07ce8a8debab3",
+ "f1b1faa4498ca61483159acd690f458b5ba32fbe",
"support"
],
"tools/wptrunner/wptrunner/tests/__init__.py": [
@@ -712872,7 +713107,7 @@
"testharness"
],
"trusted-types/TrustedTypePolicyFactory-constants.tentative.html": [
- "001a6cea4813b0c7f720448d95690c63429405a6",
+ "0ba2eb62375a57c78f1caba4592e880b92483599",
"testharness"
],
"trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html": [
@@ -712964,7 +713199,7 @@
"testharness"
],
"trusted-types/block-text-node-insertion-into-script-element.tentative.html": [
- "a6aa061f7307330e027c3e8b26e6b931cee2bb7c",
+ "04b19f7e42111a11073a4049350f7d8ddde7d1b2",
"testharness"
],
"trusted-types/csp-block-eval.tentative.html": [
@@ -716852,7 +717087,7 @@
"support"
],
"wai-aria/README.md": [
- "66d6d087f68e7b5d0220c80ac0b2f5f0ab88cf4c",
+ "4e1a7706e33337e798f98d983a89eb44b77a21d5",
"support"
],
"wai-aria/alertdialog_modal_false-manual.html": [
@@ -718336,7 +718571,7 @@
"testharness"
],
"web-animations/interfaces/Animatable/animate.html": [
- "2d09cdf4545e8073786215169fd3f26c28a7e119",
+ "95d7db7bb3ba36fc9a0914ebe0d2c8e910e29cf1",
"testharness"
],
"web-animations/interfaces/Animatable/getAnimations.html": [
@@ -718468,7 +718703,7 @@
"testharness"
],
"web-animations/interfaces/KeyframeEffect/target.html": [
- "10f42eea4e5b406c822802c1078fcc1295cb8a39",
+ "a9827d64d3d076185daee4787589832cc74f0ec0",
"testharness"
],
"web-animations/resources/easing-tests.js": [
@@ -718548,11 +718783,11 @@
"testharness"
],
"web-animations/timing-model/animations/reverse-running-animation-ref.html": [
- "0aaa0443649acd9453f5b52534016a92889b157e",
+ "7fcdf9156f82ae51ed3004fa00ef1fc1f01192db",
"support"
],
"web-animations/timing-model/animations/reverse-running-animation.html": [
- "584aa0029ea2e5aa4926035756b5f49d74fa9f54",
+ "c5179a72c9dc83ce1c4426b5a844d61a039e250b",
"reftest"
],
"web-animations/timing-model/animations/reversing-an-animation.html": [
@@ -718564,15 +718799,15 @@
"testharness"
],
"web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html": [
- "b1fc43e795226dd8a395bc62ebee9792c541b191",
+ "6687ad7612e2b37fc7d4d5604e27252cbeb7166d",
"testharness"
],
"web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html": [
- "9d07d53df46164d53b1a3c8f4a10787608c5f014",
+ "0522c43b16a881a14b339294e5ed56b8ae064f92",
"testharness"
],
"web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html": [
- "a1727994bdb9b8da10bfdd36baa3d8e0ccc4ef1d",
+ "14c9c60100585554f55dde1e225fdfc5b27f1df3",
"testharness"
],
"web-animations/timing-model/animations/setting-the-target-effect-of-an-animation.html": [
@@ -718759,12 +718994,8 @@
"32c24570db165422a60a18b767c828dab10c5b9c",
"support"
],
- "web-nfc/NDEFErrorEvent_constructor.https.html": [
- "243893620c64a7d9fd0e71f506293dc5705716e7",
- "testharness"
- ],
"web-nfc/NDEFMessage_constructor.https.html": [
- "f32f179b95798fe590a518603eff35265cd51494",
+ "1c842f5c7b61c35d09e2cd41014e1b8e04839624",
"testharness"
],
"web-nfc/NDEFReader-document-hidden-manual.https.html": [
@@ -718772,11 +719003,11 @@
"manual"
],
"web-nfc/NDEFReader_scan.https.html": [
- "78160fbcb2ab11a8ebc80c39a6fd935eddc0844b",
+ "d3101ab8e1a9b3da7b16b4b2530493ac46ed2528",
"testharness"
],
"web-nfc/NDEFReader_scan_filter.https.html": [
- "4c1e7de44008889386e71431d7b4d0042739fe4e",
+ "850d9b9c08833e6048b88e84c14945d3c0629a17",
"testharness"
],
"web-nfc/NDEFReader_scan_iframe.https.html": [
@@ -718784,11 +719015,11 @@
"testharness"
],
"web-nfc/NDEFReadingEvent_constructor.https.html": [
- "3d734105e9ce0ed68e86e421f80847fa485779fe",
+ "cc56f8a18bdc6f7a0cde3f9f7246330f8e867dd6",
"testharness"
],
"web-nfc/NDEFRecord_constructor.https.html": [
- "1b2dda9bfc87da146c3b3562dff64568fb68f9b1",
+ "f3546b99dcb9461a519579b656ce33adacaaf5a3",
"testharness"
],
"web-nfc/NDEFWriter-document-hidden-manual.https.html": [
@@ -718796,7 +719027,7 @@
"manual"
],
"web-nfc/NDEFWriter_push.https.html": [
- "a33b1fab3034af2058a133e8182086dc2cb2dfbe",
+ "bacbcaaeff39955c062a99f93d3ee443184e824e",
"testharness"
],
"web-nfc/README.md": [
@@ -718804,7 +719035,7 @@
"support"
],
"web-nfc/idlharness.https.window.js": [
- "74ffc21b2204ea894dcea32a4aface9bc69739c1",
+ "a1eb3386b73a8425dbd85bf1498bcce783a10857",
"testharness"
],
"web-nfc/nfc_insecure_context.html": [
@@ -718812,7 +719043,7 @@
"testharness"
],
"web-nfc/resources/nfc-helpers.js": [
- "3ce725a7c475b28d96f15dfd12736ed8a54f0006",
+ "b9e260ac71403a8e30422b4f8d1d63c40d3d00c4",
"support"
],
"web-nfc/resources/support-iframe.html": [
@@ -719428,11 +719659,11 @@
"testharness"
],
"webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html": [
- "d87e35b571d75c0ff595ab023f4a54a420111523",
+ "84458d0aaa77788b6de7ccd09b64f18a6bf9ede4",
"testharness"
],
"webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-timing-info.https.html": [
- "79d402c51862f019413f4ed789bbe8ce4b27e175",
+ "5f4bee7c5312c89207a25801cd0c2d6055ec00b5",
"testharness"
],
"webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html": [
@@ -719456,11 +719687,11 @@
"testharness"
],
"webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-onerror.https.html": [
- "0a9966add85c6cdd35ce54eb05aae0986c5d9b8e",
+ "0914edbb3b0ababb646784be605177c8e4a79a09",
"testharness"
],
"webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html": [
- "9d65d872b987943491cace95b8cdf729158fbd0d",
+ "a8a7f5ed1de78b90432641d617e60a1b58dd893f",
"testharness"
],
"webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-options.https.html": [
@@ -719812,7 +720043,7 @@
"support"
],
"webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https.html": [
- "a2fa8040b2c6100f7ec22f0f133525808403ce01",
+ "38bd94a037c3b15e59fe6e99acbf013636de9003",
"testharness"
],
"webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html": [
@@ -719820,7 +720051,7 @@
"testharness"
],
"webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/no-cors.https.html": [
- "38324a9f67a67f50f134fb78af43117e2ec9b8c8",
+ "de2f0b7dd3b680cbb38d1b0546c6656b1e03e1b2",
"testharness"
],
"webaudio/the-audio-api/the-mediastreamaudiodestinationnode-interface/.gitkeep": [
@@ -720067,6 +720298,14 @@
"ff0efcb656a740e9fdee2a3cc8dbfddda9b2a563",
"testharness"
],
+ "webauthn/resources/common-inputs.js": [
+ "8370f7f079a014ea58dd3ce606b7fa48dcc88a3e",
+ "support"
+ ],
+ "webauthn/resources/utils.js": [
+ "f361a94d2e4f63b18bf1f7f2971db6322a30000f",
+ "support"
+ ],
"webauthn/securecontext.http.html": [
"52786950f383eb0454edcf9fad9b637dde956ca8",
"testharness"
@@ -720075,6 +720314,10 @@
"6c9aabd11ea3a51688962890dde29d5c41ec6c6f",
"testharness"
],
+ "webauthn/webauthn-testdriver-basic.https.html": [
+ "7790f5d0d3fd7567df24a3aeebc4d7541c118e1a",
+ "testharness"
+ ],
"webdriver/META.yml": [
"a397b497c32234d3889c738f51b96a3ba3b2a96f",
"support"
@@ -727524,7 +727767,7 @@
"testharness"
],
"workers/Worker-constructor-proto.any.js": [
- "73eabd55226d67b05fc3a86a9e57880b9a725e5b",
+ "90ad767b9807853f6fbc611dbeac435b4c14079b",
"testharness"
],
"workers/Worker-custom-event.any.js": [
@@ -727536,7 +727779,7 @@
"testharness"
],
"workers/Worker-location.sub.any.js": [
- "2ef944553105767535f6e3119048091f959bfac8",
+ "1c3dabff0361c03b0a338b004854f728a8ea5d29",
"testharness"
],
"workers/Worker-messageport.html": [
@@ -727544,7 +727787,7 @@
"testharness"
],
"workers/Worker-multi-port.html": [
- "9a89583ad91b40e64c7a3682da1e5053e18b4d26",
+ "138f8f02d4e722509905f01cd64bfb93b997f9bd",
"testharness"
],
"workers/Worker-nested-importScripts-error.html": [
@@ -727592,7 +727835,7 @@
"testharness"
],
"workers/WorkerGlobalScope-close.html": [
- "a193a3478f4a58176314727898593428a53726a3",
+ "08ab1ca515c60b6ecf1d3e4555d8ade349e28c13",
"testharness"
],
"workers/WorkerGlobalScope_ErrorEvent_colno.htm": [
@@ -727768,7 +728011,7 @@
"testharness"
],
"workers/Worker_script_mimetype.htm": [
- "04fe68e6628675f8c9a0b1f300dab4001f381615",
+ "55d81d5d1c9b6105f1815dc09390467b47f0965d",
"testharness"
],
"workers/Worker_terminate_event_queue.htm": [
diff --git a/tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini b/tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini
deleted file mode 100644
index 86715ffc9c2..00000000000
--- a/tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[floats-in-table-caption-001.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/text/white-space-002.xht.ini b/tests/wpt/metadata/css/CSS2/text/white-space-002.xht.ini
new file mode 100644
index 00000000000..b1d1b14db72
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/text/white-space-002.xht.ini
@@ -0,0 +1,2 @@
+[white-space-002.xht]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/text/white-space-003.xht.ini b/tests/wpt/metadata/css/CSS2/text/white-space-003.xht.ini
new file mode 100644
index 00000000000..182a9fc2d1e
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/text/white-space-003.xht.ini
@@ -0,0 +1,2 @@
+[white-space-003.xht]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/visudet/line-height-204.html.ini b/tests/wpt/metadata/css/CSS2/visudet/line-height-204.html.ini
new file mode 100644
index 00000000000..3d28990c283
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/visudet/line-height-204.html.ini
@@ -0,0 +1,2 @@
+[line-height-204.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/compositing/parsing/background-blend-mode-computed.html.ini b/tests/wpt/metadata/css/compositing/parsing/background-blend-mode-computed.html.ini
index 96ac8d2b25d..fbf61931b98 100644
--- a/tests/wpt/metadata/css/compositing/parsing/background-blend-mode-computed.html.ini
+++ b/tests/wpt/metadata/css/compositing/parsing/background-blend-mode-computed.html.ini
@@ -56,3 +56,60 @@
[Property background-blend-mode value 'difference' computes to 'difference']
expected: FAIL
+ [Property background-blend-mode value 'screen, overlay']
+ expected: FAIL
+
+ [Property background-blend-mode value 'darken']
+ expected: FAIL
+
+ [Property background-blend-mode value 'normal, luminosity']
+ expected: FAIL
+
+ [Property background-blend-mode value 'luminosity']
+ expected: FAIL
+
+ [Property background-blend-mode value 'exclusion']
+ expected: FAIL
+
+ [Property background-blend-mode value 'multiply']
+ expected: FAIL
+
+ [Property background-blend-mode value 'screen']
+ expected: FAIL
+
+ [Property background-blend-mode value 'color-burn']
+ expected: FAIL
+
+ [Property background-blend-mode value 'hue']
+ expected: FAIL
+
+ [Property background-blend-mode value 'saturation']
+ expected: FAIL
+
+ [Property background-blend-mode value 'hard-light']
+ expected: FAIL
+
+ [Property background-blend-mode value 'color-dodge']
+ expected: FAIL
+
+ [Property background-blend-mode value 'normal']
+ expected: FAIL
+
+ [Property background-blend-mode value 'color']
+ expected: FAIL
+
+ [Property background-blend-mode value 'difference']
+ expected: FAIL
+
+ [Property background-blend-mode value 'lighten']
+ expected: FAIL
+
+ [Property background-blend-mode value 'soft-light']
+ expected: FAIL
+
+ [Property background-blend-mode value 'overlay']
+ expected: FAIL
+
+ [Property background-blend-mode value 'color, saturation']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/compositing/parsing/isolation-computed.html.ini b/tests/wpt/metadata/css/compositing/parsing/isolation-computed.html.ini
index ef7f5a83c6e..8978a3dea3d 100644
--- a/tests/wpt/metadata/css/compositing/parsing/isolation-computed.html.ini
+++ b/tests/wpt/metadata/css/compositing/parsing/isolation-computed.html.ini
@@ -5,3 +5,9 @@
[Property isolation value 'auto' computes to 'auto']
expected: FAIL
+ [Property isolation value 'auto']
+ expected: FAIL
+
+ [Property isolation value 'isolate']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/align-content-computed.html.ini b/tests/wpt/metadata/css/css-align/parsing/align-content-computed.html.ini
index 036730941a3..165bf87de0b 100644
--- a/tests/wpt/metadata/css/css-align/parsing/align-content-computed.html.ini
+++ b/tests/wpt/metadata/css/css-align/parsing/align-content-computed.html.ini
@@ -23,3 +23,27 @@
[Property align-content value 'space-evenly' computes to 'space-evenly']
expected: FAIL
+ [Property align-content value 'last baseline']
+ expected: FAIL
+
+ [Property align-content value 'baseline']
+ expected: FAIL
+
+ [Property align-content value 'unsafe end']
+ expected: FAIL
+
+ [Property align-content value 'normal']
+ expected: FAIL
+
+ [Property align-content value 'space-evenly']
+ expected: FAIL
+
+ [Property align-content value 'safe flex-start']
+ expected: FAIL
+
+ [Property align-content value 'start']
+ expected: FAIL
+
+ [Property align-content value 'end']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/align-items-computed.html.ini b/tests/wpt/metadata/css/css-align/parsing/align-items-computed.html.ini
index 7901836699f..a6bf5fa814d 100644
--- a/tests/wpt/metadata/css/css-align/parsing/align-items-computed.html.ini
+++ b/tests/wpt/metadata/css/css-align/parsing/align-items-computed.html.ini
@@ -23,3 +23,27 @@
[Property align-items value 'last baseline' computes to 'last baseline']
expected: FAIL
+ [Property align-items value 'self-end']
+ expected: FAIL
+
+ [Property align-items value 'start']
+ expected: FAIL
+
+ [Property align-items value 'unsafe center']
+ expected: FAIL
+
+ [Property align-items value 'last baseline']
+ expected: FAIL
+
+ [Property align-items value 'end']
+ expected: FAIL
+
+ [Property align-items value 'self-start']
+ expected: FAIL
+
+ [Property align-items value 'safe self-end']
+ expected: FAIL
+
+ [Property align-items value 'normal']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/align-self-computed.html.ini b/tests/wpt/metadata/css/css-align/parsing/align-self-computed.html.ini
index fa61b083ab8..6d95449604f 100644
--- a/tests/wpt/metadata/css/css-align/parsing/align-self-computed.html.ini
+++ b/tests/wpt/metadata/css/css-align/parsing/align-self-computed.html.ini
@@ -26,3 +26,30 @@
[Property align-self value 'start' computes to 'start']
expected: FAIL
+ [Property align-self value 'safe self-end']
+ expected: FAIL
+
+ [Property align-self value 'self-start']
+ expected: FAIL
+
+ [Property align-self value 'unsafe center']
+ expected: FAIL
+
+ [Property align-self value 'normal']
+ expected: FAIL
+
+ [Property align-self value 'self-end']
+ expected: FAIL
+
+ [Property align-self value 'start']
+ expected: FAIL
+
+ [Property align-self value 'auto']
+ expected: FAIL
+
+ [Property align-self value 'last baseline']
+ expected: FAIL
+
+ [Property align-self value 'end']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/column-gap-computed.html.ini b/tests/wpt/metadata/css/css-align/parsing/column-gap-computed.html.ini
index 1ac6a8db6fe..25d3ec3ed8d 100644
--- a/tests/wpt/metadata/css/css-align/parsing/column-gap-computed.html.ini
+++ b/tests/wpt/metadata/css/css-align/parsing/column-gap-computed.html.ini
@@ -14,3 +14,18 @@
[Property column-gap value 'calc(10px - 0.5em)' computes to '0px']
expected: FAIL
+ [Property column-gap value 'normal']
+ expected: FAIL
+
+ [Property column-gap value 'calc(10px + 0.5em)']
+ expected: FAIL
+
+ [Property column-gap value '40%']
+ expected: FAIL
+
+ [Property column-gap value 'calc(10px - 0.5em)']
+ expected: FAIL
+
+ [Property column-gap value 'calc(50% + 60px)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/gap-computed.html.ini b/tests/wpt/metadata/css/css-align/parsing/gap-computed.html.ini
index 77d70251f90..4b82ec79ae3 100644
--- a/tests/wpt/metadata/css/css-align/parsing/gap-computed.html.ini
+++ b/tests/wpt/metadata/css/css-align/parsing/gap-computed.html.ini
@@ -32,3 +32,36 @@
[Property gap value 'calc(-0.5em + 10px)' computes to '0px']
expected: FAIL
+ [Property gap value '20% calc(20% + 10px)']
+ expected: FAIL
+
+ [Property gap value 'normal']
+ expected: FAIL
+
+ [Property gap value 'normal 10px']
+ expected: FAIL
+
+ [Property gap value '20%']
+ expected: FAIL
+
+ [Property gap value '10px']
+ expected: FAIL
+
+ [Property gap value '10px 20%']
+ expected: FAIL
+
+ [Property gap value 'calc(-0.5em + 10px) calc(0.5em + 10px)']
+ expected: FAIL
+
+ [Property gap value 'calc(20% + 10px) normal']
+ expected: FAIL
+
+ [Property gap value 'calc(20% + 10px)']
+ expected: FAIL
+
+ [Property gap value 'calc(-0.5em + 10px)']
+ expected: FAIL
+
+ [Property gap value 'calc(0.5em + 10px)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/justify-content-computed.html.ini b/tests/wpt/metadata/css/css-align/parsing/justify-content-computed.html.ini
index f96a01069a2..47abd3064e3 100644
--- a/tests/wpt/metadata/css/css-align/parsing/justify-content-computed.html.ini
+++ b/tests/wpt/metadata/css/css-align/parsing/justify-content-computed.html.ini
@@ -23,3 +23,27 @@
[Property justify-content value 'safe flex-start' computes to 'safe flex-start']
expected: FAIL
+ [Property justify-content value 'start']
+ expected: FAIL
+
+ [Property justify-content value 'end']
+ expected: FAIL
+
+ [Property justify-content value 'unsafe end']
+ expected: FAIL
+
+ [Property justify-content value 'normal']
+ expected: FAIL
+
+ [Property justify-content value 'unsafe right']
+ expected: FAIL
+
+ [Property justify-content value 'safe flex-start']
+ expected: FAIL
+
+ [Property justify-content value 'space-evenly']
+ expected: FAIL
+
+ [Property justify-content value 'left']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/justify-items-computed.html.ini b/tests/wpt/metadata/css/css-align/parsing/justify-items-computed.html.ini
index b9104efccf3..3cd51733267 100644
--- a/tests/wpt/metadata/css/css-align/parsing/justify-items-computed.html.ini
+++ b/tests/wpt/metadata/css/css-align/parsing/justify-items-computed.html.ini
@@ -59,3 +59,60 @@
[Property justify-items value 'end' computes to 'end']
expected: FAIL
+ [Property justify-items value 'legacy right']
+ expected: FAIL
+
+ [Property justify-items value 'safe self-end']
+ expected: FAIL
+
+ [Property justify-items value 'center']
+ expected: FAIL
+
+ [Property justify-items value 'legacy']
+ expected: FAIL
+
+ [Property justify-items value 'normal']
+ expected: FAIL
+
+ [Property justify-items value 'legacy center']
+ expected: FAIL
+
+ [Property justify-items value 'flex-start']
+ expected: FAIL
+
+ [Property justify-items value 'self-end']
+ expected: FAIL
+
+ [Property justify-items value 'last baseline']
+ expected: FAIL
+
+ [Property justify-items value 'safe left']
+ expected: FAIL
+
+ [Property justify-items value 'right']
+ expected: FAIL
+
+ [Property justify-items value 'start']
+ expected: FAIL
+
+ [Property justify-items value 'end']
+ expected: FAIL
+
+ [Property justify-items value 'stretch']
+ expected: FAIL
+
+ [Property justify-items value 'unsafe center']
+ expected: FAIL
+
+ [Property justify-items value 'flex-end']
+ expected: FAIL
+
+ [Property justify-items value 'self-start']
+ expected: FAIL
+
+ [Property justify-items value 'legacy left']
+ expected: FAIL
+
+ [Property justify-items value 'baseline']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/justify-self-computed.html.ini b/tests/wpt/metadata/css/css-align/parsing/justify-self-computed.html.ini
index 97de7bd520a..b739e8a51d0 100644
--- a/tests/wpt/metadata/css/css-align/parsing/justify-self-computed.html.ini
+++ b/tests/wpt/metadata/css/css-align/parsing/justify-self-computed.html.ini
@@ -47,3 +47,51 @@
[Property justify-self value 'unsafe center' computes to 'unsafe center']
expected: FAIL
+ [Property justify-self value 'center']
+ expected: FAIL
+
+ [Property justify-self value 'safe self-end']
+ expected: FAIL
+
+ [Property justify-self value 'auto']
+ expected: FAIL
+
+ [Property justify-self value 'unsafe center']
+ expected: FAIL
+
+ [Property justify-self value 'baseline']
+ expected: FAIL
+
+ [Property justify-self value 'start']
+ expected: FAIL
+
+ [Property justify-self value 'last baseline']
+ expected: FAIL
+
+ [Property justify-self value 'normal']
+ expected: FAIL
+
+ [Property justify-self value 'end']
+ expected: FAIL
+
+ [Property justify-self value 'flex-end']
+ expected: FAIL
+
+ [Property justify-self value 'stretch']
+ expected: FAIL
+
+ [Property justify-self value 'self-start']
+ expected: FAIL
+
+ [Property justify-self value 'flex-start']
+ expected: FAIL
+
+ [Property justify-self value 'self-end']
+ expected: FAIL
+
+ [Property justify-self value 'left']
+ expected: FAIL
+
+ [Property justify-self value 'unsafe right']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/place-content-computed.html.ini b/tests/wpt/metadata/css/css-align/parsing/place-content-computed.html.ini
index ffe746f3fcf..c940f4a8ce1 100644
--- a/tests/wpt/metadata/css/css-align/parsing/place-content-computed.html.ini
+++ b/tests/wpt/metadata/css/css-align/parsing/place-content-computed.html.ini
@@ -68,3 +68,72 @@
[Property place-content value 'normal right' computes to 'normal right']
expected: FAIL
+ [Property place-content value 'last baseline flex-start']
+ expected: FAIL
+
+ [Property place-content value 'first baseline stretch']
+ expected: FAIL
+
+ [Property place-content value 'flex-start flex-start']
+ expected: FAIL
+
+ [Property place-content value 'space-around']
+ expected: FAIL
+
+ [Property place-content value 'space-evenly']
+ expected: FAIL
+
+ [Property place-content value 'safe flex-start']
+ expected: FAIL
+
+ [Property place-content value 'center normal']
+ expected: FAIL
+
+ [Property place-content value 'end']
+ expected: FAIL
+
+ [Property place-content value 'stretch']
+ expected: FAIL
+
+ [Property place-content value 'normal normal']
+ expected: FAIL
+
+ [Property place-content value 'center']
+ expected: FAIL
+
+ [Property place-content value 'space-evenly unsafe end']
+ expected: FAIL
+
+ [Property place-content value 'baseline stretch']
+ expected: FAIL
+
+ [Property place-content value 'space-between']
+ expected: FAIL
+
+ [Property place-content value 'baseline space-around']
+ expected: FAIL
+
+ [Property place-content value 'first baseline start']
+ expected: FAIL
+
+ [Property place-content value 'baseline']
+ expected: FAIL
+
+ [Property place-content value 'last baseline']
+ expected: FAIL
+
+ [Property place-content value 'normal stretch']
+ expected: FAIL
+
+ [Property place-content value 'normal right']
+ expected: FAIL
+
+ [Property place-content value 'first baseline']
+ expected: FAIL
+
+ [Property place-content value 'baseline unsafe left']
+ expected: FAIL
+
+ [Property place-content value 'unsafe end unsafe end']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/place-items-computed.html.ini b/tests/wpt/metadata/css/css-align/parsing/place-items-computed.html.ini
index 5acfddefa0d..92e56bb50ad 100644
--- a/tests/wpt/metadata/css/css-align/parsing/place-items-computed.html.ini
+++ b/tests/wpt/metadata/css/css-align/parsing/place-items-computed.html.ini
@@ -53,3 +53,57 @@
[Property place-items value 'stretch baseline' computes to 'stretch baseline']
expected: FAIL
+ [Property place-items value 'flex-end']
+ expected: FAIL
+
+ [Property place-items value 'safe self-end']
+ expected: FAIL
+
+ [Property place-items value 'center']
+ expected: FAIL
+
+ [Property place-items value 'stretch legacy left']
+ expected: FAIL
+
+ [Property place-items value 'first baseline right legacy']
+ expected: FAIL
+
+ [Property place-items value 'unsafe center unsafe center']
+ expected: FAIL
+
+ [Property place-items value 'stretch stretch']
+ expected: FAIL
+
+ [Property place-items value 'safe self-end normal']
+ expected: FAIL
+
+ [Property place-items value 'normal']
+ expected: FAIL
+
+ [Property place-items value 'baseline unsafe left']
+ expected: FAIL
+
+ [Property place-items value 'self-start']
+ expected: FAIL
+
+ [Property place-items value 'first baseline']
+ expected: FAIL
+
+ [Property place-items value 'flex-end legacy']
+ expected: FAIL
+
+ [Property place-items value 'normal right']
+ expected: FAIL
+
+ [Property place-items value 'last baseline center']
+ expected: FAIL
+
+ [Property place-items value 'last baseline last baseline']
+ expected: FAIL
+
+ [Property place-items value 'end end']
+ expected: FAIL
+
+ [Property place-items value 'stretch baseline']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/place-self-computed.html.ini b/tests/wpt/metadata/css/css-align/parsing/place-self-computed.html.ini
index 5c6b792b5ff..cdfa9f7b492 100644
--- a/tests/wpt/metadata/css/css-align/parsing/place-self-computed.html.ini
+++ b/tests/wpt/metadata/css/css-align/parsing/place-self-computed.html.ini
@@ -47,3 +47,51 @@
[Property place-self value 'center center' computes to 'center']
expected: FAIL
+ [Property place-self value 'safe self-end safe self-end']
+ expected: FAIL
+
+ [Property place-self value 'unsafe center stretch']
+ expected: FAIL
+
+ [Property place-self value 'auto last baseline']
+ expected: FAIL
+
+ [Property place-self value 'baseline flex-end']
+ expected: FAIL
+
+ [Property place-self value 'center center']
+ expected: FAIL
+
+ [Property place-self value 'flex-end']
+ expected: FAIL
+
+ [Property place-self value 'last baseline last baseline']
+ expected: FAIL
+
+ [Property place-self value 'auto auto']
+ expected: FAIL
+
+ [Property place-self value 'normal right']
+ expected: FAIL
+
+ [Property place-self value 'stretch']
+ expected: FAIL
+
+ [Property place-self value 'start']
+ expected: FAIL
+
+ [Property place-self value 'unsafe center']
+ expected: FAIL
+
+ [Property place-self value 'normal']
+ expected: FAIL
+
+ [Property place-self value 'first baseline']
+ expected: FAIL
+
+ [Property place-self value 'baseline unsafe left']
+ expected: FAIL
+
+ [Property place-self value 'self-start']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/row-gap-computed.html.ini b/tests/wpt/metadata/css/css-align/parsing/row-gap-computed.html.ini
index 076774827b9..a6b34573538 100644
--- a/tests/wpt/metadata/css/css-align/parsing/row-gap-computed.html.ini
+++ b/tests/wpt/metadata/css/css-align/parsing/row-gap-computed.html.ini
@@ -17,3 +17,21 @@
[Property row-gap value 'calc(-0.5em + 10px)' computes to '0px']
expected: FAIL
+ [Property row-gap value '20%']
+ expected: FAIL
+
+ [Property row-gap value 'normal']
+ expected: FAIL
+
+ [Property row-gap value 'calc(20% + 10px)']
+ expected: FAIL
+
+ [Property row-gap value '10px']
+ expected: FAIL
+
+ [Property row-gap value 'calc(-0.5em + 10px)']
+ expected: FAIL
+
+ [Property row-gap value 'calc(0.5em + 10px)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-animations/parsing/animation-computed.html.ini b/tests/wpt/metadata/css/css-animations/parsing/animation-computed.html.ini
index 543182ae329..4664b2fec70 100644
--- a/tests/wpt/metadata/css/css-animations/parsing/animation-computed.html.ini
+++ b/tests/wpt/metadata/css/css-animations/parsing/animation-computed.html.ini
@@ -32,3 +32,36 @@
[Property animation value 'both' computes to '0s ease 0s 1 normal both running none']
expected: FAIL
+ [Property animation value '1s']
+ expected: FAIL
+
+ [Property animation value 'anim paused both reverse, 4 1s -3s cubic-bezier(0, -2, 1, 3)']
+ expected: FAIL
+
+ [Property animation value 'none']
+ expected: FAIL
+
+ [Property animation value 'cubic-bezier(0, -2, 1, 3)']
+ expected: FAIL
+
+ [Property animation value 'anim paused both reverse 4 1s -3s cubic-bezier(0, -2, 1, 3)']
+ expected: FAIL
+
+ [Property animation value '1s -3s']
+ expected: FAIL
+
+ [Property animation value 'anim']
+ expected: FAIL
+
+ [Property animation value 'paused']
+ expected: FAIL
+
+ [Property animation value 'both']
+ expected: FAIL
+
+ [Property animation value '4']
+ expected: FAIL
+
+ [Property animation value 'reverse']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-animations/parsing/animation-timing-function-computed.html.ini b/tests/wpt/metadata/css/css-animations/parsing/animation-timing-function-computed.html.ini
index e414d490ff3..5b93366e898 100644
--- a/tests/wpt/metadata/css/css-animations/parsing/animation-timing-function-computed.html.ini
+++ b/tests/wpt/metadata/css/css-animations/parsing/animation-timing-function-computed.html.ini
@@ -11,3 +11,15 @@
[Property animation-timing-function value 'steps(2, jump-end)' computes to 'steps(2)']
expected: FAIL
+ [Property animation-timing-function value 'steps(2, jump-start)']
+ expected: FAIL
+
+ [Property animation-timing-function value 'steps(2, jump-none)']
+ expected: FAIL
+
+ [Property animation-timing-function value 'steps(2, jump-end)']
+ expected: FAIL
+
+ [Property animation-timing-function value 'steps(2, jump-both)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/background-repeat/background-repeat-round-roundup.xht.ini b/tests/wpt/metadata/css/css-backgrounds/background-repeat/background-repeat-round-roundup.xht.ini
new file mode 100644
index 00000000000..f20284a5396
--- /dev/null
+++ b/tests/wpt/metadata/css/css-backgrounds/background-repeat/background-repeat-round-roundup.xht.ini
@@ -0,0 +1,2 @@
+[background-repeat-round-roundup.xht]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/background-attachment-computed.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/background-attachment-computed.html.ini
index 4ab44b88fb0..457bb823139 100644
--- a/tests/wpt/metadata/css/css-backgrounds/parsing/background-attachment-computed.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/background-attachment-computed.html.ini
@@ -2,3 +2,6 @@
[Property background-attachment value 'scroll, fixed, local' computes to 'scroll']
expected: FAIL
+ [Property background-attachment value 'scroll, fixed, local']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/background-clip-computed.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/background-clip-computed.html.ini
index 9c542887681..2237d957e08 100644
--- a/tests/wpt/metadata/css/css-backgrounds/parsing/background-clip-computed.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/background-clip-computed.html.ini
@@ -2,3 +2,6 @@
[Property background-clip value 'border-box, padding-box, content-box' computes to 'border-box']
expected: FAIL
+ [Property background-clip value 'border-box, padding-box, content-box']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/background-computed.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/background-computed.html.ini
index dd4fdc7e6c8..d759e0e484a 100644
--- a/tests/wpt/metadata/css/css-backgrounds/parsing/background-computed.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/background-computed.html.ini
@@ -77,3 +77,81 @@
[Property background-size value 'contain' computes to 'contain, contain, contain']
expected: FAIL
+ [Property background-origin value 'content-box, border-box, padding-box, content-box']
+ expected: FAIL
+
+ [Property background-clip value 'content-box, border-box']
+ expected: FAIL
+
+ [Property background-position-y value '-20%, 10px']
+ expected: FAIL
+
+ [Property background-position value '12px 13px, 50% 6px, 30px -10px']
+ expected: FAIL
+
+ [Property background-clip value 'border-box']
+ expected: FAIL
+
+ [Property background-repeat value 'repeat-x, repeat']
+ expected: FAIL
+
+ [Property background-repeat value 'repeat-y, round no-repeat, repeat-x, repeat']
+ expected: FAIL
+
+ [Property background-position-x value 'calc(10px - 0.5em), -20%, right, 15%']
+ expected: FAIL
+
+ [Property background-origin value 'border-box']
+ expected: FAIL
+
+ [Property background-position-y value '0.5em']
+ expected: FAIL
+
+ [Property background-attachment value 'local, fixed, scroll']
+ expected: FAIL
+
+ [Property background-position value '12px 13px, 50% 6px, 30px -10px, -7px 8px']
+ expected: FAIL
+
+ [Property background-clip value 'content-box, border-box, padding-box, content-box']
+ expected: FAIL
+
+ [Property background-position value '50% 6px']
+ expected: FAIL
+
+ [Property background-attachment value 'scroll, fixed']
+ expected: FAIL
+
+ [Property background-origin value 'content-box, border-box']
+ expected: FAIL
+
+ [Property background-size value 'contain']
+ expected: FAIL
+
+ [Property background-attachment value 'local']
+ expected: FAIL
+
+ [Property background-attachment value 'local, fixed, scroll, fixed']
+ expected: FAIL
+
+ [Property background-position-y value 'calc(10px - 0.5em), -20%, bottom, 15%']
+ expected: FAIL
+
+ [Property background-repeat value 'round']
+ expected: FAIL
+
+ [Property background-position-x value '0.5em']
+ expected: FAIL
+
+ [Property background-size value 'auto 1px, 2% 3%, contain, 7px 8px']
+ expected: FAIL
+
+ [Property background-size value 'auto 1px, 2% 3%']
+ expected: FAIL
+
+ [Property background-position value '12px 13px, 50% 6px']
+ expected: FAIL
+
+ [Property background-position-x value '-20%, 10px']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/background-origin-computed.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/background-origin-computed.html.ini
index 4a015c2ccb9..a2a8b8df621 100644
--- a/tests/wpt/metadata/css/css-backgrounds/parsing/background-origin-computed.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/background-origin-computed.html.ini
@@ -2,3 +2,6 @@
[Property background-origin value 'border-box, padding-box, content-box' computes to 'border-box']
expected: FAIL
+ [Property background-origin value 'border-box, padding-box, content-box']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/background-position-computed.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/background-position-computed.html.ini
index 360feb221db..85664759844 100644
--- a/tests/wpt/metadata/css/css-backgrounds/parsing/background-position-computed.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/background-position-computed.html.ini
@@ -86,3 +86,90 @@
[Property background-position value 'calc(10px - 0.5em) calc(10px + 0.5em)' computes to '-10px 30px']
expected: FAIL
+ [Property background-position value 'center left']
+ expected: FAIL
+
+ [Property background-position value 'center right 7%']
+ expected: FAIL
+
+ [Property background-position value '12px 13px, 50% 6px, 30px -10px']
+ expected: FAIL
+
+ [Property background-position value 'bottom']
+ expected: FAIL
+
+ [Property background-position value 'right 11% bottom']
+ expected: FAIL
+
+ [Property background-position value 'right 9%']
+ expected: FAIL
+
+ [Property background-position value 'bottom 16% left']
+ expected: FAIL
+
+ [Property background-position value '5% top']
+ expected: FAIL
+
+ [Property background-position value 'left']
+ expected: FAIL
+
+ [Property background-position value '-2% -3%']
+ expected: FAIL
+
+ [Property background-position value 'calc(10px + 0.5em) calc(10px - 0.5em)']
+ expected: FAIL
+
+ [Property background-position value 'center 6px']
+ expected: FAIL
+
+ [Property background-position value 'center center']
+ expected: FAIL
+
+ [Property background-position value 'left bottom']
+ expected: FAIL
+
+ [Property background-position value 'right top 14%']
+ expected: FAIL
+
+ [Property background-position value 'left 10px center']
+ expected: FAIL
+
+ [Property background-position value 'bottom center']
+ expected: FAIL
+
+ [Property background-position value 'left 12px top 13px']
+ expected: FAIL
+
+ [Property background-position value 'right center']
+ expected: FAIL
+
+ [Property background-position value 'center']
+ expected: FAIL
+
+ [Property background-position value 'center top 8px']
+ expected: FAIL
+
+ [Property background-position value '1px center']
+ expected: FAIL
+
+ [Property background-position value 'bottom right 19%']
+ expected: FAIL
+
+ [Property background-position value 'calc(10px - 0.5em) calc(10px + 0.5em)']
+ expected: FAIL
+
+ [Property background-position value 'top 15px center']
+ expected: FAIL
+
+ [Property background-position value '1px']
+ expected: FAIL
+
+ [Property background-position value 'top 17px right -18px']
+ expected: FAIL
+
+ [Property background-position value 'top left']
+ expected: FAIL
+
+ [Property background-position value 'center bottom']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/background-position-x-computed.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/background-position-x-computed.html.ini
index 774732efcbd..dc222895fe2 100644
--- a/tests/wpt/metadata/css/css-backgrounds/parsing/background-position-x-computed.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/background-position-x-computed.html.ini
@@ -32,3 +32,24 @@
[Property background-position-x value '0.5em, x-start, x-end' computes to '20px']
expected: FAIL
+ [Property background-position-x value 'calc(10px - 0.5em), left -20%, right 10px']
+ expected: FAIL
+
+ [Property background-position-x value 'center, left, right']
+ expected: FAIL
+
+ [Property background-position-x value '0.5em, x-start, x-end']
+ expected: FAIL
+
+ [Property background-position-x value 'x-end']
+ expected: FAIL
+
+ [Property background-position-x value 'x-start']
+ expected: FAIL
+
+ [Property background-position-x value 'calc(10px - 0.5em), -20%, 10px']
+ expected: FAIL
+
+ [Property background-position-x value '-20%, 10px']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/background-position-y-computed.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/background-position-y-computed.html.ini
index cd34047f7ad..591ba3f32c3 100644
--- a/tests/wpt/metadata/css/css-backgrounds/parsing/background-position-y-computed.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/background-position-y-computed.html.ini
@@ -32,3 +32,24 @@
[Property background-position-y value 'calc(10px - 0.5em), -20%, 10px' computes to '-10px']
expected: FAIL
+ [Property background-position-y value 'y-end']
+ expected: FAIL
+
+ [Property background-position-y value '0.5em, y-start, y-end']
+ expected: FAIL
+
+ [Property background-position-y value 'calc(10px - 0.5em), top -20%, bottom 10px']
+ expected: FAIL
+
+ [Property background-position-y value 'y-start']
+ expected: FAIL
+
+ [Property background-position-y value 'calc(10px - 0.5em), -20%, 10px']
+ expected: FAIL
+
+ [Property background-position-y value '-20%, 10px']
+ expected: FAIL
+
+ [Property background-position-y value 'center, top, bottom']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/background-repeat-computed.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/background-repeat-computed.html.ini
index 9868193e4e3..ee19764bded 100644
--- a/tests/wpt/metadata/css/css-backgrounds/parsing/background-repeat-computed.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/background-repeat-computed.html.ini
@@ -2,3 +2,6 @@
[Property background-repeat value 'repeat-x, repeat-y, repeat' computes to 'repeat-x']
expected: FAIL
+ [Property background-repeat value 'repeat-x, repeat-y, repeat']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/background-size-computed.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/background-size-computed.html.ini
index ede3103de7a..5a6bde56052 100644
--- a/tests/wpt/metadata/css/css-backgrounds/parsing/background-size-computed.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/background-size-computed.html.ini
@@ -1,3 +1,7 @@
[background-size-computed.html]
[Property background-size value 'auto 1px, 2% 3%, contain' computes to 'auto 1px']
expected: FAIL
+
+ [Property background-size value 'auto 1px, 2% 3%, contain']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/border-color-computed.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/border-color-computed.html.ini
index 4fd1a9683e4..c56e81b8669 100644
--- a/tests/wpt/metadata/css/css-backgrounds/parsing/border-color-computed.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/border-color-computed.html.ini
@@ -11,3 +11,15 @@
[Property border-color value 'red yellow green blue' computes to 'rgb(255, 0, 0) rgb(255, 255, 0) rgb(0, 128, 0) rgb(0, 0, 255)']
expected: FAIL
+ [Property border-color value 'red yellow currentcolor']
+ expected: FAIL
+
+ [Property border-color value 'red yellow']
+ expected: FAIL
+
+ [Property border-color value 'red yellow green blue']
+ expected: FAIL
+
+ [Property border-color value 'currentcolor']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/border-image-source-computed.sub.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/border-image-source-computed.sub.html.ini
index 7ffe55ac942..19f4337a212 100644
--- a/tests/wpt/metadata/css/css-backgrounds/parsing/border-image-source-computed.sub.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/border-image-source-computed.sub.html.ini
@@ -2,3 +2,6 @@
[Property border-image-source value 'conic-gradient(from 90deg at 80% 90%, lime, black)' computes to 'conic-gradient(from 90deg at 80% 90%, rgb(0, 255, 0), rgb(0, 0, 0))']
expected: FAIL
+ [Property border-image-source value 'conic-gradient(from 90deg at 80% 90%, lime, black)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/border-radius-computed.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/border-radius-computed.html.ini
index 913f868a0eb..7b3c38d8496 100644
--- a/tests/wpt/metadata/css/css-backgrounds/parsing/border-radius-computed.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/border-radius-computed.html.ini
@@ -26,3 +26,30 @@
[Property border-radius value '1px 2% 2% 2% / 1px 2% 3px 2%' computes to '1px 2% 2% / 1px 2% 3px']
expected: FAIL
+ [Property border-radius value '1px 2% 1px 1px']
+ expected: FAIL
+
+ [Property border-radius value '1px 1px 2% 2%']
+ expected: FAIL
+
+ [Property border-radius value '1px 2% 3px 4%']
+ expected: FAIL
+
+ [Property border-radius value '1px 1px 1px 1px / 1px 1px 2% 1px']
+ expected: FAIL
+
+ [Property border-radius value '5em / 1px 2% 3px 4%']
+ expected: FAIL
+
+ [Property border-radius value '1px 1px 1px 2% / 1px 2% 1px 2%']
+ expected: FAIL
+
+ [Property border-radius value '1px 2% 3px 4% / 5em']
+ expected: FAIL
+
+ [Property border-radius value '1px 2% 2% 2% / 1px 2% 3px 2%']
+ expected: FAIL
+
+ [Property border-radius value '1px']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/border-style-computed.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/border-style-computed.html.ini
index f7eb5184b12..2a6fb0cb85e 100644
--- a/tests/wpt/metadata/css/css-backgrounds/parsing/border-style-computed.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/border-style-computed.html.ini
@@ -11,3 +11,15 @@
[Property border-style value 'solid double groove ridge' computes to 'solid double groove ridge']
expected: FAIL
+ [Property border-style value 'hidden dotted dashed']
+ expected: FAIL
+
+ [Property border-style value 'inset outset']
+ expected: FAIL
+
+ [Property border-style value 'solid double groove ridge']
+ expected: FAIL
+
+ [Property border-style value 'none']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/border-width-computed.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/border-width-computed.html.ini
index ff24d33e8b7..2155e7a8526 100644
--- a/tests/wpt/metadata/css/css-backgrounds/parsing/border-width-computed.html.ini
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/border-width-computed.html.ini
@@ -17,3 +17,21 @@
[Property border-width value '2px thin medium thick' computes to '2px 1px 3px 5px']
expected: FAIL
+ [Property border-width value '1px 2px']
+ expected: FAIL
+
+ [Property border-width value '1px 2px 3px 4px']
+ expected: FAIL
+
+ [Property border-width value '1px 2px 3px']
+ expected: FAIL
+
+ [Property border-width value '2px thin medium thick']
+ expected: FAIL
+
+ [Property border-width value '1px']
+ expected: FAIL
+
+ [Property border-width value '0.5em']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/parsing/flex-computed.html.ini b/tests/wpt/metadata/css/css-flexbox/parsing/flex-computed.html.ini
index a4ef36ffacf..27480998a87 100644
--- a/tests/wpt/metadata/css/css-flexbox/parsing/flex-computed.html.ini
+++ b/tests/wpt/metadata/css/css-flexbox/parsing/flex-computed.html.ini
@@ -23,3 +23,27 @@
[Property flex value '2 3' computes to '2 3 0%']
expected: FAIL
+ [Property flex value '8 auto']
+ expected: FAIL
+
+ [Property flex value '7% 8']
+ expected: FAIL
+
+ [Property flex value 'calc(10px + 0.5em)']
+ expected: FAIL
+
+ [Property flex value '1']
+ expected: FAIL
+
+ [Property flex value '4 5 6px']
+ expected: FAIL
+
+ [Property flex value '2 3']
+ expected: FAIL
+
+ [Property flex value 'calc(10px - 0.5em)']
+ expected: FAIL
+
+ [Property flex value 'none']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/parsing/flex-flow-computed.html.ini b/tests/wpt/metadata/css/css-flexbox/parsing/flex-flow-computed.html.ini
index 527777e42df..e78684d9220 100644
--- a/tests/wpt/metadata/css/css-flexbox/parsing/flex-flow-computed.html.ini
+++ b/tests/wpt/metadata/css/css-flexbox/parsing/flex-flow-computed.html.ini
@@ -5,3 +5,9 @@
[Property flex-flow value 'row-reverse wrap' computes to 'row-reverse wrap']
expected: FAIL
+ [Property flex-flow value 'column wrap-reverse']
+ expected: FAIL
+
+ [Property flex-flow value 'row-reverse wrap']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/parsing/flex-grow-computed.html.ini b/tests/wpt/metadata/css/css-flexbox/parsing/flex-grow-computed.html.ini
index e981a2b47d1..cf980a5f29a 100644
--- a/tests/wpt/metadata/css/css-flexbox/parsing/flex-grow-computed.html.ini
+++ b/tests/wpt/metadata/css/css-flexbox/parsing/flex-grow-computed.html.ini
@@ -5,3 +5,9 @@
[Property flex-grow value '2.34e+06' computes to '2.34e+06']
expected: FAIL
+ [Property flex-grow value '2.34e+06']
+ expected: FAIL
+
+ [Property flex-grow value '6.78e+08']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/parsing/flex-shrink-computed.html.ini b/tests/wpt/metadata/css/css-flexbox/parsing/flex-shrink-computed.html.ini
index 167953230f3..64b00ffa14e 100644
--- a/tests/wpt/metadata/css/css-flexbox/parsing/flex-shrink-computed.html.ini
+++ b/tests/wpt/metadata/css/css-flexbox/parsing/flex-shrink-computed.html.ini
@@ -5,3 +5,9 @@
[Property flex-shrink value '6.78e+08' computes to '6.78e+08']
expected: FAIL
+ [Property flex-shrink value '2.34e+06']
+ expected: FAIL
+
+ [Property flex-shrink value '6.78e+08']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-computed.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-computed.html.ini
index 4d97e8212a8..943a91f0970 100644
--- a/tests/wpt/metadata/css/css-fonts/parsing/font-computed.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-computed.html.ini
@@ -1871,3 +1871,930 @@
[Property font value '100 italic semi-condensed small-caps xx-large/1.2 fantasy' computes to 'italic small-caps 100 semi-condensed 32px / 1.2 fantasy']
expected: FAIL
+ [Property font value 'normal 100 normal ultra-expanded 20%/1.2 serif']
+ expected: FAIL
+
+ [Property font value 'small-caps bolder normal italic xx-large/1.2 monospace']
+ expected: FAIL
+
+ [Property font value 'italic small-caps bolder 10px/normal "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'italic small-caps lighter normal 20%/1.2 serif']
+ expected: FAIL
+
+ [Property font value 'small-caps lighter semi-condensed normal xx-small fantasy']
+ expected: FAIL
+
+ [Property font value 'normal lighter normal small-caps 10px/normal "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value '100 italic xx-small serif']
+ expected: FAIL
+
+ [Property font value 'normal lighter condensed calc(30% - 40px)/calc(120% + 1.2em) cursive']
+ expected: FAIL
+
+ [Property font value 'small-caps italic bold normal xx-large/1.2 fantasy']
+ expected: FAIL
+
+ [Property font value 'italic 900 ultra-expanded normal smaller serif']
+ expected: FAIL
+
+ [Property font value 'normal italic small-caps bold 10px/normal cursive']
+ expected: FAIL
+
+ [Property font value 'normal italic lighter normal xx-small Menu']
+ expected: FAIL
+
+ [Property font value 'normal small-caps normal xx-small "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value '900 normal semi-condensed smaller fantasy']
+ expected: FAIL
+
+ [Property font value '900 italic normal medium/normal sans-serif']
+ expected: FAIL
+
+ [Property font value 'bold italic small-caps ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) serif']
+ expected: FAIL
+
+ [Property font value 'normal normal ultra-condensed 100 smaller serif']
+ expected: FAIL
+
+ [Property font value 'italic normal normal small-caps medium/normal serif']
+ expected: FAIL
+
+ [Property font value 'normal bold italic normal xx-small cursive']
+ expected: FAIL
+
+ [Property font value 'bolder normal italic smaller cursive']
+ expected: FAIL
+
+ [Property font value 'small-caps italic ultra-expanded lighter 20%/1.2 serif']
+ expected: FAIL
+
+ [Property font value 'small-caps normal italic xx-small "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal normal small-caps italic xx-small cursive']
+ expected: FAIL
+
+ [Property font value 'italic bold larger/calc(120% + 1.2em) Menu']
+ expected: FAIL
+
+ [Property font value '900 normal normal small-caps xx-large/1.2 serif']
+ expected: FAIL
+
+ [Property font value 'small-caps normal italic normal medium/normal serif']
+ expected: FAIL
+
+ [Property font value 'italic small-caps semi-condensed 900 xx-large/1.2 monospace']
+ expected: FAIL
+
+ [Property font value 'normal semi-condensed small-caps 100 xx-small Menu']
+ expected: FAIL
+
+ [Property font value 'normal normal italic normal xx-large/1.2 fantasy']
+ expected: FAIL
+
+ [Property font value 'italic normal small-caps normal 10px/normal monospace']
+ expected: FAIL
+
+ [Property font value 'normal italic ultra-expanded bold 20%/1.2 monospace']
+ expected: FAIL
+
+ [Property font value 'italic ultra-condensed small-caps lighter 10px/normal cursive']
+ expected: FAIL
+
+ [Property font value 'normal 900 small-caps normal smaller "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value '900 10px/normal cursive']
+ expected: FAIL
+
+ [Property font value 'ultra-expanded normal small-caps smaller cursive']
+ expected: FAIL
+
+ [Property font value 'italic small-caps normal medium/normal cursive']
+ expected: FAIL
+
+ [Property font value 'normal extra-condensed normal italic 20%/1.2 cursive']
+ expected: FAIL
+
+ [Property font value 'bolder normal expanded italic 20%/1.2 Menu']
+ expected: FAIL
+
+ [Property font value 'normal normal small-caps condensed xx-large/1.2 monospace']
+ expected: FAIL
+
+ [Property font value 'italic small-caps xx-small sans-serif']
+ expected: FAIL
+
+ [Property font value 'normal normal normal small-caps 20%/1.2 "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal normal italic small-caps larger/calc(120% + 1.2em) monospace']
+ expected: FAIL
+
+ [Property font value 'small-caps 100 italic smaller "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal expanded italic normal xx-large/1.2 "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal 100 medium/normal cursive']
+ expected: FAIL
+
+ [Property font value 'normal normal 900 normal smaller "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'italic normal semi-condensed smaller monospace']
+ expected: FAIL
+
+ [Property font value 'small-caps normal xx-large/1.2 serif']
+ expected: FAIL
+
+ [Property font value 'small-caps extra-expanded normal larger/calc(120% + 1.2em) "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'expanded normal italic small-caps xx-large/1.2 serif']
+ expected: FAIL
+
+ [Property font value 'normal normal ultra-expanded small-caps larger/calc(120% + 1.2em) "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'italic bold small-caps xx-small fantasy']
+ expected: FAIL
+
+ [Property font value 'italic 100 extra-expanded larger/calc(120% + 1.2em) "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'lighter normal small-caps italic xx-large/1.2 sans-serif']
+ expected: FAIL
+
+ [Property font value 'small-caps bold italic extra-condensed 20%/1.2 sans-serif']
+ expected: FAIL
+
+ [Property font value 'ultra-condensed italic normal 10px/normal monospace']
+ expected: FAIL
+
+ [Property font value 'normal normal normal normal smaller monospace']
+ expected: FAIL
+
+ [Property font value 'italic condensed normal calc(30% - 40px)/calc(120% + 1.2em) fantasy']
+ expected: FAIL
+
+ [Property font value 'small-caps normal ultra-condensed normal medium/normal sans-serif']
+ expected: FAIL
+
+ [Property font value 'small-caps ultra-condensed normal italic 10px/normal sans-serif']
+ expected: FAIL
+
+ [Property font value 'ultra-expanded 100 small-caps italic smaller serif']
+ expected: FAIL
+
+ [Property font value 'normal small-caps normal normal medium/normal serif']
+ expected: FAIL
+
+ [Property font value 'italic small-caps extra-condensed xx-small cursive']
+ expected: FAIL
+
+ [Property font value 'bolder italic extra-condensed xx-small sans-serif']
+ expected: FAIL
+
+ [Property font value 'ultra-condensed bolder normal italic 10px/normal serif']
+ expected: FAIL
+
+ [Property font value 'normal italic small-caps condensed 20%/1.2 fantasy']
+ expected: FAIL
+
+ [Property font value 'normal small-caps italic lighter calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal small-caps semi-condensed 10px/normal Menu']
+ expected: FAIL
+
+ [Property font value '100 italic small-caps 10px/normal Menu']
+ expected: FAIL
+
+ [Property font value 'expanded 100 xx-large/1.2 monospace']
+ expected: FAIL
+
+ [Property font value 'normal normal normal ultra-condensed xx-small sans-serif']
+ expected: FAIL
+
+ [Property font value 'small-caps normal condensed lighter larger/calc(120% + 1.2em) fantasy']
+ expected: FAIL
+
+ [Property font value 'small-caps italic normal normal 20%/1.2 "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'bold normal 20%/1.2 fantasy']
+ expected: FAIL
+
+ [Property font value 'small-caps normal normal larger/calc(120% + 1.2em) sans-serif']
+ expected: FAIL
+
+ [Property font value 'bolder condensed normal calc(30% - 40px)/calc(120% + 1.2em) cursive']
+ expected: FAIL
+
+ [Property font value 'italic normal extra-expanded 900 calc(30% - 40px)/calc(120% + 1.2em) serif']
+ expected: FAIL
+
+ [Property font value 'extra-expanded normal normal larger/calc(120% + 1.2em) serif']
+ expected: FAIL
+
+ [Property font value 'normal italic 100 small-caps medium/normal "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal italic extra-expanded small-caps 10px/normal fantasy']
+ expected: FAIL
+
+ [Property font value 'extra-condensed small-caps italic 900 20%/1.2 serif']
+ expected: FAIL
+
+ [Property font value 'italic extra-condensed 20%/1.2 cursive']
+ expected: FAIL
+
+ [Property font value 'condensed small-caps bold calc(30% - 40px)/calc(120% + 1.2em) sans-serif']
+ expected: FAIL
+
+ [Property font value 'extra-expanded small-caps normal 100 larger/calc(120% + 1.2em) monospace']
+ expected: FAIL
+
+ [Property font value 'normal italic small-caps larger/calc(120% + 1.2em) serif']
+ expected: FAIL
+
+ [Property font value '100 normal normal italic medium/normal "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal normal small-caps lighter medium/normal fantasy']
+ expected: FAIL
+
+ [Property font value 'italic lighter small-caps expanded xx-large/1.2 Menu']
+ expected: FAIL
+
+ [Property font value 'small-caps italic normal semi-condensed xx-small sans-serif']
+ expected: FAIL
+
+ [Property font value 'normal normal small-caps 20%/1.2 serif']
+ expected: FAIL
+
+ [Property font value 'extra-expanded lighter small-caps normal larger/calc(120% + 1.2em) "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal small-caps italic extra-condensed xx-small serif']
+ expected: FAIL
+
+ [Property font value 'normal small-caps 100 medium/normal sans-serif']
+ expected: FAIL
+
+ [Property font value 'normal italic normal extra-condensed xx-large/1.2 "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal normal italic medium/normal cursive']
+ expected: FAIL
+
+ [Property font value 'semi-condensed normal italic xx-small Menu']
+ expected: FAIL
+
+ [Property font value 'italic semi-expanded normal small-caps medium/normal Menu']
+ expected: FAIL
+
+ [Property font value 'ultra-condensed normal small-caps normal 10px/normal fantasy']
+ expected: FAIL
+
+ [Property font value 'semi-expanded normal italic normal medium/normal "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'bold small-caps normal smaller Menu']
+ expected: FAIL
+
+ [Property font value '100 normal italic small-caps 20%/1.2 monospace']
+ expected: FAIL
+
+ [Property font value 'italic normal bold xx-small serif']
+ expected: FAIL
+
+ [Property font value 'normal small-caps expanded italic calc(30% - 40px)/calc(120% + 1.2em) serif']
+ expected: FAIL
+
+ [Property font value 'italic 100 normal small-caps 20%/1.2 sans-serif']
+ expected: FAIL
+
+ [Property font value 'normal bolder normal italic smaller Menu']
+ expected: FAIL
+
+ [Property font value 'italic normal normal calc(30% - 40px)/calc(120% + 1.2em) Menu']
+ expected: FAIL
+
+ [Property font value 'normal semi-condensed normal bolder xx-small monospace']
+ expected: FAIL
+
+ [Property font value '900 expanded normal small-caps xx-large/1.2 Menu']
+ expected: FAIL
+
+ [Property font value 'bold normal small-caps xx-small "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'semi-expanded small-caps lighter italic medium/normal fantasy']
+ expected: FAIL
+
+ [Property font value 'lighter normal normal normal xx-small Menu']
+ expected: FAIL
+
+ [Property font value 'small-caps normal 900 normal 10px/normal monospace']
+ expected: FAIL
+
+ [Property font value 'condensed italic normal small-caps calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal italic normal 900 medium/normal Menu']
+ expected: FAIL
+
+ [Property font value 'small-caps extra-condensed normal 900 20%/1.2 cursive']
+ expected: FAIL
+
+ [Property font value 'normal small-caps italic 10px/normal monospace']
+ expected: FAIL
+
+ [Property font value 'normal small-caps normal ultra-condensed smaller fantasy']
+ expected: FAIL
+
+ [Property font value 'extra-condensed italic lighter small-caps 20%/1.2 "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal ultra-condensed small-caps 10px/normal cursive']
+ expected: FAIL
+
+ [Property font value 'italic normal 20%/1.2 monospace']
+ expected: FAIL
+
+ [Property font value 'lighter normal italic normal 10px/normal fantasy']
+ expected: FAIL
+
+ [Property font value '100 semi-expanded normal italic medium/normal monospace']
+ expected: FAIL
+
+ [Property font value 'small-caps normal bold italic 20%/1.2 Menu']
+ expected: FAIL
+
+ [Property font value '900 italic small-caps normal 20%/1.2 "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'italic condensed 900 normal calc(30% - 40px)/calc(120% + 1.2em) monospace']
+ expected: FAIL
+
+ [Property font value 'semi-expanded medium/normal Menu']
+ expected: FAIL
+
+ [Property font value 'normal small-caps italic normal 20%/1.2 Menu']
+ expected: FAIL
+
+ [Property font value 'normal 900 italic calc(30% - 40px)/calc(120% + 1.2em) sans-serif']
+ expected: FAIL
+
+ [Property font value 'italic extra-expanded small-caps larger/calc(120% + 1.2em) serif']
+ expected: FAIL
+
+ [Property font value 'small-caps bold normal normal medium/normal fantasy']
+ expected: FAIL
+
+ [Property font value 'italic 10px/normal fantasy']
+ expected: FAIL
+
+ [Property font value 'italic normal lighter small-caps xx-large/1.2 cursive']
+ expected: FAIL
+
+ [Property font value '900 condensed small-caps normal calc(30% - 40px)/calc(120% + 1.2em) fantasy']
+ expected: FAIL
+
+ [Property font value 'normal small-caps calc(30% - 40px)/calc(120% + 1.2em) Menu']
+ expected: FAIL
+
+ [Property font value 'normal 100 small-caps larger/calc(120% + 1.2em) Menu']
+ expected: FAIL
+
+ [Property font value 'bold small-caps italic normal medium/normal fantasy']
+ expected: FAIL
+
+ [Property font value 'small-caps normal normal normal smaller cursive']
+ expected: FAIL
+
+ [Property font value 'condensed 100 italic calc(30% - 40px)/calc(120% + 1.2em) cursive']
+ expected: FAIL
+
+ [Property font value 'bolder small-caps normal normal 10px/normal "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'italic normal semi-expanded normal 10px/normal Menu']
+ expected: FAIL
+
+ [Property font value 'normal normal normal larger/calc(120% + 1.2em) fantasy']
+ expected: FAIL
+
+ [Property font value 'italic bold ultra-condensed small-caps 10px/normal sans-serif']
+ expected: FAIL
+
+ [Property font value '100 normal small-caps condensed larger/calc(120% + 1.2em) cursive']
+ expected: FAIL
+
+ [Property font value 'extra-condensed italic normal normal 20%/1.2 Menu']
+ expected: FAIL
+
+ [Property font value 'normal italic normal normal calc(30% - 40px)/calc(120% + 1.2em) fantasy']
+ expected: FAIL
+
+ [Property font value 'semi-condensed italic normal 100 xx-small serif']
+ expected: FAIL
+
+ [Property font value 'ultra-condensed italic bolder normal 10px/normal Menu']
+ expected: FAIL
+
+ [Property font value 'small-caps condensed italic calc(30% - 40px)/calc(120% + 1.2em) fantasy']
+ expected: FAIL
+
+ [Property font value 'extra-condensed normal normal small-caps 20%/1.2 fantasy']
+ expected: FAIL
+
+ [Property font value 'condensed normal normal bolder calc(30% - 40px)/calc(120% + 1.2em) monospace']
+ expected: FAIL
+
+ [Property font value 'extra-expanded normal italic lighter larger/calc(120% + 1.2em) sans-serif']
+ expected: FAIL
+
+ [Property font value 'ultra-expanded normal normal normal smaller sans-serif']
+ expected: FAIL
+
+ [Property font value 'italic normal normal normal xx-small "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) sans-serif']
+ expected: FAIL
+
+ [Property font value 'small-caps italic normal 10px/normal Menu']
+ expected: FAIL
+
+ [Property font value 'italic semi-condensed bold small-caps xx-small Menu']
+ expected: FAIL
+
+ [Property font value 'small-caps italic expanded smaller Menu']
+ expected: FAIL
+
+ [Property font value 'semi-condensed normal 900 xx-small "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal italic 900 semi-condensed xx-large/1.2 serif']
+ expected: FAIL
+
+ [Property font value 'small-caps italic smaller monospace']
+ expected: FAIL
+
+ [Property font value 'bolder normal normal calc(30% - 40px)/calc(120% + 1.2em) monospace']
+ expected: FAIL
+
+ [Property font value 'normal extra-condensed small-caps normal 20%/1.2 fantasy']
+ expected: FAIL
+
+ [Property font value 'italic semi-condensed normal normal xx-small monospace']
+ expected: FAIL
+
+ [Property font value 'bolder normal small-caps normal medium/normal serif']
+ expected: FAIL
+
+ [Property font value 'bold extra-condensed 20%/1.2 sans-serif']
+ expected: FAIL
+
+ [Property font value 'lighter small-caps extra-expanded larger/calc(120% + 1.2em) Menu']
+ expected: FAIL
+
+ [Property font value 'normal extra-expanded bolder italic larger/calc(120% + 1.2em) sans-serif']
+ expected: FAIL
+
+ [Property font value 'small-caps 900 italic normal 10px/normal serif']
+ expected: FAIL
+
+ [Property font value 'italic small-caps normal normal xx-large/1.2 fantasy']
+ expected: FAIL
+
+ [Property font value 'italic small-caps 100 ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) sans-serif']
+ expected: FAIL
+
+ [Property font value 'normal small-caps normal italic xx-large/1.2 sans-serif']
+ expected: FAIL
+
+ [Property font value 'italic small-caps condensed normal medium/normal fantasy']
+ expected: FAIL
+
+ [Property font value 'ultra-expanded italic smaller fantasy']
+ expected: FAIL
+
+ [Property font value 'normal bolder small-caps extra-condensed 20%/1.2 sans-serif']
+ expected: FAIL
+
+ [Property font value 'normal normal lighter semi-condensed calc(30% - 40px)/calc(120% + 1.2em) cursive']
+ expected: FAIL
+
+ [Property font value 'normal normal small-caps normal calc(30% - 40px)/calc(120% + 1.2em) sans-serif']
+ expected: FAIL
+
+ [Property font value 'semi-expanded italic small-caps medium/normal sans-serif']
+ expected: FAIL
+
+ [Property font value 'normal normal italic extra-condensed 10px/normal "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal bold normal normal larger/calc(120% + 1.2em) monospace']
+ expected: FAIL
+
+ [Property font value 'ultra-condensed small-caps italic normal 10px/normal "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'semi-condensed 900 italic normal xx-small fantasy']
+ expected: FAIL
+
+ [Property font value 'normal normal normal bold calc(30% - 40px)/calc(120% + 1.2em) serif']
+ expected: FAIL
+
+ [Property font value 'normal lighter italic ultra-condensed xx-large/1.2 monospace']
+ expected: FAIL
+
+ [Property font value 'small-caps lighter normal ultra-condensed larger/calc(120% + 1.2em) Menu']
+ expected: FAIL
+
+ [Property font value 'normal bold small-caps italic 10px/normal serif']
+ expected: FAIL
+
+ [Property font value 'condensed normal small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) Menu']
+ expected: FAIL
+
+ [Property font value 'normal normal bolder small-caps 20%/1.2 sans-serif']
+ expected: FAIL
+
+ [Property font value 'normal extra-expanded larger/calc(120% + 1.2em) "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'extra-expanded italic small-caps 900 larger/calc(120% + 1.2em) fantasy']
+ expected: FAIL
+
+ [Property font value 'normal medium/normal sans-serif']
+ expected: FAIL
+
+ [Property font value 'normal normal expanded normal medium/normal monospace']
+ expected: FAIL
+
+ [Property font value 'lighter italic condensed normal medium/normal cursive']
+ expected: FAIL
+
+ [Property font value 'small-caps semi-condensed italic normal xx-small monospace']
+ expected: FAIL
+
+ [Property font value 'semi-condensed small-caps normal xx-small sans-serif']
+ expected: FAIL
+
+ [Property font value 'italic small-caps normal ultra-expanded smaller Menu']
+ expected: FAIL
+
+ [Property font value 'italic 900 normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) cursive']
+ expected: FAIL
+
+ [Property font value 'bold semi-condensed small-caps italic xx-small monospace']
+ expected: FAIL
+
+ [Property font value 'normal normal semi-expanded xx-small fantasy']
+ expected: FAIL
+
+ [Property font value '900 small-caps larger/calc(120% + 1.2em) monospace']
+ expected: FAIL
+
+ [Property font value 'italic expanded normal bolder xx-large/1.2 "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'expanded bolder small-caps xx-large/1.2 Menu']
+ expected: FAIL
+
+ [Property font value 'normal normal normal italic 10px/normal Menu']
+ expected: FAIL
+
+ [Property font value 'normal italic small-caps normal smaller sans-serif']
+ expected: FAIL
+
+ [Property font value 'italic normal small-caps extra-condensed calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'italic normal 100 condensed larger/calc(120% + 1.2em) fantasy']
+ expected: FAIL
+
+ [Property font value 'semi-expanded normal bold normal medium/normal serif']
+ expected: FAIL
+
+ [Property font value '100 italic semi-condensed small-caps xx-large/1.2 fantasy']
+ expected: FAIL
+
+ [Property font value 'extra-expanded 900 normal larger/calc(120% + 1.2em) Menu']
+ expected: FAIL
+
+ [Property font value 'italic normal bolder normal medium/normal sans-serif']
+ expected: FAIL
+
+ [Property font value 'italic normal expanded small-caps 20%/1.2 "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal italic expanded normal smaller cursive']
+ expected: FAIL
+
+ [Property font value 'small-caps 900 normal xx-small cursive']
+ expected: FAIL
+
+ [Property font value 'expanded small-caps normal italic xx-large/1.2 fantasy']
+ expected: FAIL
+
+ [Property font value '900 small-caps ultra-condensed italic 10px/normal serif']
+ expected: FAIL
+
+ [Property font value 'normal small-caps 900 normal xx-large/1.2 cursive']
+ expected: FAIL
+
+ [Property font value 'italic normal normal ultra-condensed larger/calc(120% + 1.2em) cursive']
+ expected: FAIL
+
+ [Property font value 'normal 100 semi-condensed normal xx-small fantasy']
+ expected: FAIL
+
+ [Property font value 'xx-small serif']
+ expected: FAIL
+
+ [Property font value 'italic lighter normal normal 10px/normal serif']
+ expected: FAIL
+
+ [Property font value 'normal normal bold italic 10px/normal serif']
+ expected: FAIL
+
+ [Property font value 'normal ultra-expanded normal smaller serif']
+ expected: FAIL
+
+ [Property font value 'small-caps normal 100 smaller fantasy']
+ expected: FAIL
+
+ [Property font value 'extra-condensed lighter normal small-caps 20%/1.2 sans-serif']
+ expected: FAIL
+
+ [Property font value 'small-caps italic normal 100 calc(30% - 40px)/calc(120% + 1.2em) serif']
+ expected: FAIL
+
+ [Property font value 'normal normal extra-expanded italic xx-large/1.2 Menu']
+ expected: FAIL
+
+ [Property font value 'small-caps normal ultra-expanded xx-small serif']
+ expected: FAIL
+
+ [Property font value 'ultra-expanded bold normal normal smaller "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'small-caps ultra-expanded 100 italic smaller sans-serif']
+ expected: FAIL
+
+ [Property font value 'lighter semi-condensed normal normal xx-small fantasy']
+ expected: FAIL
+
+ [Property font value 'expanded italic small-caps normal xx-large/1.2 cursive']
+ expected: FAIL
+
+ [Property font value 'small-caps normal normal italic 10px/normal fantasy']
+ expected: FAIL
+
+ [Property font value 'normal italic normal small-caps xx-small monospace']
+ expected: FAIL
+
+ [Property font value 'lighter ultra-condensed italic small-caps 10px/normal sans-serif']
+ expected: FAIL
+
+ [Property font value 'condensed small-caps calc(30% - 40px)/calc(120% + 1.2em) serif']
+ expected: FAIL
+
+ [Property font value 'small-caps semi-expanded italic bold medium/normal Menu']
+ expected: FAIL
+
+ [Property font value 'bolder small-caps italic expanded xx-large/1.2 monospace']
+ expected: FAIL
+
+ [Property font value 'bolder ultra-expanded italic normal smaller serif']
+ expected: FAIL
+
+ [Property font value 'small-caps italic extra-expanded normal 10px/normal "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal ultra-condensed normal normal 10px/normal sans-serif']
+ expected: FAIL
+
+ [Property font value 'small-caps normal italic expanded larger/calc(120% + 1.2em) cursive']
+ expected: FAIL
+
+ [Property font value 'normal bolder italic small-caps medium/normal fantasy']
+ expected: FAIL
+
+ [Property font value '100 small-caps ultra-expanded normal smaller "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'bold extra-expanded italic larger/calc(120% + 1.2em) "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal ultra-expanded lighter small-caps smaller cursive']
+ expected: FAIL
+
+ [Property font value 'italic small-caps normal bold larger/calc(120% + 1.2em) monospace']
+ expected: FAIL
+
+ [Property font value 'italic extra-condensed 100 20%/1.2 fantasy']
+ expected: FAIL
+
+ [Property font value 'normal bold expanded small-caps xx-large/1.2 Menu']
+ expected: FAIL
+
+ [Property font value 'italic normal small-caps smaller fantasy']
+ expected: FAIL
+
+ [Property font value 'italic bolder small-caps normal medium/normal monospace']
+ expected: FAIL
+
+ [Property font value 'normal italic bolder calc(30% - 40px)/calc(120% + 1.2em) monospace']
+ expected: FAIL
+
+ [Property font value 'normal italic semi-expanded larger/calc(120% + 1.2em) sans-serif']
+ expected: FAIL
+
+ [Property font value 'semi-expanded bold italic small-caps medium/normal monospace']
+ expected: FAIL
+
+ [Property font value 'small-caps normal normal bolder 20%/1.2 monospace']
+ expected: FAIL
+
+ [Property font value 'normal small-caps bolder condensed smaller monospace']
+ expected: FAIL
+
+ [Property font value 'ultra-expanded italic bold smaller monospace']
+ expected: FAIL
+
+ [Property font value 'lighter small-caps normal italic 20%/1.2 serif']
+ expected: FAIL
+
+ [Property font value 'extra-condensed normal small-caps italic 20%/1.2 monospace']
+ expected: FAIL
+
+ [Property font value 'normal normal italic bolder smaller Menu']
+ expected: FAIL
+
+ [Property font value 'small-caps normal extra-condensed italic xx-large/1.2 cursive']
+ expected: FAIL
+
+ [Property font value 'normal italic 10px/normal sans-serif']
+ expected: FAIL
+
+ [Property font value 'small-caps extra-expanded lighter normal larger/calc(120% + 1.2em) serif']
+ expected: FAIL
+
+ [Property font value 'lighter normal extra-expanded small-caps calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal ultra-expanded italic lighter smaller sans-serif']
+ expected: FAIL
+
+ [Property font value 'extra-expanded normal lighter small-caps larger/calc(120% + 1.2em) cursive']
+ expected: FAIL
+
+ [Property font value 'ultra-condensed normal normal italic 10px/normal cursive']
+ expected: FAIL
+
+ [Property font value 'small-caps bolder condensed calc(30% - 40px)/calc(120% + 1.2em) cursive']
+ expected: FAIL
+
+ [Property font value 'bold italic normal normal xx-large/1.2 cursive']
+ expected: FAIL
+
+ [Property font value '100 small-caps normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) sans-serif']
+ expected: FAIL
+
+ [Property font value 'italic normal small-caps 900 20%/1.2 Menu']
+ expected: FAIL
+
+ [Property font value 'small-caps expanded bolder xx-large/1.2 "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'small-caps ultra-expanded normal normal smaller serif']
+ expected: FAIL
+
+ [Property font value 'normal normal 100 larger/calc(120% + 1.2em) Menu']
+ expected: FAIL
+
+ [Property font value 'italic ultra-expanded small-caps normal smaller sans-serif']
+ expected: FAIL
+
+ [Property font value 'normal semi-expanded 900 medium/normal "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal small-caps extra-expanded lighter xx-small sans-serif']
+ expected: FAIL
+
+ [Property font value 'normal expanded bold normal xx-large/1.2 serif']
+ expected: FAIL
+
+ [Property font value 'ultra-expanded small-caps italic smaller Menu']
+ expected: FAIL
+
+ [Property font value 'normal small-caps bold italic larger/calc(120% + 1.2em) fantasy']
+ expected: FAIL
+
+ [Property font value 'bold normal normal ultra-condensed larger/calc(120% + 1.2em) sans-serif']
+ expected: FAIL
+
+ [Property font value 'normal small-caps semi-expanded normal 20%/1.2 "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'italic bolder normal smaller "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'expanded normal xx-large/1.2 "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'expanded normal bolder italic xx-large/1.2 sans-serif']
+ expected: FAIL
+
+ [Property font value 'bold normal semi-expanded normal 10px/normal monospace']
+ expected: FAIL
+
+ [Property font value 'normal italic normal 20%/1.2 cursive']
+ expected: FAIL
+
+ [Property font value 'normal 900 semi-expanded italic medium/normal monospace']
+ expected: FAIL
+
+ [Property font value 'normal condensed normal small-caps calc(30% - 40px)/calc(120% + 1.2em) fantasy']
+ expected: FAIL
+
+ [Property font value 'small-caps medium/normal "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'semi-expanded small-caps normal normal medium/normal cursive']
+ expected: FAIL
+
+ [Property font value 'bolder italic normal small-caps larger/calc(120% + 1.2em) fantasy']
+ expected: FAIL
+
+ [Property font value 'normal extra-expanded italic small-caps larger/calc(120% + 1.2em) serif']
+ expected: FAIL
+
+ [Property font value 'small-caps 100 semi-expanded italic medium/normal monospace']
+ expected: FAIL
+
+ [Property font value '900 normal italic extra-condensed calc(30% - 40px)/calc(120% + 1.2em) Menu']
+ expected: FAIL
+
+ [Property font value 'small-caps italic bolder semi-expanded larger/calc(120% + 1.2em) monospace']
+ expected: FAIL
+
+ [Property font value 'normal condensed small-caps italic calc(30% - 40px)/calc(120% + 1.2em) monospace']
+ expected: FAIL
+
+ [Property font value 'small-caps italic 900 medium/normal cursive']
+ expected: FAIL
+
+ [Property font value '100 extra-condensed small-caps 20%/1.2 cursive']
+ expected: FAIL
+
+ [Property font value 'normal semi-expanded italic medium/normal Menu']
+ expected: FAIL
+
+ [Property font value '900 small-caps italic xx-small cursive']
+ expected: FAIL
+
+ [Property font value 'normal 900 normal xx-large/1.2 fantasy']
+ expected: FAIL
+
+ [Property font value 'lighter italic normal ultra-expanded smaller monospace']
+ expected: FAIL
+
+ [Property font value 'small-caps normal italic lighter xx-large/1.2 sans-serif']
+ expected: FAIL
+
+ [Property font value 'semi-condensed small-caps bolder normal xx-small cursive']
+ expected: FAIL
+
+ [Property font value 'small-caps normal normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) Menu']
+ expected: FAIL
+
+ [Property font value 'italic normal normal 100 xx-large/1.2 sans-serif']
+ expected: FAIL
+
+ [Property font value 'normal small-caps normal bolder larger/calc(120% + 1.2em) cursive']
+ expected: FAIL
+
+ [Property font value 'small-caps normal bolder extra-expanded calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"']
+ expected: FAIL
+
+ [Property font value 'normal normal xx-large/1.2 cursive']
+ expected: FAIL
+
+ [Property font value 'small-caps expanded xx-large/1.2 Menu']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-feature-settings-computed.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-feature-settings-computed.html.ini
index 1148fa32756..eba51b4fc57 100644
--- a/tests/wpt/metadata/css/css-fonts/parsing/font-feature-settings-computed.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-feature-settings-computed.html.ini
@@ -23,3 +23,27 @@
[Property font-feature-settings value '"dlig", "smcp", "dlig" 0' computes to '"dlig", "smcp", "dlig" 0']
expected: FAIL
+ [Property font-feature-settings value '"liga" 0']
+ expected: FAIL
+
+ [Property font-feature-settings value '"smcp"']
+ expected: FAIL
+
+ [Property font-feature-settings value '"PKRN"']
+ expected: FAIL
+
+ [Property font-feature-settings value '"dlig"']
+ expected: FAIL
+
+ [Property font-feature-settings value '"c2sc"']
+ expected: FAIL
+
+ [Property font-feature-settings value '"tnum", "hist"']
+ expected: FAIL
+
+ [Property font-feature-settings value 'normal']
+ expected: FAIL
+
+ [Property font-feature-settings value '"dlig", "smcp", "dlig" 0']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-kerning-computed.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-kerning-computed.html.ini
index 211838e7cd9..271696393dd 100644
--- a/tests/wpt/metadata/css/css-fonts/parsing/font-kerning-computed.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-kerning-computed.html.ini
@@ -8,3 +8,12 @@
[Property font-kerning value 'auto' computes to 'auto']
expected: FAIL
+ [Property font-kerning value 'none']
+ expected: FAIL
+
+ [Property font-kerning value 'auto']
+ expected: FAIL
+
+ [Property font-kerning value 'normal']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-language-override-computed.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-language-override-computed.html.ini
index fcfff00336d..a2ee8c7b6b4 100644
--- a/tests/wpt/metadata/css/css-fonts/parsing/font-language-override-computed.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-language-override-computed.html.ini
@@ -5,3 +5,9 @@
[Property font-language-override value 'normal' computes to 'normal']
expected: FAIL
+ [Property font-language-override value 'normal']
+ expected: FAIL
+
+ [Property font-language-override value '"ksw"']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-optical-sizing-computed.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-optical-sizing-computed.html.ini
index 484fb8b1c17..7d95f3eaac5 100644
--- a/tests/wpt/metadata/css/css-fonts/parsing/font-optical-sizing-computed.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-optical-sizing-computed.html.ini
@@ -5,3 +5,9 @@
[Property font-optical-sizing value 'auto' computes to 'auto']
expected: FAIL
+ [Property font-optical-sizing value 'auto']
+ expected: FAIL
+
+ [Property font-optical-sizing value 'none']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-size-adjust-computed.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-size-adjust-computed.html.ini
index dba0bd0bcc9..0e1a6062034 100644
--- a/tests/wpt/metadata/css/css-fonts/parsing/font-size-adjust-computed.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-size-adjust-computed.html.ini
@@ -5,3 +5,9 @@
[Property font-size-adjust value '0.5' computes to '0.5']
expected: FAIL
+ [Property font-size-adjust value 'none']
+ expected: FAIL
+
+ [Property font-size-adjust value '0.5']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-synthesis-computed.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-synthesis-computed.html.ini
index 8ad737926c9..16d9c01f11a 100644
--- a/tests/wpt/metadata/css/css-fonts/parsing/font-synthesis-computed.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-synthesis-computed.html.ini
@@ -11,3 +11,15 @@
[Property font-synthesis value 'none' computes to 'none']
expected: FAIL
+ [Property font-synthesis value 'style']
+ expected: FAIL
+
+ [Property font-synthesis value 'weight']
+ expected: FAIL
+
+ [Property font-synthesis value 'weight style']
+ expected: FAIL
+
+ [Property font-synthesis value 'none']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-variant-caps-computed.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-variant-caps-computed.html.ini
index cbc02f7cb8e..b6d18476954 100644
--- a/tests/wpt/metadata/css/css-fonts/parsing/font-variant-caps-computed.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-variant-caps-computed.html.ini
@@ -14,3 +14,18 @@
[Property font-variant-caps value 'petite-caps' computes to 'petite-caps']
expected: FAIL
+ [Property font-variant-caps value 'all-small-caps']
+ expected: FAIL
+
+ [Property font-variant-caps value 'titling-caps']
+ expected: FAIL
+
+ [Property font-variant-caps value 'petite-caps']
+ expected: FAIL
+
+ [Property font-variant-caps value 'all-petite-caps']
+ expected: FAIL
+
+ [Property font-variant-caps value 'unicase']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-variant-east-asian-computed.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-variant-east-asian-computed.html.ini
index b9cf050a1a3..1329ea5052f 100644
--- a/tests/wpt/metadata/css/css-fonts/parsing/font-variant-east-asian-computed.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-variant-east-asian-computed.html.ini
@@ -35,3 +35,39 @@
[Property font-variant-east-asian value 'traditional' computes to 'traditional']
expected: FAIL
+ [Property font-variant-east-asian value 'jis78 proportional-width']
+ expected: FAIL
+
+ [Property font-variant-east-asian value 'simplified']
+ expected: FAIL
+
+ [Property font-variant-east-asian value 'proportional-width']
+ expected: FAIL
+
+ [Property font-variant-east-asian value 'simplified full-width ruby']
+ expected: FAIL
+
+ [Property font-variant-east-asian value 'ruby']
+ expected: FAIL
+
+ [Property font-variant-east-asian value 'normal']
+ expected: FAIL
+
+ [Property font-variant-east-asian value 'jis78']
+ expected: FAIL
+
+ [Property font-variant-east-asian value 'jis83']
+ expected: FAIL
+
+ [Property font-variant-east-asian value 'full-width']
+ expected: FAIL
+
+ [Property font-variant-east-asian value 'jis04']
+ expected: FAIL
+
+ [Property font-variant-east-asian value 'traditional']
+ expected: FAIL
+
+ [Property font-variant-east-asian value 'jis90']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-variant-ligatures-computed.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-variant-ligatures-computed.html.ini
index aa3ef8279aa..c8ec81b8edb 100644
--- a/tests/wpt/metadata/css/css-fonts/parsing/font-variant-ligatures-computed.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-variant-ligatures-computed.html.ini
@@ -29,3 +29,33 @@
[Property font-variant-ligatures value 'no-contextual' computes to 'no-contextual']
expected: FAIL
+ [Property font-variant-ligatures value 'discretionary-ligatures']
+ expected: FAIL
+
+ [Property font-variant-ligatures value 'historical-ligatures']
+ expected: FAIL
+
+ [Property font-variant-ligatures value 'contextual']
+ expected: FAIL
+
+ [Property font-variant-ligatures value 'common-ligatures']
+ expected: FAIL
+
+ [Property font-variant-ligatures value 'no-discretionary-ligatures']
+ expected: FAIL
+
+ [Property font-variant-ligatures value 'none']
+ expected: FAIL
+
+ [Property font-variant-ligatures value 'no-historical-ligatures']
+ expected: FAIL
+
+ [Property font-variant-ligatures value 'no-contextual']
+ expected: FAIL
+
+ [Property font-variant-ligatures value 'normal']
+ expected: FAIL
+
+ [Property font-variant-ligatures value 'no-common-ligatures']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-variant-numeric-computed.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-variant-numeric-computed.html.ini
index 5e02c786180..50f66a01667 100644
--- a/tests/wpt/metadata/css/css-fonts/parsing/font-variant-numeric-computed.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-variant-numeric-computed.html.ini
@@ -32,3 +32,36 @@
[Property font-variant-numeric value 'slashed-zero' computes to 'slashed-zero']
expected: FAIL
+ [Property font-variant-numeric value 'normal']
+ expected: FAIL
+
+ [Property font-variant-numeric value 'oldstyle-nums tabular-nums diagonal-fractions']
+ expected: FAIL
+
+ [Property font-variant-numeric value 'slashed-zero']
+ expected: FAIL
+
+ [Property font-variant-numeric value 'ordinal']
+ expected: FAIL
+
+ [Property font-variant-numeric value 'oldstyle-nums']
+ expected: FAIL
+
+ [Property font-variant-numeric value 'diagonal-fractions']
+ expected: FAIL
+
+ [Property font-variant-numeric value 'stacked-fractions']
+ expected: FAIL
+
+ [Property font-variant-numeric value 'proportional-nums']
+ expected: FAIL
+
+ [Property font-variant-numeric value 'lining-nums']
+ expected: FAIL
+
+ [Property font-variant-numeric value 'lining-nums proportional-nums stacked-fractions ordinal slashed-zero']
+ expected: FAIL
+
+ [Property font-variant-numeric value 'tabular-nums']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-variant-position-computed.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-variant-position-computed.html.ini
index 5ff2096182a..309c079adb7 100644
--- a/tests/wpt/metadata/css/css-fonts/parsing/font-variant-position-computed.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-variant-position-computed.html.ini
@@ -8,3 +8,12 @@
[Property font-variant-position value 'normal' computes to 'normal']
expected: FAIL
+ [Property font-variant-position value 'super']
+ expected: FAIL
+
+ [Property font-variant-position value 'normal']
+ expected: FAIL
+
+ [Property font-variant-position value 'sub']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/parsing/font-variation-settings-computed.html.ini b/tests/wpt/metadata/css/css-fonts/parsing/font-variation-settings-computed.html.ini
index b75e941bdc6..4956456d560 100644
--- a/tests/wpt/metadata/css/css-fonts/parsing/font-variation-settings-computed.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/parsing/font-variation-settings-computed.html.ini
@@ -11,3 +11,15 @@
[Property font-variation-settings value '"XHGT" calc(0.4 + 0.3)' computes to '"XHGT" 0.7']
expected: FAIL
+ [Property font-variation-settings value 'normal']
+ expected: FAIL
+
+ [Property font-variation-settings value '"wght" 700, "XHGT" 0.7']
+ expected: FAIL
+
+ [Property font-variation-settings value '"wght" 700']
+ expected: FAIL
+
+ [Property font-variation-settings value '"XHGT" calc(0.4 + 0.3)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-images/parsing/image-orientation-computed.html.ini b/tests/wpt/metadata/css/css-images/parsing/image-orientation-computed.html.ini
index 8388d10fd66..f505a603940 100644
--- a/tests/wpt/metadata/css/css-images/parsing/image-orientation-computed.html.ini
+++ b/tests/wpt/metadata/css/css-images/parsing/image-orientation-computed.html.ini
@@ -5,3 +5,9 @@
[Property image-orientation value 'none' computes to 'none']
expected: FAIL
+ [Property image-orientation value 'none']
+ expected: FAIL
+
+ [Property image-orientation value 'from-image']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-images/parsing/image-rendering-computed.html.ini b/tests/wpt/metadata/css/css-images/parsing/image-rendering-computed.html.ini
index 1b0fc140356..7f86c7bc52d 100644
--- a/tests/wpt/metadata/css/css-images/parsing/image-rendering-computed.html.ini
+++ b/tests/wpt/metadata/css/css-images/parsing/image-rendering-computed.html.ini
@@ -5,3 +5,9 @@
[Property image-rendering value 'high-quality' computes to 'high-quality']
expected: FAIL
+ [Property image-rendering value 'smooth']
+ expected: FAIL
+
+ [Property image-rendering value 'high-quality']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-images/parsing/object-fit-computed.html.ini b/tests/wpt/metadata/css/css-images/parsing/object-fit-computed.html.ini
index 27a9b2a40a7..7245a4bc778 100644
--- a/tests/wpt/metadata/css/css-images/parsing/object-fit-computed.html.ini
+++ b/tests/wpt/metadata/css/css-images/parsing/object-fit-computed.html.ini
@@ -17,3 +17,21 @@
[Property object-fit value 'cover' computes to 'cover']
expected: FAIL
+ [Property object-fit value 'fill']
+ expected: FAIL
+
+ [Property object-fit value 'cover scale-down']
+ expected: FAIL
+
+ [Property object-fit value 'contain']
+ expected: FAIL
+
+ [Property object-fit value 'cover']
+ expected: FAIL
+
+ [Property object-fit value 'scale-down']
+ expected: FAIL
+
+ [Property object-fit value 'none']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-images/parsing/object-position-computed.html.ini b/tests/wpt/metadata/css/css-images/parsing/object-position-computed.html.ini
index c0556d12e5d..245daffddff 100644
--- a/tests/wpt/metadata/css/css-images/parsing/object-position-computed.html.ini
+++ b/tests/wpt/metadata/css/css-images/parsing/object-position-computed.html.ini
@@ -47,3 +47,51 @@
[Property object-position value 'right 20px bottom 10px' computes to 'calc(100% - 20px) calc(100% - 10px)']
expected: FAIL
+ [Property object-position value '-20% -30px']
+ expected: FAIL
+
+ [Property object-position value 'right 40%']
+ expected: FAIL
+
+ [Property object-position value '30px center']
+ expected: FAIL
+
+ [Property object-position value 'center 50px']
+ expected: FAIL
+
+ [Property object-position value '40px top']
+ expected: FAIL
+
+ [Property object-position value 'right 30% top 60px']
+ expected: FAIL
+
+ [Property object-position value 'right 20px bottom 10px']
+ expected: FAIL
+
+ [Property object-position value 'left bottom']
+ expected: FAIL
+
+ [Property object-position value 'right 20% bottom 10%']
+ expected: FAIL
+
+ [Property object-position value '10% center']
+ expected: FAIL
+
+ [Property object-position value 'center']
+ expected: FAIL
+
+ [Property object-position value 'center bottom']
+ expected: FAIL
+
+ [Property object-position value 'center top']
+ expected: FAIL
+
+ [Property object-position value 'center center']
+ expected: FAIL
+
+ [Property object-position value 'left center']
+ expected: FAIL
+
+ [Property object-position value 'right bottom']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-color-computed.html.ini b/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-color-computed.html.ini
index 26d7104a525..68354253576 100644
--- a/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-color-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-color-computed.html.ini
@@ -8,3 +8,12 @@
[Property text-decoration-color value 'rgb(0, 0, 255)' computes to 'rgb(0, 0, 255)']
expected: FAIL
+ [Property text-decoration-color value 'inherit']
+ expected: FAIL
+
+ [Property text-decoration-color value 'rgb(0, 0, 255)']
+ expected: FAIL
+
+ [Property text-decoration-color value 'currentcolor']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-computed.html.ini b/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-computed.html.ini
index f17954acc2a..44e2ee712b2 100644
--- a/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-computed.html.ini
@@ -53,3 +53,39 @@
[Property text-decoration value 'rgba(10, 20, 30, 0.4) dotted' computes to 'dotted rgba(10, 20, 30, 0.4)']
expected: FAIL
+ [Property text-decoration value 'auto']
+ expected: FAIL
+
+ [Property text-decoration value 'currentcolor']
+ expected: FAIL
+
+ [Property text-decoration value 'double overline underline']
+ expected: FAIL
+
+ [Property text-decoration value 'line-through']
+ expected: FAIL
+
+ [Property text-decoration value 'underline dashed rgb(0, 255, 0)']
+ expected: FAIL
+
+ [Property text-decoration value 'underline overline line-through red']
+ expected: FAIL
+
+ [Property text-decoration value 'rgba(10, 20, 30, 0.4) dotted']
+ expected: FAIL
+
+ [Property text-decoration value 'none']
+ expected: FAIL
+
+ [Property text-decoration value '10px']
+ expected: FAIL
+
+ [Property text-decoration value 'underline red from-font']
+ expected: FAIL
+
+ [Property text-decoration value 'solid']
+ expected: FAIL
+
+ [Property text-decoration value 'from-font']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-line-computed.html.ini b/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-line-computed.html.ini
index ffc3641723a..d6f18341300 100644
--- a/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-line-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-line-computed.html.ini
@@ -5,3 +5,9 @@
[Property text-decoration-line value 'grammar-error' computes to 'grammar-error']
expected: FAIL
+ [Property text-decoration-line value 'spelling-error']
+ expected: FAIL
+
+ [Property text-decoration-line value 'grammar-error']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-skip-ink-computed.html.ini b/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-skip-ink-computed.html.ini
index cd7bfe6eae5..6b6cc9dcf55 100644
--- a/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-skip-ink-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-skip-ink-computed.html.ini
@@ -5,3 +5,9 @@
[Property text-decoration-skip-ink value 'none' computes to 'none']
expected: FAIL
+ [Property text-decoration-skip-ink value 'none']
+ expected: FAIL
+
+ [Property text-decoration-skip-ink value 'auto']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-style-computed.html.ini b/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-style-computed.html.ini
index 9057105353f..5cff5aa0b38 100644
--- a/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-style-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-style-computed.html.ini
@@ -14,3 +14,18 @@
[Property text-decoration-style value 'dashed' computes to 'dashed']
expected: FAIL
+ [Property text-decoration-style value 'wavy']
+ expected: FAIL
+
+ [Property text-decoration-style value 'double']
+ expected: FAIL
+
+ [Property text-decoration-style value 'dashed']
+ expected: FAIL
+
+ [Property text-decoration-style value 'dotted']
+ expected: FAIL
+
+ [Property text-decoration-style value 'solid']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text-decor/parsing/text-underline-position-computed.html.ini b/tests/wpt/metadata/css/css-text-decor/parsing/text-underline-position-computed.html.ini
index 477e68c0fdc..9bb540564a3 100644
--- a/tests/wpt/metadata/css/css-text-decor/parsing/text-underline-position-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text-decor/parsing/text-underline-position-computed.html.ini
@@ -14,3 +14,18 @@
[Property text-underline-position value 'right' computes to 'right']
expected: FAIL
+ [Property text-underline-position value 'under left']
+ expected: FAIL
+
+ [Property text-underline-position value 'left']
+ expected: FAIL
+
+ [Property text-underline-position value 'under']
+ expected: FAIL
+
+ [Property text-underline-position value 'right']
+ expected: FAIL
+
+ [Property text-underline-position value 'auto']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text-decor/text-decoration-thickness-computed.html.ini b/tests/wpt/metadata/css/css-text-decor/text-decoration-thickness-computed.html.ini
index 7b59ea11fdf..04ab080d661 100644
--- a/tests/wpt/metadata/css/css-text-decor/text-decoration-thickness-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text-decor/text-decoration-thickness-computed.html.ini
@@ -8,3 +8,12 @@
[Property text-decoration-thickness value 'calc(10px - 8px)' computes to '2px']
expected: FAIL
+ [Property text-decoration-thickness value 'auto']
+ expected: FAIL
+
+ [Property text-decoration-thickness value 'from-font']
+ expected: FAIL
+
+ [Property text-decoration-thickness value 'calc(10px - 8px)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text-decor/text-underline-offset-computed.html.ini b/tests/wpt/metadata/css/css-text-decor/text-underline-offset-computed.html.ini
index 3b68af5f2b8..d33451897c9 100644
--- a/tests/wpt/metadata/css/css-text-decor/text-underline-offset-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text-decor/text-underline-offset-computed.html.ini
@@ -8,3 +8,12 @@
[Property text-underline-offset value 'from-font' computes to 'from-font']
expected: FAIL
+ [Property text-underline-offset value 'auto']
+ expected: FAIL
+
+ [Property text-underline-offset value 'from-font']
+ expected: FAIL
+
+ [Property text-underline-offset value 'calc(10px - 8px)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/hyphens/hyphens-out-of-flow-001.html.ini b/tests/wpt/metadata/css/css-text/hyphens/hyphens-out-of-flow-001.html.ini
deleted file mode 100644
index be32a87e09c..00000000000
--- a/tests/wpt/metadata/css/css-text/hyphens/hyphens-out-of-flow-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[hyphens-out-of-flow-001.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-normal-018.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-normal-018.xht.ini
deleted file mode 100644
index 693999d7f9d..00000000000
--- a/tests/wpt/metadata/css/css-text/line-break/line-break-normal-018.xht.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[line-break-normal-018.xht]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018.xht.ini
deleted file mode 100644
index bd79bd226f9..00000000000
--- a/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018.xht.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[line-break-strict-018.xht]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/parsing/hyphens-computed.html.ini b/tests/wpt/metadata/css/css-text/parsing/hyphens-computed.html.ini
index 5f9ade1908c..710bcfd8ff0 100644
--- a/tests/wpt/metadata/css/css-text/parsing/hyphens-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text/parsing/hyphens-computed.html.ini
@@ -8,3 +8,12 @@
[Property hyphens value 'auto' computes to 'auto']
expected: FAIL
+ [Property hyphens value 'auto']
+ expected: FAIL
+
+ [Property hyphens value 'manual']
+ expected: FAIL
+
+ [Property hyphens value 'none']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/parsing/line-break-computed.html.ini b/tests/wpt/metadata/css/css-text/parsing/line-break-computed.html.ini
index 9bccc62d419..e8f87f9aa3d 100644
--- a/tests/wpt/metadata/css/css-text/parsing/line-break-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text/parsing/line-break-computed.html.ini
@@ -14,3 +14,18 @@
[Property line-break value 'auto' computes to 'auto']
expected: FAIL
+ [Property line-break value 'anywhere']
+ expected: FAIL
+
+ [Property line-break value 'strict']
+ expected: FAIL
+
+ [Property line-break value 'auto']
+ expected: FAIL
+
+ [Property line-break value 'loose']
+ expected: FAIL
+
+ [Property line-break value 'normal']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/parsing/tab-size-computed.html.ini b/tests/wpt/metadata/css/css-text/parsing/tab-size-computed.html.ini
index 01c3c576866..1e48f3528d6 100644
--- a/tests/wpt/metadata/css/css-text/parsing/tab-size-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text/parsing/tab-size-computed.html.ini
@@ -23,3 +23,27 @@
[Property tab-size value 'calc(10px + 0.5em)' computes to '30px']
expected: FAIL
+ [Property tab-size value '2.5']
+ expected: FAIL
+
+ [Property tab-size value '4']
+ expected: FAIL
+
+ [Property tab-size value 'calc(10px + 0.5em)']
+ expected: FAIL
+
+ [Property tab-size value '0px']
+ expected: FAIL
+
+ [Property tab-size value '16']
+ expected: FAIL
+
+ [Property tab-size value '10px']
+ expected: FAIL
+
+ [Property tab-size value 'calc(10px - 0.5em)']
+ expected: FAIL
+
+ [Property tab-size value '0']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/parsing/text-align-computed.html.ini b/tests/wpt/metadata/css/css-text/parsing/text-align-computed.html.ini
index 368a34f8ac1..946a9e60638 100644
--- a/tests/wpt/metadata/css/css-text/parsing/text-align-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text/parsing/text-align-computed.html.ini
@@ -2,3 +2,6 @@
[Property text-align value 'match-parent' computes to 'center']
expected: FAIL
+ [Property text-align value 'match-parent']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/parsing/text-align-last-computed.html.ini b/tests/wpt/metadata/css/css-text/parsing/text-align-last-computed.html.ini
index 96f920e032c..cc223d31d55 100644
--- a/tests/wpt/metadata/css/css-text/parsing/text-align-last-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text/parsing/text-align-last-computed.html.ini
@@ -23,3 +23,27 @@
[Property text-align-last value 'left' computes to 'left']
expected: FAIL
+ [Property text-align-last value 'end']
+ expected: FAIL
+
+ [Property text-align-last value 'center']
+ expected: FAIL
+
+ [Property text-align-last value 'auto']
+ expected: FAIL
+
+ [Property text-align-last value 'start']
+ expected: FAIL
+
+ [Property text-align-last value 'right']
+ expected: FAIL
+
+ [Property text-align-last value 'left']
+ expected: FAIL
+
+ [Property text-align-last value 'match-parent']
+ expected: FAIL
+
+ [Property text-align-last value 'justify']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/parsing/text-indent-computed.html.ini b/tests/wpt/metadata/css/css-text/parsing/text-indent-computed.html.ini
index acb1aea64c9..f55b4b0e6fc 100644
--- a/tests/wpt/metadata/css/css-text/parsing/text-indent-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text/parsing/text-indent-computed.html.ini
@@ -11,3 +11,15 @@
[Property text-indent value 'calc(50% + 60px) hanging each-line' computes to 'calc(50% + 60px) hanging each-line']
expected: FAIL
+ [Property text-indent value 'each-line hanging calc(10px + 0.5em)']
+ expected: FAIL
+
+ [Property text-indent value '20% each-line']
+ expected: FAIL
+
+ [Property text-indent value 'calc(50% + 60px) hanging each-line']
+ expected: FAIL
+
+ [Property text-indent value '10px hanging']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/parsing/text-justify-computed.html.ini b/tests/wpt/metadata/css/css-text/parsing/text-justify-computed.html.ini
index d7b982ed618..ae897a3a05a 100644
--- a/tests/wpt/metadata/css/css-text/parsing/text-justify-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text/parsing/text-justify-computed.html.ini
@@ -2,3 +2,6 @@
[Property text-justify value 'inter-character' computes to 'inter-character']
expected: FAIL
+ [Property text-justify value 'inter-character']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/parsing/white-space-computed.html.ini b/tests/wpt/metadata/css/css-text/parsing/white-space-computed.html.ini
index dbc4390d8bf..20a75f681bf 100644
--- a/tests/wpt/metadata/css/css-text/parsing/white-space-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text/parsing/white-space-computed.html.ini
@@ -2,3 +2,6 @@
[Property white-space value 'break-spaces' computes to 'break-spaces']
expected: FAIL
+ [Property white-space value 'break-spaces']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/parsing/word-boundary-detection-computed.html.ini b/tests/wpt/metadata/css/css-text/parsing/word-boundary-detection-computed.html.ini
index f22c4186d50..59898e48af0 100644
--- a/tests/wpt/metadata/css/css-text/parsing/word-boundary-detection-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text/parsing/word-boundary-detection-computed.html.ini
@@ -5,3 +5,9 @@
[Property word-boundary-detection value 'manual' computes to 'manual']
expected: FAIL
+ [Property word-boundary-detection value 'manual']
+ expected: FAIL
+
+ [Property word-boundary-detection value 'normal']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/parsing/word-boundary-expansion-computed.html.ini b/tests/wpt/metadata/css/css-text/parsing/word-boundary-expansion-computed.html.ini
index f2dea9cf7a2..1ec2a730d65 100644
--- a/tests/wpt/metadata/css/css-text/parsing/word-boundary-expansion-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text/parsing/word-boundary-expansion-computed.html.ini
@@ -8,3 +8,12 @@
[Property word-boundary-expansion value 'none' computes to 'none']
expected: FAIL
+ [Property word-boundary-expansion value 'none']
+ expected: FAIL
+
+ [Property word-boundary-expansion value 'ideographic-space']
+ expected: FAIL
+
+ [Property word-boundary-expansion value 'space']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/parsing/word-break-computed.html.ini b/tests/wpt/metadata/css/css-text/parsing/word-break-computed.html.ini
index dc7a2c8a123..3de00d7d68a 100644
--- a/tests/wpt/metadata/css/css-text/parsing/word-break-computed.html.ini
+++ b/tests/wpt/metadata/css/css-text/parsing/word-break-computed.html.ini
@@ -2,3 +2,6 @@
[Property word-break value 'break-word' computes to 'break-word']
expected: FAIL
+ [Property word-break value 'break-word']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-001.html.ini b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-001.html.ini
deleted file mode 100644
index ded993140eb..00000000000
--- a/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[text-transform-full-size-kana-001.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-002.html.ini b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-002.html.ini
deleted file mode 100644
index 047905d059b..00000000000
--- a/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-002.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[text-transform-full-size-kana-002.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-003.html.ini b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-003.html.ini
deleted file mode 100644
index 7e9e3e15a50..00000000000
--- a/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-003.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[text-transform-full-size-kana-003.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-004.html.ini b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-004.html.ini
deleted file mode 100644
index f90c86d0e3d..00000000000
--- a/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-004.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[text-transform-full-size-kana-004.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini
deleted file mode 100644
index 240d1283c3a..00000000000
--- a/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[trailing-ideographic-space-004.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-007.html.ini b/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-007.html.ini
new file mode 100644
index 00000000000..192f64b0826
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-break/word-break-break-all-007.html.ini
@@ -0,0 +1,2 @@
+[word-break-break-all-007.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-break/word-break-keep-all-006.html.ini b/tests/wpt/metadata/css/css-text/word-break/word-break-keep-all-006.html.ini
new file mode 100644
index 00000000000..3a512b4a124
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-break/word-break-keep-all-006.html.ini
@@ -0,0 +1,2 @@
+[word-break-keep-all-006.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini
index af79ecd5f12..03f2f3fe9d1 100644
--- a/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini
@@ -1,5 +1,5 @@
[perspective-interpolation.html]
- expected: TIMEOUT
+ expected: CRASH
[ perspective interpolation]
expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transforms/parsing/perspective-origin-computed.html.ini b/tests/wpt/metadata/css/css-transforms/parsing/perspective-origin-computed.html.ini
index 60c6c1751e9..5266055ce8b 100644
--- a/tests/wpt/metadata/css/css-transforms/parsing/perspective-origin-computed.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/parsing/perspective-origin-computed.html.ini
@@ -62,3 +62,66 @@
[Property perspective-origin value 'center center' computes to '100px 150px']
expected: FAIL
+ [Property perspective-origin value 'left']
+ expected: FAIL
+
+ [Property perspective-origin value 'right 40%']
+ expected: FAIL
+
+ [Property perspective-origin value 'center center']
+ expected: FAIL
+
+ [Property perspective-origin value '40px top']
+ expected: FAIL
+
+ [Property perspective-origin value 'bottom right']
+ expected: FAIL
+
+ [Property perspective-origin value '20% 30px']
+ expected: FAIL
+
+ [Property perspective-origin value 'center 50px']
+ expected: FAIL
+
+ [Property perspective-origin value '10%']
+ expected: FAIL
+
+ [Property perspective-origin value 'right calc(10px - 0.5em) top calc(10px - 0.5em)']
+ expected: FAIL
+
+ [Property perspective-origin value 'left 10px']
+ expected: FAIL
+
+ [Property perspective-origin value 'center bottom']
+ expected: FAIL
+
+ [Property perspective-origin value 'center left']
+ expected: FAIL
+
+ [Property perspective-origin value 'top']
+ expected: FAIL
+
+ [Property perspective-origin value '10% center']
+ expected: FAIL
+
+ [Property perspective-origin value 'left center']
+ expected: FAIL
+
+ [Property perspective-origin value 'center']
+ expected: FAIL
+
+ [Property perspective-origin value 'bottom 10% right 20%']
+ expected: FAIL
+
+ [Property perspective-origin value 'right 30% top -60px']
+ expected: FAIL
+
+ [Property perspective-origin value 'right 20px bottom 30px']
+ expected: FAIL
+
+ [Property perspective-origin value 'left bottom']
+ expected: FAIL
+
+ [Property perspective-origin value '30px center']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/parsing/transform-box-computed.html.ini b/tests/wpt/metadata/css/css-transforms/parsing/transform-box-computed.html.ini
index 3cb6576be8c..13a32f78c49 100644
--- a/tests/wpt/metadata/css/css-transforms/parsing/transform-box-computed.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/parsing/transform-box-computed.html.ini
@@ -14,3 +14,18 @@
[Property transform-box value 'fill-box' computes to 'fill-box']
expected: FAIL
+ [Property transform-box value 'border-box']
+ expected: FAIL
+
+ [Property transform-box value 'content-box']
+ expected: FAIL
+
+ [Property transform-box value 'view-box']
+ expected: FAIL
+
+ [Property transform-box value 'stroke-box']
+ expected: FAIL
+
+ [Property transform-box value 'fill-box']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/parsing/transform-origin-computed.html.ini b/tests/wpt/metadata/css/css-transforms/parsing/transform-origin-computed.html.ini
index 04aff3c9216..a214ae306a2 100644
--- a/tests/wpt/metadata/css/css-transforms/parsing/transform-origin-computed.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/parsing/transform-origin-computed.html.ini
@@ -65,3 +65,69 @@
[Property transform-origin value 'left' computes to '0px 150px']
expected: FAIL
+ [Property transform-origin value 'left']
+ expected: FAIL
+
+ [Property transform-origin value 'center 50px']
+ expected: FAIL
+
+ [Property transform-origin value 'center top']
+ expected: FAIL
+
+ [Property transform-origin value 'left bottom']
+ expected: FAIL
+
+ [Property transform-origin value '20% 30px']
+ expected: FAIL
+
+ [Property transform-origin value '-1px bottom 5px']
+ expected: FAIL
+
+ [Property transform-origin value '10% center']
+ expected: FAIL
+
+ [Property transform-origin value 'left 10px']
+ expected: FAIL
+
+ [Property transform-origin value 'center center']
+ expected: FAIL
+
+ [Property transform-origin value '10%']
+ expected: FAIL
+
+ [Property transform-origin value 'center left']
+ expected: FAIL
+
+ [Property transform-origin value '30px center']
+ expected: FAIL
+
+ [Property transform-origin value '40px top']
+ expected: FAIL
+
+ [Property transform-origin value 'bottom right']
+ expected: FAIL
+
+ [Property transform-origin value 'top']
+ expected: FAIL
+
+ [Property transform-origin value 'center']
+ expected: FAIL
+
+ [Property transform-origin value 'calc(-100% + 10px - 0.5em) calc(10px - 0.5em) calc(10px - 0.5em)']
+ expected: FAIL
+
+ [Property transform-origin value 'right 40%']
+ expected: FAIL
+
+ [Property transform-origin value 'left center 6px']
+ expected: FAIL
+
+ [Property transform-origin value 'center bottom']
+ expected: FAIL
+
+ [Property transform-origin value 'left center']
+ expected: FAIL
+
+ [Property transform-origin value 'right bottom 7px']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini b/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
index 70a00a101f6..e35a452a186 100644
--- a/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/no-transition-from-ua-to-blocking-stylesheet.html.ini
@@ -1,2 +1,2 @@
[no-transition-from-ua-to-blocking-stylesheet.html]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/css/css-transitions/parsing/transition-computed.html.ini b/tests/wpt/metadata/css/css-transitions/parsing/transition-computed.html.ini
index 6a6c7faf72e..1d6a584e053 100644
--- a/tests/wpt/metadata/css/css-transitions/parsing/transition-computed.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/parsing/transition-computed.html.ini
@@ -20,3 +20,24 @@
[Property transition value '1s -3s cubic-bezier(0, -2, 1, 3) top' computes to 'top 1s cubic-bezier(0, -2, 1, 3) -3s']
expected: FAIL
+ [Property transition value '1s -3s']
+ expected: FAIL
+
+ [Property transition value '1s -3s, cubic-bezier(0, -2, 1, 3) top']
+ expected: FAIL
+
+ [Property transition value 'none']
+ expected: FAIL
+
+ [Property transition value '1s']
+ expected: FAIL
+
+ [Property transition value 'cubic-bezier(0, -2, 1, 3)']
+ expected: FAIL
+
+ [Property transition value '1s -3s cubic-bezier(0, -2, 1, 3) top']
+ expected: FAIL
+
+ [Property transition value 'top']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transitions/parsing/transition-timing-function-computed.html.ini b/tests/wpt/metadata/css/css-transitions/parsing/transition-timing-function-computed.html.ini
index 5a41ca5ad57..a464ab197c6 100644
--- a/tests/wpt/metadata/css/css-transitions/parsing/transition-timing-function-computed.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/parsing/transition-timing-function-computed.html.ini
@@ -11,3 +11,15 @@
[Property transition-timing-function value 'steps(2, jump-both)' computes to 'steps(2, jump-both)']
expected: FAIL
+ [Property transition-timing-function value 'steps(2, jump-both)']
+ expected: FAIL
+
+ [Property transition-timing-function value 'steps(2, jump-end)']
+ expected: FAIL
+
+ [Property transition-timing-function value 'steps(2, jump-start)']
+ expected: FAIL
+
+ [Property transition-timing-function value 'steps(2, jump-none)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-ui/parsing/caret-color-computed.html.ini b/tests/wpt/metadata/css/css-ui/parsing/caret-color-computed.html.ini
index 9103c108a5f..c217a44d76c 100644
--- a/tests/wpt/metadata/css/css-ui/parsing/caret-color-computed.html.ini
+++ b/tests/wpt/metadata/css/css-ui/parsing/caret-color-computed.html.ini
@@ -8,3 +8,12 @@
[Property caret-color value 'red' computes to 'rgb(255, 0, 0)']
expected: FAIL
+ [Property caret-color value 'currentColor']
+ expected: FAIL
+
+ [Property caret-color value 'red']
+ expected: FAIL
+
+ [Property caret-color value 'auto']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-ui/parsing/resize-computed.html.ini b/tests/wpt/metadata/css/css-ui/parsing/resize-computed.html.ini
index 04988af8df2..16a68e628d6 100644
--- a/tests/wpt/metadata/css/css-ui/parsing/resize-computed.html.ini
+++ b/tests/wpt/metadata/css/css-ui/parsing/resize-computed.html.ini
@@ -11,3 +11,15 @@
[Property resize value 'none' computes to 'none']
expected: FAIL
+ [Property resize value 'none']
+ expected: FAIL
+
+ [Property resize value 'horizontal']
+ expected: FAIL
+
+ [Property resize value 'vertical']
+ expected: FAIL
+
+ [Property resize value 'both']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-ui/parsing/user-select-computed.html.ini b/tests/wpt/metadata/css/css-ui/parsing/user-select-computed.html.ini
index c6b1f4b60de..a0e53a1f7ba 100644
--- a/tests/wpt/metadata/css/css-ui/parsing/user-select-computed.html.ini
+++ b/tests/wpt/metadata/css/css-ui/parsing/user-select-computed.html.ini
@@ -14,3 +14,18 @@
[Property user-select value 'all' computes to 'all']
expected: FAIL
+ [Property user-select value 'all']
+ expected: FAIL
+
+ [Property user-select value 'text']
+ expected: FAIL
+
+ [Property user-select value 'none']
+ expected: FAIL
+
+ [Property user-select value 'auto']
+ expected: FAIL
+
+ [Property user-select value 'contain']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-values/clamp-length-computed.html.ini b/tests/wpt/metadata/css/css-values/clamp-length-computed.html.ini
index 1e17130fab5..35bc011d78a 100644
--- a/tests/wpt/metadata/css/css-values/clamp-length-computed.html.ini
+++ b/tests/wpt/metadata/css/css-values/clamp-length-computed.html.ini
@@ -11,3 +11,15 @@
[Property letter-spacing value 'clamp(10px, 20px, 30px)' computes to '20px']
expected: FAIL
+ [Property letter-spacing value 'clamp(10px, 20px, 30px)']
+ expected: FAIL
+
+ [Property letter-spacing value 'clamp(10px, 35px, 30px)']
+ expected: FAIL
+
+ [Property letter-spacing value 'clamp(30px, 100px, 20px)']
+ expected: FAIL
+
+ [Property letter-spacing value 'clamp(10px, 5px, 30px)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-values/minmax-angle-computed.html.ini b/tests/wpt/metadata/css/css-values/minmax-angle-computed.html.ini
index 2ccfc9a5c87..3a9e368ccdb 100644
--- a/tests/wpt/metadata/css/css-values/minmax-angle-computed.html.ini
+++ b/tests/wpt/metadata/css/css-values/minmax-angle-computed.html.ini
@@ -95,3 +95,99 @@
[Property transform value 'rotate(min(1turn, 2turn))' computes to 'rotate(360deg)']
expected: FAIL
+ [Property transform value 'rotate(max(1rad))']
+ expected: FAIL
+
+ [Property transform value 'rotate(max(1deg, 2deg))']
+ expected: FAIL
+
+ [Property transform value 'rotate(max(1grad))']
+ expected: FAIL
+
+ [Property transform value 'rotate(min(1.57rad, 95deg))']
+ expected: FAIL
+
+ [Property transform value 'rotate(max(1rad, 2rad))']
+ expected: FAIL
+
+ [Property transform value 'rotate(min(1rad))']
+ expected: FAIL
+
+ [Property transform value 'rotate(calc(min(90deg, 1.58rad) + max(0.25turn, 99grad)))']
+ expected: FAIL
+
+ [Property transform value 'rotate(calc(max(90deg, 1.56rad) / 2)']
+ expected: FAIL
+
+ [Property transform value 'rotate(calc(min(90deg, 1.58rad) - max(0.25turn, 99grad)))']
+ expected: FAIL
+
+ [Property transform value 'rotate(min(1deg, 2deg))']
+ expected: FAIL
+
+ [Property transform value 'rotate(calc(min(90deg, 1.58rad) + 0.25turn))']
+ expected: FAIL
+
+ [Property transform value 'rotate(min(1rad, 2rad))']
+ expected: FAIL
+
+ [Property transform value 'rotate(max(1turn))']
+ expected: FAIL
+
+ [Property transform value 'rotate(min(1grad))']
+ expected: FAIL
+
+ [Property transform value 'rotate(min(1turn, 2turn))']
+ expected: FAIL
+
+ [Property transform value 'rotate(max(1grad, 2grad))']
+ expected: FAIL
+
+ [Property transform value 'rotate(max(1deg))']
+ expected: FAIL
+
+ [Property transform value 'rotate(calc(min(90deg, 1.58rad) - 0.125turn))']
+ expected: FAIL
+
+ [Property transform value 'rotate(max(91deg, 0.25turn))']
+ expected: FAIL
+
+ [Property transform value 'rotate(min(270deg, max(0.25turn, 3.14rad)))']
+ expected: FAIL
+
+ [Property transform value 'rotate(max(0.25turn, min(270deg, 3.14rad)))']
+ expected: FAIL
+
+ [Property transform value 'rotate(calc(min(90deg, 1.58rad) / 2)']
+ expected: FAIL
+
+ [Property transform value 'rotate(max(1turn, 2turn))']
+ expected: FAIL
+
+ [Property transform value 'rotate(calc(max(90deg, 1.56rad) + 0.25turn))']
+ expected: FAIL
+
+ [Property transform value 'rotate(calc(max(90deg, 1.56rad) - 0.125turn))']
+ expected: FAIL
+
+ [Property transform value 'rotate(min(1deg))']
+ expected: FAIL
+
+ [Property transform value 'rotate(max(1.58rad, 90deg))']
+ expected: FAIL
+
+ [Property transform value 'rotate(min(1grad, 2grad))']
+ expected: FAIL
+
+ [Property transform value 'rotate(min(1turn))']
+ expected: FAIL
+
+ [Property transform value 'rotate(calc(min(90deg, 1.58rad) * 2)']
+ expected: FAIL
+
+ [Property transform value 'rotate(min(90deg, 0.26turn))']
+ expected: FAIL
+
+ [Property transform value 'rotate(calc(max(90deg, 1.56rad) * 2)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-values/minmax-integer-computed.html.ini b/tests/wpt/metadata/css/css-values/minmax-integer-computed.html.ini
index 0b6cc5fc550..8c5176025bb 100644
--- a/tests/wpt/metadata/css/css-values/minmax-integer-computed.html.ini
+++ b/tests/wpt/metadata/css/css-values/minmax-integer-computed.html.ini
@@ -29,3 +29,33 @@
[Property z-index value 'calc(min(0.3, 0.6) * 2)' computes to '1']
expected: FAIL
+ [Property z-index value 'max(0.4)']
+ expected: FAIL
+
+ [Property z-index value 'min(1.1, max(0.4, 0.6))']
+ expected: FAIL
+
+ [Property z-index value 'min(1)']
+ expected: FAIL
+
+ [Property z-index value 'calc(max(0.3, 0.6) / 2)']
+ expected: FAIL
+
+ [Property z-index value 'min(0.4)']
+ expected: FAIL
+
+ [Property z-index value 'max(1)']
+ expected: FAIL
+
+ [Property z-index value 'max(0.6)']
+ expected: FAIL
+
+ [Property z-index value 'calc(min(0.3, 0.6) * 2)']
+ expected: FAIL
+
+ [Property z-index value 'max(0.3, min(1.1, 0.4))']
+ expected: FAIL
+
+ [Property z-index value 'min(0.6)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-values/minmax-length-computed.html.ini b/tests/wpt/metadata/css/css-values/minmax-length-computed.html.ini
index 0955fb5aa7a..0a95b909192 100644
--- a/tests/wpt/metadata/css/css-values/minmax-length-computed.html.ini
+++ b/tests/wpt/metadata/css/css-values/minmax-length-computed.html.ini
@@ -239,3 +239,243 @@
[Property letter-spacing value 'calc(min(1em, 21px) - max(0.9em, 20px))' computes to 'normal']
expected: FAIL
+ [Property letter-spacing value 'min(1vmax)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1ex, 2ex)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(15px, min(25px, 1em))']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1em, 2em)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1px, 2px)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1pc)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(15px, 1em)' fontSize=10px]
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1em)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1px)']
+ expected: FAIL
+
+ [Property letter-spacing value 'calc(max(1em, 19px) + 10px)']
+ expected: FAIL
+
+ [Property letter-spacing value 'calc(min(1em, 21px) * 2']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1pt)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1vmax, 2vmax)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1em)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(25px, max(15px, 1em))']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1pt, 2pt)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1mm, 2mm)']
+ expected: FAIL
+
+ [Property letter-spacing value 'calc(min(1em, 21px) + max(0.9em, 20px))']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1pt, 2pt)']
+ expected: FAIL
+
+ [Property letter-spacing value 'calc(min(1em, 21px) - max(0.9em, 20px))']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1vw)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1rem)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1rem)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(15px, 1em)']
+ expected: FAIL
+
+ [Property letter-spacing value 'calc(max(1em, 19px) / 2']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1vmin)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1pc, 2pc)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1pc, 2pc)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1ex)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1mm)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1in)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1pt)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(95px, 1in)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1vmax)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1in)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1ex)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1in, 2in)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1ch, 2ch)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(15px, 1em)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(25px, 1em)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1vmin)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1vh, 2vh)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1mm)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1vmin, 2vmin)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1vh, 2vh)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(15px, 2em)' fontSize=10px]
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1vmax, 2vmax)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1mm, 2mm)']
+ expected: FAIL
+
+ [Property letter-spacing value 'calc(min(1em, 21px) - 10px)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1rem, 2rem)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1Q, 2Q)']
+ expected: FAIL
+
+ [Property letter-spacing value 'calc(min(1em, 21px) + 10px)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1ex, 2ex)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1cm)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1Q, 2Q)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1pc)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1cm)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1cm, 2cm)']
+ expected: FAIL
+
+ [Property letter-spacing value 'calc(max(1em, 19px) * 2']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1ch)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1vw, 2vw)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1px, 2px)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(95px, 1in)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1rem, 2rem)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1vh)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1cm, 2cm)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1px)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1vw)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1vw, 2vw)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1Q)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1in, 2in)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1ch, 2ch)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1ch)']
+ expected: FAIL
+
+ [Property letter-spacing value 'calc(min(1em, 21px) / 2']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(25px, 1em)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1Q)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1vmin, 2vmin)']
+ expected: FAIL
+
+ [Property letter-spacing value 'min(1em, 2em)']
+ expected: FAIL
+
+ [Property letter-spacing value 'max(1vh)']
+ expected: FAIL
+
+ [Property letter-spacing value 'calc(max(1em, 19px) - 10px)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-values/minmax-length-percent-computed.html.ini b/tests/wpt/metadata/css/css-values/minmax-length-percent-computed.html.ini
index 2c3c8100418..5534ae5c023 100644
--- a/tests/wpt/metadata/css/css-values/minmax-length-percent-computed.html.ini
+++ b/tests/wpt/metadata/css/css-values/minmax-length-percent-computed.html.ini
@@ -149,3 +149,153 @@
[Property margin-left value 'calc(max(1em, 15%) + 10px)' computes to '70px']
expected: FAIL
+ [Property margin-left value 'calc(min(1.5em, 10%) - max(1em, 15%))']
+ expected: FAIL
+
+ [Property margin-left value 'min(1em + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'calc(min(1.5em, 10%) + 10px)']
+ expected: FAIL
+
+ [Property margin-left value 'min(1Q + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'calc(min(1.5em, 10%) - 10px)']
+ expected: FAIL
+
+ [Property margin-left value 'calc(min(1.5em, 10%) * 2)']
+ expected: FAIL
+
+ [Property margin-left value 'calc(max(1em, 15%) * 2)']
+ expected: FAIL
+
+ [Property margin-left value 'max(1Q + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'calc(max(1em, 15%) - 10px)']
+ expected: FAIL
+
+ [Property margin-left value 'min(30px + 10%, 60px + 5%)']
+ expected: FAIL
+
+ [Property margin-left value 'min(1vmax + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(1px + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(1vw + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'min(1rem + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(1pc + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'min(1vmin + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(1cm + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'min(1cm + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(1em, 10%)']
+ expected: FAIL
+
+ [Property margin-left value 'min(1px + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(20px, 10%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(1in + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'min(20px, 10%)' width=100px]
+ expected: FAIL
+
+ [Property margin-left value 'min(1pc + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(1vmax + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'calc(min(1.5em, 10%) / 2)']
+ expected: FAIL
+
+ [Property margin-left value 'min(1em, 10%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(1vmin + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(1pt + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'min(1ex + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(1vh + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(2em + 10%, 1em + 20%)']
+ expected: FAIL
+
+ [Property margin-left value 'min(1ch + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(1mm + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'calc(max(1em, 15%) + 10px)']
+ expected: FAIL
+
+ [Property margin-left value 'min(1em, 10%)' width=100px]
+ expected: FAIL
+
+ [Property margin-left value 'min(20px, 10%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(1em, 10%)' width=100px]
+ expected: FAIL
+
+ [Property margin-left value 'max(1rem + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'min(1in + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'calc(min(1.5em, 10%) + max(1em, 15%))']
+ expected: FAIL
+
+ [Property margin-left value 'max(20px, 10%)' width=100px]
+ expected: FAIL
+
+ [Property margin-left value 'max(1ex + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'min(1mm + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'min(1vh + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'min(1pt + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(1em + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(1ch + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'min(1vw + 1%)']
+ expected: FAIL
+
+ [Property margin-left value 'calc(max(1em, 15%) / 2)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-values/minmax-number-computed.html.ini b/tests/wpt/metadata/css/css-values/minmax-number-computed.html.ini
index da5d7c62959..7293d0a802a 100644
--- a/tests/wpt/metadata/css/css-values/minmax-number-computed.html.ini
+++ b/tests/wpt/metadata/css/css-values/minmax-number-computed.html.ini
@@ -41,3 +41,45 @@
[Property opacity value 'min(1)' computes to '1']
expected: FAIL
+ [Property opacity value 'calc(min(0.1, 0.2) + 0.05)']
+ expected: FAIL
+
+ [Property opacity value 'min(0.2, max(0.1, 0.15))']
+ expected: FAIL
+
+ [Property opacity value 'calc(max(0.1, 0.2) + 0.05)']
+ expected: FAIL
+
+ [Property opacity value 'max(1)']
+ expected: FAIL
+
+ [Property opacity value 'calc(min(0.1, 0.2) / 2)']
+ expected: FAIL
+
+ [Property opacity value 'calc(min(0.1, 0.2) * 2)']
+ expected: FAIL
+
+ [Property opacity value 'min(1)']
+ expected: FAIL
+
+ [Property opacity value 'calc(min(0.1, 0.2) + max(0.1, 0.05))']
+ expected: FAIL
+
+ [Property opacity value 'calc(max(0.1, 0.2) - 0.05)']
+ expected: FAIL
+
+ [Property opacity value 'calc(max(0.1, 0.2) / 2)']
+ expected: FAIL
+
+ [Property opacity value 'calc(min(0.1, 0.2) - max(0.1, 0.05))']
+ expected: FAIL
+
+ [Property opacity value 'calc(min(0.1, 0.2) - 0.05)']
+ expected: FAIL
+
+ [Property opacity value 'max(0.1, min(0.2, 0.15))']
+ expected: FAIL
+
+ [Property opacity value 'calc(max(0.1, 0.2) * 2)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-values/minmax-percentage-computed.html.ini b/tests/wpt/metadata/css/css-values/minmax-percentage-computed.html.ini
index fcd372dd135..320e92be7f9 100644
--- a/tests/wpt/metadata/css/css-values/minmax-percentage-computed.html.ini
+++ b/tests/wpt/metadata/css/css-values/minmax-percentage-computed.html.ini
@@ -41,3 +41,45 @@
[Property margin-left value 'calc(min(10%, 20%) - max(10%, 5%))' computes to '0px']
expected: FAIL
+ [Property margin-left value 'calc(min(10%, 20%) - max(10%, 5%))']
+ expected: FAIL
+
+ [Property margin-left value 'calc(max(10%, 20%) * 2)']
+ expected: FAIL
+
+ [Property margin-left value 'calc(min(10%, 20%) * 2)']
+ expected: FAIL
+
+ [Property margin-left value 'min(20%, max(10%, 15%))']
+ expected: FAIL
+
+ [Property margin-left value 'max(10%, min(20%, 15%))']
+ expected: FAIL
+
+ [Property margin-left value 'calc(max(10%, 20%) / 2)']
+ expected: FAIL
+
+ [Property margin-left value 'min(1%)']
+ expected: FAIL
+
+ [Property margin-left value 'calc(max(10%, 20%) - 5%)']
+ expected: FAIL
+
+ [Property margin-left value 'calc(min(10%, 20%) / 2)']
+ expected: FAIL
+
+ [Property margin-left value 'calc(max(10%, 20%) + 5%)']
+ expected: FAIL
+
+ [Property margin-left value 'calc(min(10%, 20%) + 5%)']
+ expected: FAIL
+
+ [Property margin-left value 'max(1%)']
+ expected: FAIL
+
+ [Property margin-left value 'calc(min(10%, 20%) - 5%)']
+ expected: FAIL
+
+ [Property margin-left value 'calc(min(10%, 20%) + max(10%, 5%))']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-values/minmax-time-computed.html.ini b/tests/wpt/metadata/css/css-values/minmax-time-computed.html.ini
index 999eafddfd3..0e9738b9fad 100644
--- a/tests/wpt/metadata/css/css-values/minmax-time-computed.html.ini
+++ b/tests/wpt/metadata/css/css-values/minmax-time-computed.html.ini
@@ -65,3 +65,69 @@
[Property transition-delay value 'calc(min(0.5s, 600ms) - max(500ms, 0.4s))' computes to '0s']
expected: FAIL
+ [Property transition-delay value 'max(0.9s, 1000ms)']
+ expected: FAIL
+
+ [Property transition-delay value 'min(1s, 2s)']
+ expected: FAIL
+
+ [Property transition-delay value 'calc(max(0.5s, 400ms) + 500ms)']
+ expected: FAIL
+
+ [Property transition-delay value 'calc(min(0.5s, 600ms) * 2)']
+ expected: FAIL
+
+ [Property transition-delay value 'calc(max(0.5s, 400ms) - 500ms)']
+ expected: FAIL
+
+ [Property transition-delay value 'calc(min(0.5s, 600ms) - 500ms)']
+ expected: FAIL
+
+ [Property transition-delay value 'max(1s, 2s)']
+ expected: FAIL
+
+ [Property transition-delay value 'min(1ms)']
+ expected: FAIL
+
+ [Property transition-delay value 'max(1s)']
+ expected: FAIL
+
+ [Property transition-delay value 'max(1ms)']
+ expected: FAIL
+
+ [Property transition-delay value 'max(1ms, 2ms)']
+ expected: FAIL
+
+ [Property transition-delay value 'min(2s, max(1s, 1500ms))']
+ expected: FAIL
+
+ [Property transition-delay value 'min(1s)']
+ expected: FAIL
+
+ [Property transition-delay value 'calc(max(0.5s, 400ms) / 2)']
+ expected: FAIL
+
+ [Property transition-delay value 'max(1000ms, min(2000ms, 1.5s))']
+ expected: FAIL
+
+ [Property transition-delay value 'calc(max(0.5s, 400ms) * 2)']
+ expected: FAIL
+
+ [Property transition-delay value 'min(1ms, 2ms)']
+ expected: FAIL
+
+ [Property transition-delay value 'calc(min(0.5s, 600ms) + max(500ms, 0.4s))']
+ expected: FAIL
+
+ [Property transition-delay value 'calc(min(0.5s, 600ms) - max(500ms, 0.4s))']
+ expected: FAIL
+
+ [Property transition-delay value 'min(1s, 1100ms)']
+ expected: FAIL
+
+ [Property transition-delay value 'calc(min(0.5s, 600ms) + 500ms)']
+ expected: FAIL
+
+ [Property transition-delay value 'calc(min(0.5s, 600ms) / 2)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/parsing/scroll-behavior-computed.html.ini b/tests/wpt/metadata/css/cssom-view/parsing/scroll-behavior-computed.html.ini
index d5bad2f6490..27dff89c5ad 100644
--- a/tests/wpt/metadata/css/cssom-view/parsing/scroll-behavior-computed.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/parsing/scroll-behavior-computed.html.ini
@@ -5,3 +5,9 @@
[Property scroll-behavior value 'auto' computes to 'auto']
expected: FAIL
+ [Property scroll-behavior value 'smooth']
+ expected: FAIL
+
+ [Property scroll-behavior value 'auto']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom/border-shorthand-serialization.html.ini b/tests/wpt/metadata/css/cssom/border-shorthand-serialization.html.ini
new file mode 100644
index 00000000000..5e4163cc85d
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/border-shorthand-serialization.html.ini
@@ -0,0 +1,4 @@
+[border-shorthand-serialization.html]
+ [Declaration with border longhands and border-image is not serialized to a border shorthand declaration.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-computed.html.ini b/tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-computed.html.ini
index 668b41b7a22..5f3732dabbb 100644
--- a/tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-computed.html.ini
+++ b/tests/wpt/metadata/css/filter-effects/parsing/backdrop-filter-computed.html.ini
@@ -89,3 +89,87 @@
[Property backdrop-filter value 'brightness()' computes to 'brightness(1)']
expected: FAIL
+ [Property backdrop-filter value 'invert()']
+ expected: FAIL
+
+ [Property backdrop-filter value 'sepia()']
+ expected: FAIL
+
+ [Property backdrop-filter value 'opacity(100%)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'sepia(0)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'sepia(100%)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'brightness(0)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'grayscale(50%)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'opacity(0)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'drop-shadow(1px 2px)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'hue-rotate()']
+ expected: FAIL
+
+ [Property backdrop-filter value 'invert(0)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'contrast()']
+ expected: FAIL
+
+ [Property backdrop-filter value 'opacity()']
+ expected: FAIL
+
+ [Property backdrop-filter value 'blur(100px)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'saturate()']
+ expected: FAIL
+
+ [Property backdrop-filter value 'contrast(0)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'hue-rotate(90deg)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'saturate(300%)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'blur(10px) url("https://www.example.com/picture.svg#f") contrast(20) brightness(30)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'brightness(300%)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'drop-shadow(rgb(4, 5, 6) 1px 2px 0px)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'invert(100%)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'saturate(0)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'contrast(300%)']
+ expected: FAIL
+
+ [Property backdrop-filter value 'blur()']
+ expected: FAIL
+
+ [Property backdrop-filter value 'none']
+ expected: FAIL
+
+ [Property backdrop-filter value 'grayscale()']
+ expected: FAIL
+
+ [Property backdrop-filter value 'brightness()']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/filter-effects/parsing/color-interpolation-filters-computed.html.ini b/tests/wpt/metadata/css/filter-effects/parsing/color-interpolation-filters-computed.html.ini
index 920feb5800d..196307a049d 100644
--- a/tests/wpt/metadata/css/filter-effects/parsing/color-interpolation-filters-computed.html.ini
+++ b/tests/wpt/metadata/css/filter-effects/parsing/color-interpolation-filters-computed.html.ini
@@ -8,3 +8,12 @@
[Property color-interpolation-filters value 'srgb' computes to 'srgb']
expected: FAIL
+ [Property color-interpolation-filters value 'srgb']
+ expected: FAIL
+
+ [Property color-interpolation-filters value 'auto']
+ expected: FAIL
+
+ [Property color-interpolation-filters value 'linearrgb']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/filter-effects/parsing/filter-computed.html.ini b/tests/wpt/metadata/css/filter-effects/parsing/filter-computed.html.ini
index 9b57d470e5b..ee892e282ec 100644
--- a/tests/wpt/metadata/css/filter-effects/parsing/filter-computed.html.ini
+++ b/tests/wpt/metadata/css/filter-effects/parsing/filter-computed.html.ini
@@ -14,3 +14,12 @@
[Property filter value 'blur(10px) url("https://www.example.com/picture.svg#f") contrast(20) brightness(30)' computes to 'blur(10px) url("https://www.example.com/picture.svg#f") contrast(20) brightness(30)']
expected: FAIL
+ [Property filter value 'blur(10px) url("https://www.example.com/picture.svg#f") contrast(20) brightness(30)']
+ expected: FAIL
+
+ [Property filter value 'drop-shadow(1px 2px)']
+ expected: FAIL
+
+ [Property filter value 'drop-shadow(rgb(4, 5, 6) 1px 2px 0px)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/filter-effects/parsing/flood-color-computed.html.ini b/tests/wpt/metadata/css/filter-effects/parsing/flood-color-computed.html.ini
index b99b3891082..d5095f991c8 100644
--- a/tests/wpt/metadata/css/filter-effects/parsing/flood-color-computed.html.ini
+++ b/tests/wpt/metadata/css/filter-effects/parsing/flood-color-computed.html.ini
@@ -23,3 +23,27 @@
[Property flood-color value 'teal' computes to 'rgb(0, 128, 128)']
expected: FAIL
+ [Property flood-color value 'rgb(100%, 100%, 0%)']
+ expected: FAIL
+
+ [Property flood-color value 'red']
+ expected: FAIL
+
+ [Property flood-color value 'hsl(120, 100%, 50%)']
+ expected: FAIL
+
+ [Property flood-color value 'teal']
+ expected: FAIL
+
+ [Property flood-color value 'currentcolor']
+ expected: FAIL
+
+ [Property flood-color value 'rgb(0, 0, 255)']
+ expected: FAIL
+
+ [Property flood-color value '#00FF00']
+ expected: FAIL
+
+ [Property flood-color value 'transparent']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/filter-effects/parsing/lighting-color-computed.html.ini b/tests/wpt/metadata/css/filter-effects/parsing/lighting-color-computed.html.ini
index f03ad70aaf9..6e8b420a5af 100644
--- a/tests/wpt/metadata/css/filter-effects/parsing/lighting-color-computed.html.ini
+++ b/tests/wpt/metadata/css/filter-effects/parsing/lighting-color-computed.html.ini
@@ -2,3 +2,6 @@
[Property lighting-color value 'rgb(1, 2, 3)' computes to 'rgb(1, 2, 3)']
expected: FAIL
+ [Property lighting-color value 'rgb(1, 2, 3)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_html.html.ini b/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_html.html.ini
deleted file mode 100644
index d3f46c22377..00000000000
--- a/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_html.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[contenttype_html.html]
- expected: CRASH
diff --git a/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_txt.html.ini b/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_txt.html.ini
deleted file mode 100644
index c3916f8555d..00000000000
--- a/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_txt.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[contenttype_txt.html]
- expected: CRASH
diff --git a/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_xml.html.ini b/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_xml.html.ini
deleted file mode 100644
index cde6fe16ee2..00000000000
--- a/tests/wpt/metadata/dom/nodes/Document-contentType/contentType/contenttype_xml.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[contenttype_xml.html]
- expected: CRASH
diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index 0f615a03436..7f5bd9d3587 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -309,18 +309,3 @@
[<iframe>: separate response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;x=" text/plain]
- expected: FAIL
-
- [<iframe>: separate response Content-Type: text/html;" text/plain]
- expected: FAIL
-
- [<iframe>: combined response Content-Type: text/html */*]
- expected: FAIL
-
- [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
- expected: FAIL
-
- [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
index 536384f36e1..87c807a49ff 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,6 +11,3 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
- [X-Content-Type-Options%3A%20%2Cnosniff]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini
index 6bd06899fdd..80ebd73cb00 100644
--- a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini
+++ b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini
@@ -8,7 +8,7 @@
expected: FAIL
[Embedded credentials are treated as network errors in new windows.]
- expected: FAIL
+ expected: TIMEOUT
[Embedded credentials matching the top-level are treated as network errors for cross-origin URLs.]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
new file mode 100644
index 00000000000..87b07c3e670
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_1.html]
+ [Multiple history traversals from the same task]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
index dc2e45516de..385376c7321 100644
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
@@ -1,4 +1,4 @@
-[traverse_the_history_5.html]
+[traverse_the_history_4.html]
[Multiple history traversals, last would be aborted]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/sandboxing/sandbox-new-execution-context.html.ini b/tests/wpt/metadata/html/browsers/sandboxing/sandbox-new-execution-context.html.ini
deleted file mode 100644
index 49f4d547be4..00000000000
--- a/tests/wpt/metadata/html/browsers/sandboxing/sandbox-new-execution-context.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[sandbox-new-execution-context.html]
- [iframe with sandbox should load with new execution context]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
new file mode 100644
index 00000000000..16fa2c5cfc1
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
@@ -0,0 +1,4 @@
+[creating_browsing_context_test_01.html]
+ [first argument: absolute url]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
index e02f179ec25..bf50d59df41 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-innerwidth-innerheight.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
expected: FAIL
- [features "innerheight=-404.5" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerwidth=-404.5" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerwidth=-404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerheight=-404e1" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerheight=-404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerwidth=-404e1" should NOT set "width=404"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
index 23eefb8eaf9..e150c9d848f 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-screenx-screeny.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `screenx`, `screeny`]
expected: FAIL
- [features "screenx=-204" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "screeny=-204" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "screeny=-204.5" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "screeny=-0" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "screenx=-0" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "screenx=-204.5" should NOT set "left=204"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
index 940516ddd33..ad8840fbb68 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-top-left.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for `top`, `left`]
expected: FAIL
- [features "top=-204" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "top=-204.5" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "left=-204" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "top=-0" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "left=-204.5" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "left=-0" should NOT set "left=204"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
index 9027336b453..d1ed9088b2b 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-width-height.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for `width`, `height`]
expected: FAIL
- [features "height=-404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "height=-404e1" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "height=-404.5" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "width=-404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "width=-404e1" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "width=-404.5" should NOT set "width=404"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
index 4e44584b123..a70e9dbad4d 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
@@ -1,48 +1,32 @@
[open-features-non-integer-height.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `height`]
expected: FAIL
[features "height=405*3" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405.32" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405e1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405/5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405^4" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405.5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405e-1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405 " should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405LLl" should set "height=405"]
- expected: TIMEOUT
-
- [features "height=/404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [top=0,left=0,width=401,: absence of feature "height" should be treated same as "height=0"]
- expected: TIMEOUT
-
- [top=0,left=0: absence of feature "height" should be treated same as "height=0"]
- expected: TIMEOUT
-
- [features "height=_404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "height=L404" should NOT set "height=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
index fcaeae5336d..779531b4a98 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-innerheight.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
expected: FAIL
[features "innerheight=405e-1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405LLl" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405^4" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405e1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405 " should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405/5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405.32" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405.5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405*3" should set "height=405"]
- expected: TIMEOUT
-
- [features "innerheight=_404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerheight=L404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerheight=/404" should NOT set "height=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
index 42327fedd27..7a1b258d52e 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-innerwidth.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerwidth`]
expected: FAIL
[features "innerwidth=405e-1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405*3" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405.5" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405e1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405.32" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405 " should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405LLl" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405/5" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405^4" should set "width=405"]
- expected: TIMEOUT
-
- [features "innerwidth=/404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerwidth=_404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerwidth=L404" should NOT set "width=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
index a8e4fe06618..caba4124f0b 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-left.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `left`]
expected: FAIL
[features "left=105e1" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105 " should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105/5" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105e-1" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105^4" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105LLl" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105.32" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105*3" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105.5" should set "left=105"]
- expected: TIMEOUT
-
- [features "left=L104" should NOT set "left=104"]
- expected: TIMEOUT
-
- [features "left=/104" should NOT set "left=104"]
- expected: TIMEOUT
-
- [features "left=_104" should NOT set "left=104"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
index 64a08faf0e6..9ace8a4cbdb 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-screenx.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screenx`]
expected: FAIL
[features "screenx=105.5" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105e1" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105 " should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105*3" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105e-1" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105^4" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105LLl" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105/5" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105.32" should set "left=105"]
- expected: TIMEOUT
-
- [features "screenx=_104" should NOT set "left=104"]
- expected: TIMEOUT
-
- [features "screenx=L104" should NOT set "left=104"]
- expected: TIMEOUT
-
- [features "screenx=/104" should NOT set "left=104"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
index 4f22ef4ef29..a82bd0f981a 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-screeny.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screeny`]
expected: FAIL
[features "screeny=405^4" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405e-1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405LLl" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405e1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405 " should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405/5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405*3" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405.32" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405.5" should set "height=405"]
- expected: TIMEOUT
-
- [features "screeny=_404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "screeny=L404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "screeny=/404" should NOT set "height=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini
index 8540f53d8d6..10f617db69e 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-top.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `top`]
expected: FAIL
[features "top=105/5" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105*3" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105LLl" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105e-1" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105.32" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105e1" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105 " should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105^4" should set "top=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "top=105.5" should set "top=105"]
- expected: TIMEOUT
-
- [features "top=/104" should NOT set "top=104"]
- expected: TIMEOUT
-
- [features "top=_104" should NOT set "top=104"]
- expected: TIMEOUT
-
- [features "top=L104" should NOT set "top=104"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
index 9d841e61bc0..28f93ee71b5 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
@@ -1,48 +1,32 @@
[open-features-non-integer-width.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `width`]
expected: FAIL
[features "width=405^4" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405.5" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405e1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405 " should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405.32" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405LLl" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405*3" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405e-1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405/5" should set "width=405"]
- expected: TIMEOUT
-
- [top=0,left=0: absence of feature "width" should be treated same as "width=0"]
- expected: TIMEOUT
-
- [features "width=_404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [top=0,left=0,height=401,: absence of feature "width" should be treated same as "width=0"]
- expected: TIMEOUT
-
- [features "width=/404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "width=L404" should NOT set "width=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
index 8b743f36e1d..6b68e9094e4 100644
--- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
+++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
@@ -1,20 +1,16 @@
[supported-elements.html]
- expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
[Element with tabindex should support autofocus]
- expected: TIMEOUT
+ expected: FAIL
[Host element with delegatesFocus including no focusable descendants should be skipped]
- expected: NOTRUN
+ expected: FAIL
[Area element should support autofocus]
- expected: NOTRUN
+ expected: FAIL
[Host element with delegatesFocus should support autofocus]
- expected: NOTRUN
-
- [Non-HTMLElement should not support autofocus]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-style-element/mutations.window.js.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-style-element/mutations.window.js.ini
new file mode 100644
index 00000000000..909fb978d2a
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/document-metadata/the-style-element/mutations.window.js.ini
@@ -0,0 +1,4 @@
+[mutations.window.html]
+ [Mutating the style element: mutating a Comment node]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
index dc856a3d5a3..e440b1e38c6 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
@@ -1,5 +1,6 @@
[iframe_sandbox_popups_nonescaping-3.html]
type: testharness
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: FAIL
+ expected: NOTRUN
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini
index f6eecd82b49..61799e4c935 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini
@@ -1,5 +1,5 @@
[form-double-submit-2.html]
expected: ERROR
[preventDefault should allow onclick submit() to succeed]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini b/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
index 65424f7891a..7b498d66315 100644
--- a/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
+++ b/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
@@ -8,7 +8,7 @@
expected: FAIL
[Check that rel=noopener with target=_top does a normal load]
- expected: FAIL
+ expected: TIMEOUT
[Check that targeting of rel=noopener with a given name reuses an existing window with that name]
expected: NOTRUN
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini
deleted file mode 100644
index 178680e5d14..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[script-onerror-insertion-point-2.html]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/size.large.html.ini b/tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/size.large.html.ini
new file mode 100644
index 00000000000..68cde348264
--- /dev/null
+++ b/tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/size.large.html.ini
@@ -0,0 +1,2 @@
+[size.large.html]
+ expected: CRASH
diff --git a/tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/size.large.worker.js.ini b/tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/size.large.worker.js.ini
new file mode 100644
index 00000000000..830f09953e0
--- /dev/null
+++ b/tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/size.large.worker.js.ini
@@ -0,0 +1,2 @@
+[size.large.worker.html]
+ expected: CRASH
diff --git a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
index 99a24216c88..7725b118e9d 100644
--- a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
+++ b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
@@ -12,3 +12,6 @@
[Verifies the resolution of entry.startTime is at least 5 microseconds.]
expected: TIMEOUT
+ [Verifies the resolution of performance.now() is at least 5 microseconds.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/permissions/test-periodic-background-sync-permission.html.ini b/tests/wpt/metadata/permissions/test-periodic-background-sync-permission.html.ini
new file mode 100644
index 00000000000..b31e53c05b6
--- /dev/null
+++ b/tests/wpt/metadata/permissions/test-periodic-background-sync-permission.html.ini
@@ -0,0 +1,4 @@
+[test-periodic-background-sync-permission.html]
+ [Test Periodic Background Sync Permission.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini b/tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini
index b4090ef9fe2..1c7ec9ce1db 100644
--- a/tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini
+++ b/tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini
@@ -1,5 +1,4 @@
[crossorigin-sandwich-TAO.sub.html]
- expected: ERROR
[There should be one entry.]
expected: FAIL
diff --git a/tests/wpt/metadata/resource-timing/workerStart-tao-protected.https.html.ini b/tests/wpt/metadata/resource-timing/workerStart-tao-protected.https.html.ini
new file mode 100644
index 00000000000..d54117163ec
--- /dev/null
+++ b/tests/wpt/metadata/resource-timing/workerStart-tao-protected.https.html.ini
@@ -0,0 +1,11 @@
+[workerStart-tao-protected.https.html]
+ expected: TIMEOUT
+ [Install a SW]
+ expected: TIMEOUT
+
+ [Add TAO iframe to remote origin. Make sure workerStart is not zero]
+ expected: NOTRUN
+
+ [Add TAO-less iframe to remote origin. Make sure workerStart is zero]
+ expected: NOTRUN
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
index a56bad443a2..66bd350083b 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
@@ -1,5 +1,4 @@
[realtimeanalyser-fft-scaling.html]
- expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL
diff --git a/tests/wpt/metadata/webdriver/tests/set_window_rect/set.py.ini b/tests/wpt/metadata/webdriver/tests/set_window_rect/set.py.ini
index a72d1e558a6..f31c06c8c59 100644
--- a/tests/wpt/metadata/webdriver/tests/set_window_rect/set.py.ini
+++ b/tests/wpt/metadata/webdriver/tests/set_window_rect/set.py.ini
@@ -38,6 +38,3 @@
[test_no_browsing_context]
expected: ERROR
- [test_negative_x_y]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini
new file mode 100644
index 00000000000..663a1f8fa30
--- /dev/null
+++ b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini
@@ -0,0 +1,5 @@
+[018.html]
+ expected: TIMEOUT
+ [origin of the script that invoked the method, javascript:]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/webmessaging/without-ports/018.html.ini b/tests/wpt/metadata/webmessaging/without-ports/018.html.ini
new file mode 100644
index 00000000000..663a1f8fa30
--- /dev/null
+++ b/tests/wpt/metadata/webmessaging/without-ports/018.html.ini
@@ -0,0 +1,5 @@
+[018.html]
+ expected: TIMEOUT
+ [origin of the script that invoked the method, javascript:]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/workers/Worker-constructor-proto.any.js.ini b/tests/wpt/metadata/workers/Worker-constructor-proto.any.js.ini
index 679b0b60c8b..b1fc322f038 100644
--- a/tests/wpt/metadata/workers/Worker-constructor-proto.any.js.ini
+++ b/tests/wpt/metadata/workers/Worker-constructor-proto.any.js.ini
@@ -5,9 +5,6 @@
[Worker-constructor-proto.any.worker.html]
- [Tests that setting the proto of a built in constructor is not reset.]
- expected: FAIL
-
[Worker-constructor-proto.any.serviceworker.html]
expected: ERROR
diff --git a/tests/wpt/metadata/workers/Worker-location.sub.any.js.ini b/tests/wpt/metadata/workers/Worker-location.sub.any.js.ini
index f89806c9bdb..6e237c29962 100644
--- a/tests/wpt/metadata/workers/Worker-location.sub.any.js.ini
+++ b/tests/wpt/metadata/workers/Worker-location.sub.any.js.ini
@@ -5,6 +5,3 @@
[Worker-location.sub.any.worker.html]
- [Test WorkerLocation properties.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/workers/Worker-multi-port.html.ini b/tests/wpt/metadata/workers/Worker-multi-port.html.ini
deleted file mode 100644
index c2192f76f4a..00000000000
--- a/tests/wpt/metadata/workers/Worker-multi-port.html.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[Worker-multi-port.html]
- [Test postMessage without sequence throws exception]
- expected: FAIL
-
- [Test postMessage on channel with previous failed postMessage calls.]
- expected: FAIL
-
- [Test postMessage with incorrect ports throws exception]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini b/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini
index bfd4d6dd2d6..bf2a1d61bab 100644
--- a/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini
+++ b/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini
@@ -1,5 +1,4 @@
[import-in-moduleworker.html]
- expected: ERROR
[Base URL in module dedicated workers: import]
expected: FAIL
diff --git a/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini b/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini
index 650c91da4a6..333edb3a26e 100644
--- a/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini
+++ b/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini
@@ -1,5 +1,4 @@
[sharedworker-in-worker.html]
- expected: ERROR
[Base URL in workers: new SharedWorker()]
expected: FAIL
diff --git a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
deleted file mode 100644
index 80f9a4f15b8..00000000000
--- a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[Worker-constructor.html]
- expected: ERROR
diff --git a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
index f584fce5df1..268949ced5c 100644
--- a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
+++ b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
@@ -1,5 +1,4 @@
[005.html]
- expected: ERROR
[dedicated worker in shared worker in dedicated worker]
expected: FAIL
diff --git a/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini b/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini
index 49f489d2a1c..d6e39444229 100644
--- a/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini
+++ b/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini
@@ -1,6 +1,5 @@
[003.html]
type: testharness
- expected: ERROR
[shared]
expected: FAIL
diff --git a/tests/wpt/web-platform-tests/.taskcluster.yml b/tests/wpt/web-platform-tests/.taskcluster.yml
index 8bdbabb9e2a..815648df512 100644
--- a/tests/wpt/web-platform-tests/.taskcluster.yml
+++ b/tests/wpt/web-platform-tests/.taskcluster.yml
@@ -6,7 +6,7 @@ tasks:
run_task:
$if: 'tasks_for == "github-push"'
then:
- $if: 'event.ref in ["refs/heads/master", "refs/heads/epochs/daily", "refs/heads/epochs/weekly", "refs/heads/triggers/chrome_stable", "refs/heads/triggers/chrome_beta", "refs/heads/triggers/chrome_dev", "refs/heads/triggers/firefox_stable", "refs/heads/triggers/firefox_beta", "refs/heads/triggers/firefox_nightly", "refs/heads/triggers/webkitgtk_minibrowser_stable", "refs/heads/triggers/webkitgtk_minibrowser_nightly"]'
+ $if: 'event.ref in ["refs/heads/master", "refs/heads/epochs/daily", "refs/heads/epochs/weekly", "refs/heads/triggers/chrome_stable", "refs/heads/triggers/chrome_beta", "refs/heads/triggers/chrome_dev", "refs/heads/triggers/firefox_stable", "refs/heads/triggers/firefox_beta", "refs/heads/triggers/firefox_nightly", "refs/heads/triggers/webkitgtk_minibrowser_stable", "refs/heads/triggers/webkitgtk_minibrowser_nightly", "refs/heads/triggers/servo_nightly"]'
then: true
else: false
else:
diff --git a/tests/wpt/web-platform-tests/IndexedDB/get-databases.any.js b/tests/wpt/web-platform-tests/IndexedDB/get-databases.any.js
index 823cfce284b..2e533dceb01 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/get-databases.any.js
+++ b/tests/wpt/web-platform-tests/IndexedDB/get-databases.any.js
@@ -1,8 +1,10 @@
// META: script=support-promises.js
promise_test(async testCase => {
- assert_true(indexedDB.databases() instanceof Promise,
+ let result = indexedDB.databases();
+ assert_true(result instanceof Promise,
"databases() should return a promise.");
+ result.catch(() => {});
}, "Ensure that databases() returns a promise.");
promise_test(async testCase => {
diff --git a/tests/wpt/web-platform-tests/client-hints/accept_ch_feature_policy.tentative.sub.https.html b/tests/wpt/web-platform-tests/client-hints/accept_ch_feature_policy.tentative.sub.https.html
index 6a5c00a759d..1df308ab2f8 100644
--- a/tests/wpt/web-platform-tests/client-hints/accept_ch_feature_policy.tentative.sub.https.html
+++ b/tests/wpt/web-platform-tests/client-hints/accept_ch_feature_policy.tentative.sub.https.html
@@ -38,6 +38,9 @@ promise_test(t => {
assert_in_array(r.headers.get("ect-received"), ["slow-2g", "2g",
"3g", "4g"], 'ect-received is unexpected');
+
+ assert_true(r.headers.has("mobile-received"));
+ assert_in_array(r.headers.get("mobile-received"), ["?0", "?1"], 'mobile is unexpected');
});
}, "Accept-CH header test");
@@ -53,6 +56,7 @@ promise_test(t => {
assert_false(r.headers.has("rtt-received"), "rtt-received");
assert_false(r.headers.has("downlink-received"), "downlink-received");
assert_false(r.headers.has("ect-received"), "ect-received");
+ assert_false(r.headers.has("mobile-received"), "mobile-received");
});
}, "Cross-Origin Accept-CH header test");
diff --git a/tests/wpt/web-platform-tests/client-hints/accept_ch_feature_policy.tentative.sub.https.html.headers b/tests/wpt/web-platform-tests/client-hints/accept_ch_feature_policy.tentative.sub.https.html.headers
index 31e3b5be18b..cf453cf368d 100644
--- a/tests/wpt/web-platform-tests/client-hints/accept_ch_feature_policy.tentative.sub.https.html.headers
+++ b/tests/wpt/web-platform-tests/client-hints/accept_ch_feature_policy.tentative.sub.https.html.headers
@@ -1,2 +1,2 @@
-Accept-CH: device-memory, dpr, viewport-width, rtt, downlink, ect, lang
-Feature-Policy: ch-device-memory *; ch-dpr 'none'; ch-viewport-width 'self'; ch-lang 'none'
+Accept-CH: device-memory, dpr, viewport-width, rtt, downlink, ect, lang, mobile
+Feature-Policy: ch-device-memory *; ch-dpr 'none'; ch-viewport-width 'self'; ch-lang 'none'; ch-mobile
diff --git a/tests/wpt/web-platform-tests/client-hints/echo_client_hints_received.py b/tests/wpt/web-platform-tests/client-hints/echo_client_hints_received.py
index e5088c87199..7427a3878e1 100644
--- a/tests/wpt/web-platform-tests/client-hints/echo_client_hints_received.py
+++ b/tests/wpt/web-platform-tests/client-hints/echo_client_hints_received.py
@@ -22,3 +22,5 @@ def main(request, response):
response.headers.set("ect-received", request.headers.get("ect"))
if "Sec-CH-Lang" in request.headers:
response.headers.set("lang-received", request.headers.get("Sec-CH-Lang"))
+ if "sec-ch-ua-mobile" in request.headers:
+ response.headers.set("mobile-received", request.headers.get("sec-ch-ua-mobile"))
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/META.yml b/tests/wpt/web-platform-tests/conformance-checkers/META.yml
index 978b5c85721..9b8c31d67ee 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/META.yml
+++ b/tests/wpt/web-platform-tests/conformance-checkers/META.yml
@@ -1,2 +1,3 @@
suggested_reviewers:
- sideshowbarker
+ - zcorpan
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-all-spaces-with-following-source-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-all-spaces-with-following-source-srcset-novalid.html
index 7bcac2b42f2..e63f7c12190 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-all-spaces-with-following-source-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-all-spaces-with-following-source-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid always-matching-source-media-all-spaces-with-following-source-srcset</title>
<picture><source srcset=x media=' all '><source srcset=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-all-with-following-source-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-all-with-following-source-srcset-novalid.html
index 320ca691248..f97bc41f451 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-all-with-following-source-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-all-with-following-source-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid always-matching-source-media-all-with-following-source-srcset</title>
<picture><source srcset=x media=all><source srcset=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-empty-with-following-source-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-empty-with-following-source-srcset-novalid.html
index a9dd0ab87ca..b1bf9476d90 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-empty-with-following-source-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-empty-with-following-source-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid always-matching-source-media-empty-with-following-source-srcset</title>
<picture><source srcset=x media><source srcset=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-spaces-with-following-source-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-spaces-with-following-source-srcset-novalid.html
index 95c36b0cd21..66641ad6129 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-spaces-with-following-source-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-spaces-with-following-source-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid always-matching-source-media-spaces-with-following-source-srcset</title>
<picture><source srcset=x media='
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-uppercase-with-following-source-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-uppercase-with-following-source-srcset-novalid.html
index d495d18b46b..584dfe97c70 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-uppercase-with-following-source-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-media-uppercase-with-following-source-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid always-matching-source-media-uppercase-with-following-source-srcset</title>
<picture><source srcset=x media=ALL><source srcset=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-sizes-with-following-source-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-sizes-with-following-source-srcset-novalid.html
index 2cb7ea80297..4fdbe261b3f 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-sizes-with-following-source-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-sizes-with-following-source-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid always-matching-source-sizes-with-following-source-srcset</title>
<picture><source srcset='x 100w' sizes=50vw><source srcset=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-img-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-img-srcset-novalid.html
index c2962a9a7f8..15e0a02c9f6 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-img-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-img-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid always-matching-source-with-following-img-srcset</title>
<picture><source srcset=x><img src=x srcset=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-source-media-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-source-media-novalid.html
index a097307cd1e..b3723fc63b8 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-source-media-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-source-media-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid always-matching-source-with-following-source-media</title>
<picture><source srcset=x><source srcset=x media=screen><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-source-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-source-srcset-novalid.html
index d0f3ea9379e..45046bcc44e 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-source-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-source-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid always-matching-source-with-following-source-srcset</title>
<picture><source srcset=x><source srcset=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-source-type-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-source-type-novalid.html
index 99eadd808d6..ad6f6bd971e 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-source-type-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/always-matching-source-with-following-source-type-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid always-matching-source-with-following-source-type</title>
<picture><source srcset=x><source srcset=x type=image/gif><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/audio-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/audio-srcset-novalid.html
index 883f05be432..39d47ac73ab 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/audio-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/audio-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid audio-srcset</title>
<audio src=x srcset=x></audio> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-img-end-tag-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-img-end-tag-novalid.html
index 0c56b597abe..69676d5cb29 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-img-end-tag-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-img-end-tag-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid html-syntax-img-end-tag</title>
<picture><img src=x alt></img></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-picture-no-end-tag-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-picture-no-end-tag-novalid.html
index a7e378d38ed..f12ef1203f6 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-picture-no-end-tag-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-picture-no-end-tag-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid html-syntax-picture-no-end-tag</title>
<picture><img src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-picture-slash-no-end-tag-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-picture-slash-no-end-tag-novalid.html
index 50816e522d4..a555b834d07 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-picture-slash-no-end-tag-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-picture-slash-no-end-tag-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid html-syntax-picture-slash-no-end-tag</title>
<picture/><img src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-picture-slash-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-picture-slash-novalid.html
index 0c824ef56c8..ffb3476e3ab 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-picture-slash-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-picture-slash-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid html-syntax-picture-slash</title>
<picture/><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-source-end-tag-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-source-end-tag-novalid.html
index 8a8b2c447ef..747a6def29a 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-source-end-tag-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/html-syntax-source-end-tag-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid html-syntax-source-end-tag</title>
<picture><source srcset=x></source><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-novalid.html
index a97c2a52d80..23f09e118e8 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid img-no-src</title>
<img alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-picture-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-picture-novalid.html
index aae2586129e..e414b938a06 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-picture-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-picture-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid img-no-src-with-picture</title>
<picture><img alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-source-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-source-novalid.html
index 185231fd632..10ef732eb46 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-source-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-source-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid img-no-src-with-source</title>
<picture><source srcset=x><img alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-srcset-and-picture-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-srcset-and-picture-novalid.html
index d7e820a1eec..d91f5a7e584 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-srcset-and-picture-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-srcset-and-picture-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid img-no-src-with-srcset-and-picture</title>
<picture><img srcset=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-srcset-novalid.html
index aade7df01ca..de5b4504db0 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-no-src-with-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid img-no-src-with-srcset</title>
<img srcset=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-srcset-no-descriptor-with-sizes-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-srcset-no-descriptor-with-sizes-novalid.html
index c23295931bb..12101c39ddb 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-srcset-no-descriptor-with-sizes-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-srcset-no-descriptor-with-sizes-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid img-srcset-no-descriptor-with-sizes</title>
<img src=x srcset='x' sizes=50vw alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-srcset-w-and-x-width-sizes-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-srcset-w-and-x-width-sizes-novalid.html
index ae5cba4e189..e3f979775b7 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-srcset-w-and-x-width-sizes-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-srcset-w-and-x-width-sizes-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid img-srcset-w-and-x-width-sizes</title>
<img src=x srcset='x 100w, y 2x' sizes=50vw alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-srcset-w-no-sizes-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-srcset-w-no-sizes-novalid.html
index c6970b7587f..3a62ae23528 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-srcset-w-no-sizes-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-srcset-w-no-sizes-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid img-srcset-w-no-sizes</title>
<img srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-type-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-type-novalid.html
index 41a813c1c44..c65a153a17e 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-type-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-type-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid img-type</title>
<img src=x type=image/gif alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-type-with-picture-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-type-with-picture-novalid.html
index d05284ee589..844eb5cfa0e 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-type-with-picture-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-type-with-picture-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid img-type-with-picture</title>
<picture><img src=x type=image/gif alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-with-sizes-no-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-with-sizes-no-srcset-novalid.html
index a77c4a53906..4afba124749 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-with-sizes-no-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/img-with-sizes-no-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid img-with-sizes-no-srcset</title>
<img sizes=50vw src=foo alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/input-type-image-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/input-type-image-srcset-novalid.html
index 80c7995e5b0..f8c882c0595 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/input-type-image-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/input-type-image-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid input-type-image-srcset</title>
<input type=image src=x srcset=x alt=x> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-after-img-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-after-img-novalid.html
index 66ea1f9605f..21b59957254 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-after-img-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-after-img-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-br-after-img</title>
<picture><img src=x alt><br></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-after-source-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-after-source-novalid.html
index 55bb78c19e6..ae89b13710b 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-after-source-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-after-source-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-br-after-source</title>
<picture><source srcset=x><br><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-before-img-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-before-img-novalid.html
index 06462c42bfe..9e0f29df1d8 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-before-img-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-before-img-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-br-before-img</title>
<picture><br><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-before-source-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-before-source-novalid.html
index 7f9bbc0a26f..08fc66213de 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-before-source-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-br-before-source-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-br-before-source</title>
<picture><br><source srcset=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-figure-wrapping-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-figure-wrapping-novalid.html
index ffe22b73b13..948cb83a2a1 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-figure-wrapping-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-figure-wrapping-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-figure-wrapping</title>
<picture><figure><img src=x alt></figure></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-input-type-hidden-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-input-type-hidden-novalid.html
index b4763de6e4c..29e5310ce80 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-input-type-hidden-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-input-type-hidden-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-input-type-hidden</title>
<picture><input type=hidden name=x value=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-math-nog-img-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-math-nog-img-novalid.html
index 5f1b85dbb28..cbe6391cf59 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-math-nog-img-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-math-nog-img-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-math-nog-img</title>
<picture><math></math></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-noscript-after-source-no-img-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-noscript-after-source-no-img-novalid.html
index 957c8bc1a39..e66f6168430 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-noscript-after-source-no-img-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-noscript-after-source-no-img-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-noscript-after-source-no-img</title>
<picture><source srcset=x><noscript><img src=x alt></noscript></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-noscript-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-noscript-novalid.html
index 45efb6712c5..430cc880fb9 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-noscript-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-noscript-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-noscript</title>
<picture><img src=x alt><noscript></noscript></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-p-after-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-p-after-novalid.html
index 0848d51e045..f09c344ce42 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-p-after-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-p-after-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-p-after</title>
<picture><source srcset=x><img src=x alt><p></p></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-p-before-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-p-before-novalid.html
index abb046b7640..3e12510b541 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-p-before-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-p-before-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-p-before</title>
<picture><p></p><source srcset=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-p-wrapping-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-p-wrapping-novalid.html
index c1561cf33b4..45d19b42769 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-p-wrapping-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-p-wrapping-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-p-wrapping</title>
<picture><p><source srcset=x><img src=x alt></p></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-picture-before-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-picture-before-novalid.html
index d2d3ce9ff23..001e5429b23 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-picture-before-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-picture-before-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-picture-before</title>
<picture><picture><img src=x alt></picture><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-picture-wrapping-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-picture-wrapping-novalid.html
index beb9577c5eb..611ebde6d35 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-picture-wrapping-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-picture-wrapping-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-picture-wrapping</title>
<picture><picture><img src=x alt></picture></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-span-after-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-span-after-novalid.html
index 03f6923e776..0e6d842539f 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-span-after-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-span-after-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-span-after</title>
<picture><source srcset=x><img src=x alt><span></span></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-span-before-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-span-before-novalid.html
index 85307cfb5ec..4fd5c2c1c3b 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-span-before-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-span-before-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-span-before</title>
<picture><span></span><source srcset=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-span-wrapping-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-span-wrapping-novalid.html
index 701a263d569..5e9262ddb70 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-span-wrapping-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-span-wrapping-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-span-wrapping</title>
<picture><span><source srcset=x><img src=x alt></span></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-style-scroped-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-style-scroped-novalid.html
index 7aae2a0fe7a..bb622258f34 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-style-scroped-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-style-scroped-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-style-scroped</title>
<picture><style scroped></style><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-svg-no-img-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-svg-no-img-novalid.html
index 0a444584989..1464b8f79ba 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-svg-no-img-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-svg-no-img-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-svg-no-img</title>
<picture><svg></svg></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-svg-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-svg-novalid.html
index 03d47c7189f..769415548ec 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-svg-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-svg-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-svg</title>
<picture><img src=x alt><svg></svg></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-after-img-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-after-img-novalid.html
index 700f317c2b0..f730e981155 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-after-img-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-after-img-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-text-after-img</title>
<picture><img src=x alt>x</picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-after-source-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-after-source-novalid.html
index 99c173e8f60..82023174149 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-after-source-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-after-source-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-text-after-source</title>
<picture><source srcset=x>x<img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-before-img-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-before-img-novalid.html
index 256804c9623..dc5b2e57a11 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-before-img-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-before-img-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-text-before-img</title>
<picture>x<img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-before-source-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-before-source-novalid.html
index cf1cf0f4ea5..0817bd36169 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-before-source-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-text-before-source-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-text-before-source</title>
<picture>x<source srcset=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-video-before-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-video-before-novalid.html
index 2e91d9c2984..e7f2cd93d25 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-video-before-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-video-before-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-video-before</title>
<picture><video></video><source srcset=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-video-no-img-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-video-no-img-novalid.html
index 05d89383b99..e65fe3d85e6 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-video-no-img-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/junk-video-no-img-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid junk-video-no-img</title>
<picture><video></video></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/link-rel-icon-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/link-rel-icon-srcset-novalid.html
index df2d56c8efe..bbd4ec8ecac 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/link-rel-icon-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/link-rel-icon-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid link-rel-icon-srcset</title>
<link rel=icon srcset=x href=x> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-empty-picture-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-empty-picture-novalid.html
index 6f604e165be..5772ba29a70 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-empty-picture-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-empty-picture-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid missing-img-empty-picture</title>
<picture></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-only-script-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-only-script-novalid.html
index 96015048cff..5d1e7dca71b 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-only-script-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-only-script-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid missing-img-only-script</title>
<picture><script></script></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-only-source-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-only-source-novalid.html
index b8b25bd7377..dc535ae8fb4 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-only-source-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-only-source-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid missing-img-only-source</title>
<picture><source srcset=x></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-script-and-source-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-script-and-source-novalid.html
index ea61fadbdb1..c41226368c0 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-script-and-source-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-script-and-source-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid missing-img-script-and-source</title>
<picture><script></script><source srcset=x></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-source-and-script-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-source-and-script-novalid.html
index a31715d3369..01f4c833640 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-source-and-script-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/missing-img-source-and-script-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid missing-img-source-and-script</title>
<picture><source srcset=x><script></script></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-novalid.html
index bed5b38ac90..5da354872db 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid multiple-img</title>
<picture><img src=x alt><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-with-script-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-with-script-novalid.html
index 973d01f807b..9a0d3c7b443 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-with-script-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-with-script-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid multiple-img-with-script</title>
<picture><img src=x alt><script></script><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-with-source-and-script-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-with-source-and-script-novalid.html
index 8c722ac0704..a97d7ccca1f 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-with-source-and-script-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-with-source-and-script-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid multiple-img-with-source-and-script</title>
<picture><source srcset=x><img src=x alt><script></script><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-with-source-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-with-source-novalid.html
index d6c2402e85f..60740ee48e1 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-with-source-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/multiple-img-with-source-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid multiple-img-with-source</title>
<picture><source srcset=x><img src=x alt><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/object-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/object-srcset-novalid.html
index df784de7ef2..62482e92db9 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/object-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/object-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid object-srcset</title>
<object data=x srcset=x></object> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-dl-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-dl-novalid.html
index 12b32af3430..8277b989d94 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-dl-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-dl-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid parent-dl</title>
<dl><picture><img src=x alt></picture></dl> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-hgroup-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-hgroup-novalid.html
index 3b260d27f28..936d93e21fd 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-hgroup-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-hgroup-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid parent-hgroup</title>
<hgroup><h1>x</h1><picture><img src=x alt></picture></hgroup> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-noscript-in-head-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-noscript-in-head-novalid.html
index 648a16c1dc8..d04b77248c0 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-noscript-in-head-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-noscript-in-head-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid parent-noscript-in-head</title>
<noscript><picture><img src=x alt></picture></noscript> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-rp-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-rp-novalid.html
new file mode 100644
index 00000000000..5763e57ae90
--- /dev/null
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-rp-novalid.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
+<meta charset=utf-8>
+<title>invalid parent-rp</title>
+<ruby>x<rp><picture><img src=x alt></picture></rp><rt>x</rt><rp>x</rp></ruby> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-ul-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-ul-novalid.html
index ed39ef722bb..2bad211f31d 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-ul-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/parent-ul-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid parent-ul</title>
<ul><picture><img src=x alt></picture></ul> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-align-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-align-novalid.html
index 494a44d0b5d..81ce1eeed07 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-align-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-align-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-align</title>
<picture align=left><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-alt-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-alt-novalid.html
index 678dfe46a99..80f5bfe9482 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-alt-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-alt-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-alt</title>
<picture alt><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-application-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-application-novalid.html
index 6d1771f2a9e..db4a9356c3b 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-application-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-application-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-aria-role-application</title>
<picture role=application><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-button-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-button-novalid.html
index ad144b79d7f..e362cfdc238 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-button-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-button-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-aria-role-button</title>
<picture role=button><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-img-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-img-novalid.html
index f91f2671058..1d9540acf55 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-img-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-img-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-aria-role-img</title>
<picture role=img><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-presentation-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-presentation-novalid.html
index 7c8998c2ab9..428fdc74778 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-presentation-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-presentation-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-aria-role-presentation</title>
<picture role=presentation><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-region-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-region-novalid.html
index 336b58d6fa9..b264824ea80 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-region-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-aria-role-region-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-aria-role-region</title>
<picture role=region><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-border-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-border-novalid.html
index 013d6d668b5..1882bb31e60 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-border-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-border-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-border</title>
<picture border=1><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-crossorigin-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-crossorigin-novalid.html
index 733be02c5bd..ed45d49a63f 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-crossorigin-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-crossorigin-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-crossorigin</title>
<picture crossorigin><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-height-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-height-novalid.html
index d5c0f0c1a0f..ad7da346360 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-height-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-height-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-height</title>
<picture height=100><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-hspace-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-hspace-novalid.html
index 53912928bfd..fb9b97ee581 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-hspace-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-hspace-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-hspace</title>
<picture hspace=1><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-ismap-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-ismap-novalid.html
index d6dbfe4254a..58fcfcfae20 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-ismap-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-ismap-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-ismap</title>
<picture ismap><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-isvalid.html
index 302ce107e9a..efc4d4023eb 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-isvalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-isvalid.html
@@ -1,10 +1,11 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>valid picture</title>
<template><picture><img src=x alt></picture></template> <!-- parent-template-in-head -->
<body>
<img sizes='1q' srcset='x 100w, y 200w' src=x alt> <!-- sizes-microsyntax-q-in-source-size-value -->
-<img sizes='not (width:500px) and (width:500px) 500px' srcset='x 100w, y 200w' src=x alt> <!-- sizes-microsyntax-media-not-and -->
+<img sizes='(not (width:500px)) and (width:500px) 500px' srcset='x 100w, y 200w' src=x alt> <!-- sizes-microsyntax-media-not-and -->
<img sizes='1mm' srcset='x 100w, y 200w' src=x alt> <!-- sizes-microsyntax-mm-in-source-size-value -->
<noscript><picture><img src=x alt></picture></noscript> <!-- parent-noscript-in-body -->
<img sizes='1rem' srcset='x 100w, y 200w' src=x alt> <!-- sizes-microsyntax-rem-in-source-size-value -->
@@ -13,6 +14,7 @@
<picture title=x class=x dir=ltr hidden id=asdf tabindex=0><img src=x alt></picture> <!-- picture-global-attributes -->
<img sizes='/**/50vw' srcset='x 100w, y 200w' src=x alt> <!-- sizes-microsyntax-leading-css-comment -->
<img sizes='1em' srcset='x 100w, y 200w' src=x alt> <!-- sizes-microsyntax-em-in-source-size-value -->
+<img srcset='x .5x' src=x alt> <!-- srcset-microsyntax-leading-dot-x -->
<picture><source srcset=x media=SCREEN><img src=x srcset=x alt></picture> <!-- source-with-media-uppercase-img-with-srcset -->
<img srcset='%2Cx' src=x alt> <!-- srcset-microsyntax-percent-escaped-leading-comma-in-url -->
<img srcset='x 1x,y 2x' src=x alt> <!-- srcset-microsyntax-no-space-between-candidates -->
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-longdesc-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-longdesc-novalid.html
index 86d77931388..2aa1e086b17 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-longdesc-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-longdesc-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-longdesc</title>
<picture longdesc=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-lowsrc-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-lowsrc-novalid.html
index 00361b00feb..be2315431dc 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-lowsrc-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-lowsrc-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-lowsrc</title>
<picture lowsrc=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-media-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-media-novalid.html
index e81f5e9ef0c..4e3e8c4f427 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-media-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-media-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-media</title>
<picture media=screen><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-name-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-name-novalid.html
index d8867a1b2ef..b846050183e 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-name-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-name-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-name</title>
<picture name=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-sizes-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-sizes-novalid.html
index 8064a3d2685..8f90bdd6d92 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-sizes-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-sizes-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-sizes</title>
<picture sizes=50vw><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-src-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-src-novalid.html
index b5e6e30e829..00b5825c4f1 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-src-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-src-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-src</title>
<picture src=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-srcset-novalid.html
index 1f3703e50be..6075ef734ee 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-srcset</title>
<picture srcset=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-usemap-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-usemap-novalid.html
index 1def698f176..60d2cdcf6ff 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-usemap-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-usemap-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-usemap</title>
<picture usemap><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-vspace-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-vspace-novalid.html
index fc62cd514d9..aed4fa45ac7 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-vspace-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-vspace-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-vspace</title>
<picture vspace=1><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-width-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-width-novalid.html
index 1fa63afa0c4..01b39019532 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-width-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/picture-width-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid picture-width</title>
<picture width=100><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-auto-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-auto-source-size-value-novalid.html
index 734ed4a8c52..df9c8b24e80 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-auto-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-auto-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-auto-source-size-value</title>
<img sizes='auto' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-comma-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-comma-novalid.html
index 06b83dc4ae5..c33642a21d0 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-comma-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-comma-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-comma</title>
<img sizes=',' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-css-comment-after-plus-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-css-comment-after-plus-novalid.html
index c3e04ca6b6e..14c85d1e67b 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-css-comment-after-plus-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-css-comment-after-plus-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-css-comment-after-plus</title>
<img sizes='+/**/50vw' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-css-comment-before-unit-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-css-comment-before-unit-novalid.html
index 3d0ad297dc2..3e5ee116ed7 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-css-comment-before-unit-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-css-comment-before-unit-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-css-comment-before-unit</title>
<img sizes='50/**/vw' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-default-first-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-default-first-novalid.html
index c5331b0d4ef..5afb90ef047 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-default-first-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-default-first-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-default-first</title>
<img sizes='100vw, (min-width:500px) 500px' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-default-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-default-source-size-value-novalid.html
index 2f70de718ab..3a419b379c7 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-default-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-default-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-default-source-size-value</title>
<img sizes='default' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-deg-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-deg-source-size-value-novalid.html
index d0e608b95d6..038faa53231 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-deg-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-deg-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-deg-source-size-value</title>
<img sizes='1deg' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-dpcm-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-dpcm-source-size-value-novalid.html
index c8b8b7a2dd8..84db64355b5 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-dpcm-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-dpcm-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-dpcm-source-size-value</title>
<img sizes='1dpcm' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-dpi-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-dpi-source-size-value-novalid.html
index 95160c13939..a50757617b9 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-dpi-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-dpi-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-dpi-source-size-value</title>
<img sizes='1dpi' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-dppx-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-dppx-source-size-value-novalid.html
index 778f6b49b99..e50642ba485 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-dppx-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-dppx-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-dppx-source-size-value</title>
<img sizes='1dppx' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-empty-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-empty-novalid.html
index be232a5cd1f..9ffe660d5fc 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-empty-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-empty-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-empty</title>
<img sizes='' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-foo-bar-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-foo-bar-source-size-value-novalid.html
index 7e969dafcb6..45ce5512bf6 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-foo-bar-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-foo-bar-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-foo-bar-source-size-value</title>
<img sizes='foo-bar' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-grad-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-grad-source-size-value-novalid.html
index 506ebf561cb..ac89302bce3 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-grad-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-grad-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-grad-source-size-value</title>
<img sizes='1grad' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-hz-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-hz-source-size-value-novalid.html
index bc4e21c3fd2..94d58ec98c4 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-hz-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-hz-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-hz-source-size-value</title>
<img sizes='1Hz' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-inherit-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-inherit-source-size-value-novalid.html
index c232648dc6f..96103df2dc0 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-inherit-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-inherit-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-inherit-source-size-value</title>
<img sizes='inherit' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-initial-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-initial-source-size-value-novalid.html
index b70a543dee3..94dfcbd9431 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-initial-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-initial-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-initial-source-size-value</title>
<img sizes='initial' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-junk-in-default-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-junk-in-default-novalid.html
index 1121b56691f..d73502a8ec1 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-junk-in-default-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-junk-in-default-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-junk-in-default</title>
<img sizes='(min-width:500px) 500px, 100vw foo bar' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-junk-in-source-size-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-junk-in-source-size-novalid.html
index 1fc7cffec92..9681d67bf1f 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-junk-in-source-size-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-junk-in-source-size-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-junk-in-source-size</title>
<img sizes='(min-width:500px) 500px foo bar, 100vw' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-khz-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-khz-source-size-value-novalid.html
index 039da34cf69..b1a31b0c024 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-khz-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-khz-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-khz-source-size-value</title>
<img sizes='1kHz' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-all-and-min-width-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-all-and-min-width-novalid.html
index 1ac0cf6e31a..8ba429c8a1e 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-all-and-min-width-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-all-and-min-width-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-media-all-and-min-width</title>
<img sizes='all and (min-width:500px) 500px, 100vw' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-all-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-all-novalid.html
index 453ba8ac9e2..e09bb2b593e 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-all-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-all-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-media-all</title>
<img sizes='all 500px, 100vw' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-bad-junk-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-bad-junk-novalid.html
index 27fc624ac53..0d5854417f0 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-bad-junk-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-bad-junk-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-media-bad-junk</title>
<img sizes='(}) 500px, 100vw' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-general-enclosed-junk-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-general-enclosed-junk-novalid.html
index b8b8f8e9909..67f80827174 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-general-enclosed-junk-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-general-enclosed-junk-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-media-general-enclosed-junk</title>
<img sizes='(123) 500px, 100vw' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-min-width-no-parenthesis-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-min-width-no-parenthesis-novalid.html
index b442eeddcc1..0a3e5cb2c64 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-min-width-no-parenthesis-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-media-min-width-no-parenthesis-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-media-min-width-no-parenthesis</title>
<img sizes='min-width:500px 500px, 100vw' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-ms-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-ms-source-size-value-novalid.html
index 4fa0acf7c17..da8f67714ee 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-ms-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-ms-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-ms-source-size-value</title>
<img sizes='1ms' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-negative-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-negative-source-size-value-novalid.html
index 0ac929a8194..ad28f404b5a 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-negative-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-negative-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-negative-source-size-value</title>
<img sizes='-1px' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-no-unit-in-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-no-unit-in-source-size-value-novalid.html
index 6c018626950..915d5be21f6 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-no-unit-in-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-no-unit-in-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-no-unit-in-source-size-value</title>
<img sizes='(min-width:500px) 50, 100vw' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-percent-in-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-percent-in-source-size-value-novalid.html
index 2864631e091..7d5b7c102d1 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-percent-in-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-percent-in-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-percent-in-source-size-value</title>
<img sizes='(min-width:500px) 50%, 100vw' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-rad-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-rad-source-size-value-novalid.html
index ec98f9d349f..c33365f7548 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-rad-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-rad-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-rad-source-size-value</title>
<img sizes='1rad' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-s-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-s-source-size-value-novalid.html
index a85f14d9190..0aac2f53304 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-s-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-s-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-s-source-size-value</title>
<img sizes='1s' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-scientific-notation-negative-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-scientific-notation-negative-novalid.html
index 8a4d9c66830..816f2fa0e21 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-scientific-notation-negative-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-scientific-notation-negative-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-scientific-notation-negative</title>
<img sizes='-1e+0px' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-scientific-notation-non-integer-in-exponent-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-scientific-notation-non-integer-in-exponent-novalid.html
index 08db943cd92..fac203893e9 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-scientific-notation-non-integer-in-exponent-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-scientific-notation-non-integer-in-exponent-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-scientific-notation-non-integer-in-exponent</title>
<img sizes='1e+1.5px' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-trailing-comma-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-trailing-comma-novalid.html
index 8a6a809375f..29316620ece 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-trailing-comma-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-trailing-comma-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-trailing-comma</title>
<img sizes='(min-width:500px) 500px, 100vw,' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-trailing-junk-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-trailing-junk-novalid.html
index d987fecfc24..deef3b0e436 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-trailing-junk-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-trailing-junk-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-trailing-junk</title>
<img sizes='(min-width:500px) 500px, 100vw, foo bar' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-turn-source-size-value-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-turn-source-size-value-novalid.html
index 6edfd39c8af..4e7870d5b18 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-turn-source-size-value-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-turn-source-size-value-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-turn-source-size-value</title>
<img sizes='1turn' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-two-defaults-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-two-defaults-novalid.html
index ee6ce9f63e3..bb5a144b525 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-two-defaults-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/sizes-microsyntax-two-defaults-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid sizes-microsyntax-two-defaults</title>
<img sizes='500px, 100vw' srcset='x 100w, y 200w' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-after-img-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-after-img-novalid.html
index 3a209dc590d..de9f5461ff6 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-after-img-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-after-img-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-after-img</title>
<picture><img src=x alt><source srcset=x></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-align-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-align-novalid.html
index e1584674f0c..958aea50ee1 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-align-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-align-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-align</title>
<picture><source srcset=x align=left><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-alt-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-alt-novalid.html
index 0bd6646f096..31799a727c4 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-alt-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-alt-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-alt</title>
<picture><source srcset=x alt><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-aria-role-img-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-aria-role-img-novalid.html
index 6f8d130aa1f..d88e29ff93d 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-aria-role-img-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-aria-role-img-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-aria-role-img</title>
<picture><source role=img srcset=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-aria-role-presentation-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-aria-role-presentation-novalid.html
index b0fcbc05e10..13464a01419 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-aria-role-presentation-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-aria-role-presentation-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-aria-role-presentation</title>
<picture><source role=presentation srcset=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-before-and-after-img-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-before-and-after-img-novalid.html
index 3e083105bbc..9b54722b266 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-before-and-after-img-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-before-and-after-img-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-before-and-after-img</title>
<picture><source srcset=x><img src=x alt><source srcset=x></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-border-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-border-novalid.html
index fa746a81d98..c75a2219121 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-border-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-border-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-border</title>
<picture><source srcset=x border=1><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-crossorigin-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-crossorigin-novalid.html
index a4ebb7ecb0d..aadccf96583 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-crossorigin-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-crossorigin-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-crossorigin</title>
<picture><source srcset=x crossorigin><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-height-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-height-novalid.html
index 2eeb159345c..af37ef1f189 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-height-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-height-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-height</title>
<picture><source srcset=x height=100><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-hspace-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-hspace-novalid.html
index a6e717357f7..cf796bd27dd 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-hspace-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-hspace-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-hspace</title>
<picture><source srcset=x hspace=1><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-ismap-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-ismap-novalid.html
index 2c02869e357..a31514f431e 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-ismap-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-ismap-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-ismap</title>
<picture><source srcset=x ismap><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-longdesc-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-longdesc-novalid.html
index c523ef21076..84a6f124db2 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-longdesc-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-longdesc-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-longdesc</title>
<picture><source srcset=x longdesc=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-name-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-name-novalid.html
index dab3247e773..03086474138 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-name-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-name-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-name</title>
<picture><source srcset=x crossorigin><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-novalid.html
index acb6eab05bf..5b2a3837b61 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-no-srcset</title>
<picture><source><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-with-media-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-with-media-novalid.html
index a7625f755a2..a3e68743314 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-with-media-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-with-media-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-no-srcset-with-media</title>
<picture><source media=screen><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-with-sizes-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-with-sizes-novalid.html
index 517c67054b7..503f7d55854 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-with-sizes-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-with-sizes-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-no-srcset-with-sizes</title>
<picture><source sizes=50vw><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-with-type-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-with-type-novalid.html
index 510c7eed6b9..4d21d5b8609 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-with-type-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-no-srcset-with-type-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-no-srcset-with-type</title>
<picture><source type='image/webp'><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-src-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-src-novalid.html
index a5eff2b7019..758a29a9fa5 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-src-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-src-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-src</title>
<picture><source src=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-src-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-src-srcset-novalid.html
index 80714cb86fb..3dbab2194d3 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-src-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-src-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-src-srcset</title>
<picture><source src=x srcset=x><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-h-with-sizes-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-h-with-sizes-novalid.html
index 5da6331e539..91bbf65cfd4 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-h-with-sizes-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-h-with-sizes-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-srcset-h-with-sizes</title>
<picture><source srcset='x 100h, y 200h' sizes=50vw><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-w-and-x-with-sizes-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-w-and-x-with-sizes-novalid.html
index cf6603ea8ff..babdcb6b9be 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-w-and-x-with-sizes-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-w-and-x-with-sizes-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-srcset-w-and-x-with-sizes</title>
<picture><source srcset='x 100w, y 2x' sizes=50vw><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-w-no-sizes-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-w-no-sizes-novalid.html
index 0375c5415f2..94fd3aef229 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-w-no-sizes-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-w-no-sizes-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-srcset-w-no-sizes</title>
<picture><source srcset='x 100w, y 200w'><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-x-with-sizes-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-x-with-sizes-novalid.html
index a8efda291ee..4e3d6795540 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-x-with-sizes-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-srcset-x-with-sizes-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-srcset-x-with-sizes</title>
<picture><source srcset='x 1x, y 2x' sizes=50vw><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-type-srcset-w-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-type-srcset-w-novalid.html
index a9ccaa312b8..7a8fe9af0e1 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-type-srcset-w-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-type-srcset-w-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-type-srcset-w</title>
<picture><source srcset='x 100w, y 200w' type=image/gif><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-usemap-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-usemap-novalid.html
index 603bb472d8a..5eb2fdc66b9 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-usemap-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-usemap-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-usemap</title>
<picture><source srcset=x usemap><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-vspace-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-vspace-novalid.html
index 2e26c73ce44..6bd83d1be99 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-vspace-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-vspace-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-vspace</title>
<picture><source srcset=x vspace=1><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-width-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-width-novalid.html
index 1649b791b29..a481bd1421d 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-width-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/source-width-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid source-width</title>
<picture><source srcset=x width=100><img src=x alt></picture> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-broken-url-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-broken-url-novalid.html
index 82388ab5136..43aa15f7621 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-broken-url-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-broken-url-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-broken-url</title>
<img srcset='http: 1x' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-comma-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-comma-novalid.html
index ff36674849e..94d6e199c69 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-comma-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-comma-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-comma</title>
<img srcset=',' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-css-comment-after-descriptor-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-css-comment-after-descriptor-novalid.html
index 758c3551ca7..8a7360a2e69 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-css-comment-after-descriptor-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-css-comment-after-descriptor-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-css-comment-after-descriptor</title>
<img srcset='x 2x/**/' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-curly-bracket-junk-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-curly-bracket-junk-novalid.html
index 346f160886d..98230eac7b9 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-curly-bracket-junk-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-curly-bracket-junk-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-curly-bracket-junk</title>
<img srcset='x {, y 1x' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-empty-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-empty-novalid.html
index ad8a12a3a03..f511e88e732 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-empty-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-empty-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-empty</title>
<img srcset='' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-function-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-function-novalid.html
index 499a14752b4..aadcc4c6486 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-function-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-function-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-function</title>
<img srcset='x foobar(baz quux, lol), y 1x' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-h-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-h-novalid.html
index 3c381e04eba..66b739688f5 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-h-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-h-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-h</title>
<img srcset='x 1h' sizes=100vw src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-infinity-x-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-infinity-x-novalid.html
index 51aba7b2970..19d679d8e31 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-infinity-x-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-infinity-x-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-infinity-x</title>
<img srcset='x Infinityx' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-leading-comma-multiple-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-leading-comma-multiple-novalid.html
index c715e0e35d0..c9407d1d7ab 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-leading-comma-multiple-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-leading-comma-multiple-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-leading-comma-multiple</title>
<img srcset=',,,x' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-leading-comma-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-leading-comma-novalid.html
index ad138943734..c09dc183534 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-leading-comma-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-leading-comma-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-leading-comma</title>
<img srcset=',x' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-nan-x-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-nan-x-novalid.html
index da7d829dff6..3cd64a69cfc 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-nan-x-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-nan-x-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-nan-x</title>
<img srcset='x NaNx' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-w-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-w-novalid.html
index 0e61668fd88..093552e9a1c 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-w-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-w-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-negative-w</title>
<img srcset='x -1w' sizes=100vw src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-x-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-x-novalid.html
index 08e5fb70a4a..9b69e0c1f81 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-x-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-x-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-negative-x</title>
<img srcset='x -1x' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-zero-w-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-zero-w-novalid.html
index ebc5d346a76..b4edfbe9742 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-zero-w-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-zero-w-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-negative-zero-w</title>
<img srcset='x -0w' sizes=100vw src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-zero-x-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-zero-x-novalid.html
index d1260c027fb..a68489093a9 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-zero-x-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-negative-zero-x-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-negative-zero-x</title>
<img srcset='x -0x' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-non-integer-w-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-non-integer-w-novalid.html
index 05554d8ee37..e09f9f003b7 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-non-integer-w-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-non-integer-w-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-non-integer-w</title>
<img srcset='x 1.5w' sizes=100vw src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-parenthesis-junk-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-parenthesis-junk-novalid.html
index 1459e1610b2..b58caaa0754 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-parenthesis-junk-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-parenthesis-junk-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-parenthesis-junk</title>
<img srcset='x ><(((((o)>, y 1x' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-pipe-junk-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-pipe-junk-novalid.html
index 7c1ee3a0414..9becc4fbabd 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-pipe-junk-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-pipe-junk-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-pipe-junk</title>
<img srcset='x ||, y 1x' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-plus-w-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-plus-w-novalid.html
index c452c91738e..5bc9d91495a 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-plus-w-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-plus-w-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-plus-w</title>
<img srcset='x +1w' sizes=100vw src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-plus-x-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-plus-x-novalid.html
index 7c285635d96..242a0a5eabd 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-plus-x-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-plus-x-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-plus-x</title>
<img srcset='x +1x' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-scientific-notation-w-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-scientific-notation-w-novalid.html
index b1be3575390..e17e4bc6512 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-scientific-notation-w-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-scientific-notation-w-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-scientific-notation-w</title>
<img srcset='x 1e0w' sizes=100vw src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-square-bracket-junk-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-square-bracket-junk-novalid.html
index effc9379673..69e7febbd93 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-square-bracket-junk-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-square-bracket-junk-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-square-bracket-junk</title>
<img srcset='x [, y 1x' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-trailing-comma-multiple-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-trailing-comma-multiple-novalid.html
index 869af64fa5b..978b7d44b11 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-trailing-comma-multiple-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-trailing-comma-multiple-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-trailing-comma-multiple</title>
<img srcset='x,,,' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-trailing-comma-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-trailing-comma-novalid.html
index 9250e468dff..0a0ad83f06f 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-trailing-comma-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-trailing-comma-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-trailing-comma</title>
<img srcset='x,' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-1x-and-omitted-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-1x-and-omitted-novalid.html
index 72bc68e075b..0a381c378ca 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-1x-and-omitted-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-1x-and-omitted-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-unique-descriptors-1x-and-omitted</title>
<img srcset='x 1x, y' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-2x-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-2x-novalid.html
index 9ab38cd2412..d2559446e83 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-2x-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-2x-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-unique-descriptors-2x</title>
<img srcset='x 2x, y 2x' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-integer-and-decimals-x-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-integer-and-decimals-x-novalid.html
index 76d6eeccf49..22130738061 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-integer-and-decimals-x-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-integer-and-decimals-x-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-unique-descriptors-integer-and-decimals-x</title>
<img srcset='x 1x, y 1.0x' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-w-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-w-novalid.html
index d5c8fdab130..c561e104143 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-w-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-unique-descriptors-w-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-unique-descriptors-w</title>
<img srcset='x 1w, y 1w' sizes=100vw src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-uppercase-w-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-uppercase-w-novalid.html
index 51601192f3f..d587be5f5ee 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-uppercase-w-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-uppercase-w-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-uppercase-w</title>
<img srcset='x 1W' sizes=100vw src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-w-and-h-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-w-and-h-novalid.html
index 84ef6ae2bb8..036f5a46e45 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-w-and-h-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-w-and-h-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-w-and-h</title>
<img srcset='x 1w 1h' sizes=100vw src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-w-and-no-descriptor-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-w-and-no-descriptor-novalid.html
index 78c44834ef3..b4084fbd829 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-w-and-no-descriptor-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-w-and-no-descriptor-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-w-and-no-descriptor</title>
<img srcset='x 1w, y' sizes=100vw src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-x-and-h-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-x-and-h-novalid.html
index 4c26cfaf3b9..54d4d1f03ee 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-x-and-h-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-x-and-h-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-x-and-h</title>
<img srcset='x 1x 1h' sizes=100vw src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-x-and-w-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-x-and-w-novalid.html
index 3c0cd89b9fe..2dedd9c2c82 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-x-and-w-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-x-and-w-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-x-and-w</title>
<img srcset='x 1x 1w' sizes=100vw src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-zero-w-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-zero-w-novalid.html
index 908343f81b2..2f1a5abe9d9 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-zero-w-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-zero-w-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-zero-w</title>
<img srcset='x 0w' sizes=100vw src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-zero-x-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-zero-x-novalid.html
index fbf7e98e698..39b61077272 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-zero-x-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/srcset-microsyntax-zero-x-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid srcset-microsyntax-zero-x</title>
<img srcset='x 0x' src=x alt> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/svg-image-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/svg-image-srcset-novalid.html
index 22950c23e83..fd6289fd7ea 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/svg-image-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/svg-image-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid svg-image-srcset</title>
<svg><image xlink:href=x srcset=x width=1 height=1 /></svg> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/track-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/track-srcset-novalid.html
index 99dd22be0fd..2668a8400ed 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/track-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/track-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid track-srcset</title>
<video src=x><track src=x srcset=x></video> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-media-src-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-media-src-novalid.html
index f065a12f493..a18d20389d2 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-media-src-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-media-src-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid video-source-media-src</title>
<video><source media=screen src=x></video> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-sizes-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-sizes-srcset-novalid.html
index a20fd2db626..be370c75cf7 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-sizes-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-sizes-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid video-source-sizes-srcset</title>
<video><source sizes=50vw srcset='x 100w'></video> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-srcset-novalid.html
index bde4a64b8f6..440a2885908 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid video-source-srcset</title>
<video><source srcset=x></video> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-srcset-src-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-srcset-src-novalid.html
index f7bf4844654..588581fce79 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-srcset-src-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-source-srcset-src-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid video-source-srcset-src</title>
<video><source srcset=x src=x></video> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-srcset-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-srcset-novalid.html
index 2115044869d..7ff3e3ecddb 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-srcset-novalid.html
+++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/picture/video-srcset-novalid.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
<title>invalid video-srcset</title>
<video src=x srcset=x></video> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/messages.json b/tests/wpt/web-platform-tests/conformance-checkers/messages.json
index 2dcd3830d72..4439888f175 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/messages.json
+++ b/tests/wpt/web-platform-tests/conformance-checkers/messages.json
@@ -1624,6 +1624,7 @@
"html/elements/picture/parent-dl-novalid.html": "Element \u201cpicture\u201d not allowed as child of element \u201cdl\u201d in this context. (Suppressing further errors from this subtree.)",
"html/elements/picture/parent-hgroup-novalid.html": "Element \u201cpicture\u201d not allowed as child of element \u201chgroup\u201d in this context. (Suppressing further errors from this subtree.)",
"html/elements/picture/parent-noscript-in-head-novalid.html": "Bad start tag in \u201cpicture\u201d in \u201cnoscript\u201d in \u201chead\u201d.",
+ "html/elements/picture/parent-rp-novalid.html": "Element \u201cpicture\u201d not allowed as child of element \u201crp\u201d in this context. (Suppressing further errors from this subtree.)",
"html/elements/picture/parent-ul-novalid.html": "Element \u201cpicture\u201d not allowed as child of element \u201cul\u201d in this context. (Suppressing further errors from this subtree.)",
"html/elements/picture/picture-align-novalid.html": "Attribute \u201calign\u201d not allowed on element \u201cpicture\u201d at this point.",
"html/elements/picture/picture-alt-novalid.html": "Attribute \u201calt\u201d not allowed on element \u201cpicture\u201d at this point.",
diff --git a/tests/wpt/web-platform-tests/conformance-checkers/tools/picture.py b/tests/wpt/web-platform-tests/conformance-checkers/tools/picture.py
index 5b03f67ac98..417eff14368 100644
--- a/tests/wpt/web-platform-tests/conformance-checkers/tools/picture.py
+++ b/tests/wpt/web-platform-tests/conformance-checkers/tools/picture.py
@@ -2,6 +2,7 @@
import os
ccdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
template = """<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /conformance-checkers/tools/picture.py. -->
<meta charset=utf-8>
"""
@@ -44,6 +45,7 @@ errors = {
"parent-dl": "<dl><picture><img src=x alt></picture></dl>",
"parent-hgroup": "<hgroup><h1>x</h1><picture><img src=x alt></picture></hgroup>",
"parent-noscript-in-head": "<noscript><picture><img src=x alt></picture></noscript>",
+ "parent-rp": "<ruby>x<rp><picture><img src=x alt></picture></rp><rt>x</rt><rp>x</rp></ruby>",
# invalid html syntax
"html-syntax-source-end-tag": "<picture><source srcset=x></source><img src=x alt></picture>",
"html-syntax-img-end-tag": "<picture><img src=x alt></img></picture>",
@@ -194,7 +196,6 @@ errors = {
"srcset-microsyntax-negative-x": "<img srcset='x -1x' src=x alt>",
"srcset-microsyntax-zero-x": "<img srcset='x 0x' src=x alt>",
"srcset-microsyntax-negative-zero-x": "<img srcset='x -0x' src=x alt>",
- "srcset-microsyntax-leading-dot-x": "<img srcset='x .5x' src=x alt>",
"srcset-microsyntax-nan-x": "<img srcset='x NaNx' src=x alt>",
"srcset-microsyntax-infinity-x": "<img srcset='x Infinityx' src=x alt>",
"srcset-microsyntax-x-and-w": "<img srcset='x 1x 1w' sizes=100vw src=x alt>",
@@ -247,7 +248,6 @@ non_errors = {
"parent-template-in-body": "<template><picture><img src=x alt></picture></template>",
"parent-ruby": "<ruby><picture><img src=x alt></picture><rt>x</rt></ruby>",
"parent-rt": "<ruby>x<rt><picture><img src=x alt></picture></rt></ruby>",
- "parent-rp": "<ruby>x<rp><picture><img src=x alt></picture></rp><rt>x</rt><rp>x</rp></ruby>",
"parent-a": "<a href=x><picture><img src=x alt></picture></a>",
"parent-button": "<button><picture><img src=x alt></picture></button>",
"parent-td": "<table><tr><td><picture><img src=x alt></picture></table>",
@@ -289,7 +289,7 @@ non_errors = {
"sizes-microsyntax-media-min-width": "<img sizes='(min-width:500px) 500px, 100vw' srcset='x 100w, y 200w' src=x alt>",
"sizes-microsyntax-multiple-source-sizes": "<img sizes='(min-width:1500px) 500px, (min-width:1000px) 33vw, (min-width:500px) 50vw, 100vw' srcset='x 100w, y 200w' src=x alt>",
"sizes-microsyntax-no-default": "<img sizes='(min-width:500px) 500px' srcset='x 100w, y 200w' src=x alt>",
- "sizes-microsyntax-media-not-and": "<img sizes='not (width:500px) and (width:500px) 500px' srcset='x 100w, y 200w' src=x alt>",
+ "sizes-microsyntax-media-not-and": "<img sizes='(not (width:500px)) and (width:500px) 500px' srcset='x 100w, y 200w' src=x alt>",
"sizes-microsyntax-only-default": "<img sizes='500px' srcset='x 100w, y 200w' src=x alt>",
"sizes-microsyntax-calc-in-default": "<img sizes='calc(500px)' srcset='x 100w, y 200w' src=x alt>",
"sizes-microsyntax-calc-in-source-size-value": "<img sizes='(min-width:500px) calc(500px)' srcset='x 100w, y 200w' src=x alt>",
@@ -328,6 +328,7 @@ non_errors = {
"srcset-microsyntax-percent-escaped-space-in-url": "<img srcset='%20' src=x alt>",
"srcset-microsyntax-w": "<img srcset='x 1w' sizes=100vw src=x alt>",
"srcset-microsyntax-x": "<img srcset='x 1x' src=x alt>",
+ "srcset-microsyntax-leading-dot-x": "<img srcset='x .5x' src=x alt>",
"srcset-microsyntax-non-integer-x": "<img srcset='x 1.5x' src=x alt>",
"srcset-microsyntax-scientific-notation-x": "<img srcset='x 1e0x' src=x alt>",
"srcset-microsyntax-scientific-notation-decimals-x": "<img srcset='x 1.5e0x' src=x alt>",
diff --git a/tests/wpt/web-platform-tests/credential-management/federatedcredential-framed-get.sub.https.html b/tests/wpt/web-platform-tests/credential-management/federatedcredential-framed-get.sub.https.html
index 08688ab440b..a7c87e2331f 100644
--- a/tests/wpt/web-platform-tests/credential-management/federatedcredential-framed-get.sub.https.html
+++ b/tests/wpt/web-platform-tests/credential-management/federatedcredential-framed-get.sub.https.html
@@ -2,19 +2,23 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
+assert_precondition('FederatedCredential' in window, "`FederatedCredential` is supported.");
+
+// Ensure that the check is "same origin", not "same origin-domain".
+document.domain = window.location.hostname;
+
function create_iframe_test(origin, expectation) {
return function (t) {
- assert_true(!!navigator.credentials, "`navigator.credentials` is supported.");
window.addEventListener("load", _ => {
var iframe = document.createElement("iframe");
iframe.src = origin + "/credential-management/support/federatedcredential-get.html";
window.addEventListener("message", t.step_func(e => {
if (e.source == iframe.contentWindow) {
- assert_equals(e.data.status, expectation);
- if (expectation == "rejected") {
+ if (expectation == "blocked") {
assert_equals(e.data.exception, "NotAllowedError");
} else {
- assert_equals(e.data.exception, null);
+ if (e.data.exception)
+ assert_not_equals(e.data.exception, "NotAllowedError");
}
t.done();
}
@@ -26,14 +30,12 @@ function create_iframe_test(origin, expectation) {
function create_nested_iframe_test(outerOrigin, innerOrigin, expectation) {
return function (t) {
- assert_true(!!navigator.credentials, "`navigator.credentials` is supported.");
window.addEventListener("load", _ => {
var iframe = document.createElement("iframe");
iframe.src = outerOrigin + "/credential-management/support/echoing-nester.html?origin=" + innerOrigin + "&file=federatedcredential-get.html";
window.addEventListener("message", t.step_func(e => {
if (e.source == iframe.contentWindow) {
- assert_equals(e.data.status, expectation);
- if (expectation == "rejected") {
+ if (expectation == "blocked") {
assert_equals(e.data.exception, "NotAllowedError");
} else {
assert_equals(e.data.exception, null);
@@ -50,25 +52,25 @@ const SAME_ORIGIN = window.origin;
const CROSS_ORIGIN = "https://{{domains[élève]}}:{{ports[https][0]}}";
async_test(
- create_iframe_test(SAME_ORIGIN, "resolved"),
+ create_iframe_test(SAME_ORIGIN, "allowed"),
"Same-origin IFrame does not throw.");
async_test(
- create_iframe_test(CROSS_ORIGIN, "rejected"),
+ create_iframe_test(CROSS_ORIGIN, "blocked"),
"Cross-origin IFrame throws 'NotAllowedError'.");
async_test(
- create_nested_iframe_test(SAME_ORIGIN, SAME_ORIGIN, "resolved"),
+ create_nested_iframe_test(SAME_ORIGIN, SAME_ORIGIN, "allowed"),
"Same-origin IFrame in same-origin IFrame does not throw.");
async_test(
- create_nested_iframe_test(SAME_ORIGIN, CROSS_ORIGIN, "rejected"),
+ create_nested_iframe_test(SAME_ORIGIN, CROSS_ORIGIN, "blocked"),
"Same-origin IFrame in same-origin IFrame throws 'NotAllowedError'.");
async_test(
- create_nested_iframe_test(CROSS_ORIGIN, SAME_ORIGIN, "rejected"),
+ create_nested_iframe_test(CROSS_ORIGIN, SAME_ORIGIN, "blocked"),
"Cross-origin IFrame in same-origin IFrame throws 'NotAllowedError'.");
async_test(
- create_nested_iframe_test(CROSS_ORIGIN, CROSS_ORIGIN, "rejected"),
+ create_nested_iframe_test(CROSS_ORIGIN, CROSS_ORIGIN, "blocked"),
"Cross-origin IFrame in same-cross-origin throws 'NotAllowedError'.");
</script>
diff --git a/tests/wpt/web-platform-tests/credential-management/passwordcredential-framed-get.sub.https.html b/tests/wpt/web-platform-tests/credential-management/passwordcredential-framed-get.sub.https.html
index 04bb16a2670..d86c6e09c70 100644
--- a/tests/wpt/web-platform-tests/credential-management/passwordcredential-framed-get.sub.https.html
+++ b/tests/wpt/web-platform-tests/credential-management/passwordcredential-framed-get.sub.https.html
@@ -2,19 +2,23 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
+assert_precondition('PasswordCredential' in window, "`PasswordCredential` is supported.");
+
+// Ensure that the check is "same origin", not "same origin-domain".
+document.domain = window.location.hostname;
+
function create_iframe_test(origin, expectation) {
return function (t) {
- assert_true(!!navigator.credentials, "`navigator.credentials` is supported.");
window.addEventListener("load", _ => {
var iframe = document.createElement("iframe");
iframe.src = origin + "/credential-management/support/passwordcredential-get.html";
window.addEventListener("message", t.step_func(e => {
if (e.source == iframe.contentWindow) {
- assert_equals(e.data.status, expectation);
- if (expectation == "rejected") {
+ if (expectation == "blocked") {
assert_equals(e.data.exception, "NotAllowedError");
} else {
- assert_equals(e.data.exception, null);
+ if (e.data.exception)
+ assert_not_equals(e.data.exception, "NotAllowedError");
}
t.done();
}
@@ -26,14 +30,12 @@ function create_iframe_test(origin, expectation) {
function create_nested_iframe_test(outerOrigin, innerOrigin, expectation) {
return function (t) {
- assert_true(!!navigator.credentials, "`navigator.credentials` is supported.");
window.addEventListener("load", _ => {
var iframe = document.createElement("iframe");
iframe.src = outerOrigin + "/credential-management/support/echoing-nester.html?origin=" + innerOrigin + "&file=passwordcredential-get.html";
window.addEventListener("message", t.step_func(e => {
if (e.source == iframe.contentWindow) {
- assert_equals(e.data.status, expectation);
- if (expectation == "rejected") {
+ if (expectation == "blocked") {
assert_equals(e.data.exception, "NotAllowedError");
} else {
assert_equals(e.data.exception, null);
@@ -50,25 +52,25 @@ const SAME_ORIGIN = window.origin;
const CROSS_ORIGIN = "https://{{domains[élève]}}:{{ports[https][0]}}";
async_test(
- create_iframe_test(SAME_ORIGIN, "resolved"),
+ create_iframe_test(SAME_ORIGIN, "allowed"),
"Same-origin IFrame does not throw.");
async_test(
- create_iframe_test(CROSS_ORIGIN, "rejected"),
+ create_iframe_test(CROSS_ORIGIN, "blocked"),
"Cross-origin IFrame throws 'NotAllowedError'.");
async_test(
- create_nested_iframe_test(SAME_ORIGIN, SAME_ORIGIN, "resolved"),
+ create_nested_iframe_test(SAME_ORIGIN, SAME_ORIGIN, "allowed"),
"Same-origin IFrame in same-origin IFrame does not throw.");
async_test(
- create_nested_iframe_test(SAME_ORIGIN, CROSS_ORIGIN, "rejected"),
- "Same-origin IFrame in same-origin IFrame throws.");
+ create_nested_iframe_test(SAME_ORIGIN, CROSS_ORIGIN, "blocked"),
+ "Same-origin IFrame in same-origin IFrame throws 'NotAllowedError'.");
async_test(
- create_nested_iframe_test(CROSS_ORIGIN, SAME_ORIGIN, "rejected"),
- "Cross-origin IFrame in same-origin IFrame throws.");
+ create_nested_iframe_test(CROSS_ORIGIN, SAME_ORIGIN, "blocked"),
+ "Cross-origin IFrame in same-origin IFrame throws 'NotAllowedError'.");
async_test(
- create_nested_iframe_test(CROSS_ORIGIN, CROSS_ORIGIN, "rejected"),
- "Cross-origin IFrame in same-cross-origin throws.");
+ create_nested_iframe_test(CROSS_ORIGIN, CROSS_ORIGIN, "blocked"),
+ "Cross-origin IFrame in same-cross-origin throws 'NotAllowedError'.");
</script>
diff --git a/tests/wpt/web-platform-tests/css/css-position/position-absolute-dynamic-static-position-inline.html b/tests/wpt/web-platform-tests/css/css-position/position-absolute-dynamic-static-position-inline.html
new file mode 100644
index 00000000000..c0f9ac07188
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-position/position-absolute-dynamic-static-position-inline.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://www.w3.org/TR/css-position-3/" />
+<meta name="assert" content="This test checks that the static-position of an absolute positioned element changes, if the display value changes from inline to block." />
+<p>Test passes if there is a filled green square.</p>
+<div style="position: relative; line-height: 0;">
+ <div style="width: 100px; height: 50px; display: inline-block; background: green;"></div>
+ <div id="target" style="width: 100px; height: 50px; display: inline; position: absolute; background: green;"></div>
+</div>
+<script>
+document.body.offsetTop;
+document.getElementById('target').style.display = 'block';
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-007.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-007.tentative.html
index fb452666e3c..fb452666e3c 100644
--- a/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-007.html
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-007.tentative.html
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-008.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-008.tentative.html
index 88aee13dc8c..88aee13dc8c 100644
--- a/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-008.html
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-008.tentative.html
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-009.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-009.tentative.html
index b3627cca755..b3627cca755 100644
--- a/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-009.html
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-009.tentative.html
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-011.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-011.tentative.html
index 0cc20b0cdcd..0cc20b0cdcd 100644
--- a/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-011.html
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-011.tentative.html
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html b/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html
index a34fd76fea4..0ffd6f4c2b8 100644
--- a/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html
@@ -31,6 +31,9 @@ test_pseudo_computed_value("::marker", "font-variant-numeric", "slashed-zero");
test_pseudo_computed_value("::marker", "font-variant-position", "sub");
test_pseudo_computed_value("::marker", "font-weight", "900");
+// ::marker supports `white-space`
+test_pseudo_computed_value("::marker", "white-space", "nowrap");
+
// ::marker supports `color`
test_pseudo_computed_value("::marker", "color", "rgb(0, 100, 200)");
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/ortho-writing-mode-001.html b/tests/wpt/web-platform-tests/css/css-sizing/ortho-writing-mode-001.html
deleted file mode 100644
index 9342802645f..00000000000
--- a/tests/wpt/web-platform-tests/css/css-sizing/ortho-writing-mode-001.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE html>
-<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
-<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-sizing-3/#intrinsic-sizes" title="first paragraph">
-<link rel="help" href="https://www.w3.org/TR/css-writing-modes-4/#orthogonal-auto">
-<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
-<meta name="flags" content="" />
-<meta name="assert" content="The intrinsic size of an orthogonal child is its shrink to fit size after layout" />
-
-<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
-
-<div style="width:min-content; background:red;">
- <div style="writing-mode:vertical-rl; background:green;">
- <div style="margin-right:50%; width:50px; height:100px;"></div>
- </div>
-</div>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/README.md b/tests/wpt/web-platform-tests/css/css-transitions/README.md
index f11374e47b1..f72f11dccae 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/README.md
+++ b/tests/wpt/web-platform-tests/css/css-transitions/README.md
@@ -33,7 +33,7 @@ Using `support/property.js` test suites compile a list of animatable properties.
}
```
-For each compiled test case the test runner identifies computed initial and target values. If they match, no transition will take place, because the property couldn't be parsed. If after starting the transition the computed style matches the target value, the browser applied that value immedately and no transition will take place. During the transition the computed style may match neither initial nor target value (unless it's a discrete transition), or there was no transition.
+For each compiled test case the test runner identifies computed initial and target values. If they match, no transition will take place, because the property couldn't be parsed. If after starting the transition the computed style matches the target value, the browser applied that value immediately and no transition will take place. During the transition the computed style may match neither initial nor target value (unless it's a discrete transition), or there was no transition.
Besides value-assertions, the suites compare received TransitionEnd events. While the values are only matched against computed initial and target values, expected TransitionEnd events are declared explicitly. This can (and will) lead to some test failures that are arguably not a failure (mainly because the specification didn't cover the specific case). Transitioning `color` *may* (or not, depending on browser) also run a transition for `background-color`, as the latter's default value is `currentColor`. This suite considers those implicit transitions a failure. If it truly is a failure or not, should be decided in the specification (and tests updated accordingly).
diff --git a/tests/wpt/web-platform-tests/css/css-values/minmax-length-computed.html b/tests/wpt/web-platform-tests/css/css-values/minmax-length-computed.html
index 41088449546..2d6e24e5194 100644
--- a/tests/wpt/web-platform-tests/css/css-values/minmax-length-computed.html
+++ b/tests/wpt/web-platform-tests/css/css-values/minmax-length-computed.html
@@ -13,12 +13,12 @@
<script>
const property = 'letter-spacing';
-function test_length_equals(value, expected) {
+function test_length_equals(value, expected, titleExtra) {
const reference = document.getElementById('reference');
reference.style[property] = '';
reference.style[property] = expected;
const computed = getComputedStyle(reference)[property];
- test_computed_value(property, value, computed);
+ test_computed_value(property, value, computed, titleExtra);
}
// Identity tests
@@ -96,8 +96,8 @@ test_length_equals('max(15px, 1em)', '20px');
test_length_equals('max(25px, 1em)', '25px');
document.getElementById('container').style.fontSize = '10px';
-test_length_equals('min(15px, 1em)', '10px');
-test_length_equals('max(15px, 2em)', '20px');
+test_length_equals('min(15px, 1em)', '10px', 'fontSize=10px');
+test_length_equals('max(15px, 2em)', '20px', 'fontSize=10px');
document.getElementById('container').style.fontSize = '20px';
diff --git a/tests/wpt/web-platform-tests/css/css-values/minmax-length-percent-computed.html b/tests/wpt/web-platform-tests/css/css-values/minmax-length-percent-computed.html
index 881905ddd56..acd0f2b31bb 100644
--- a/tests/wpt/web-platform-tests/css/css-values/minmax-length-percent-computed.html
+++ b/tests/wpt/web-platform-tests/css/css-values/minmax-length-percent-computed.html
@@ -13,12 +13,12 @@
<script>
const property = 'margin-left';
-function test_length_percent_equals(value, expected) {
+function test_length_percent_equals(value, expected, titleExtra) {
const reference = document.getElementById('reference');
reference.style[property] = '';
reference.style[property] = expected;
const computed = getComputedStyle(reference)[property];
- test_computed_value(property, value, computed);
+ test_computed_value(property, value, computed, titleExtra);
}
// Identity tests
@@ -60,10 +60,10 @@ test_length_percent_equals('max(20px, 10%)', '40px');
test_length_percent_equals('max(1em, 10%)', '40px');
document.getElementById('container').style.width = '100px';
-test_length_percent_equals('min(20px, 10%)', '10px');
-test_length_percent_equals('min(1em, 10%)', '10px');
-test_length_percent_equals('max(20px, 10%)', '20px');
-test_length_percent_equals('max(1em, 10%)', '20px');
+test_length_percent_equals('min(20px, 10%)', '10px', 'width=100px');
+test_length_percent_equals('min(1em, 10%)', '10px', 'width=100px');
+test_length_percent_equals('max(20px, 10%)', '20px', 'width=100px');
+test_length_percent_equals('max(1em, 10%)', '20px', 'width=100px');
document.getElementById('container').style.width = '400px';
// Comparisons between different mixings
diff --git a/tests/wpt/web-platform-tests/css/cssom/border-shorthand-serialization.html b/tests/wpt/web-platform-tests/css/cssom/border-shorthand-serialization.html
new file mode 100644
index 00000000000..9b5821563c4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/border-shorthand-serialization.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<html>
+<link rel="author" title="Erik Nordin" href="mailto:enordin@mozilla.com">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#propdef-border">
+<link rel="help" href="https://drafts.csswg.org/cssom-1/#serialize-a-css-declaration-block">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1594241">
+<meta charset="utf-8">
+<title>serialization of border shorthand</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style id="target">
+ .a {
+ border-width: 1px;
+ border-style: solid;
+ border-color: black;
+ }
+ .b {
+ border-width: 1px;
+ border-style: solid;
+ border-color: black;
+ border-image: linear-gradient(white,black);
+ }
+ .c {
+ border: 1px solid black;
+ }
+</style>
+<script>
+ test(function() {
+ let rule = document.getElementById('target').sheet.cssRules[0];
+ assert_equals(rule.style.border, "", "border shorthand isn't serialized if border-image longhands are not initial");
+ }, "Declaration with border longhands is not serialized to a border shorthand declaration.");
+ test(function() {
+ let rule = document.getElementById('target').sheet.cssRules[1];
+ assert_equals(rule.style.border, "", "border shorthand isn't serialized if border-image longhands are not initial");
+ }, "Declaration with border longhands and border-image is not serialized to a border shorthand declaration.");
+ test(function() {
+ let rule = document.getElementById('target').sheet.cssRules[2];
+ assert_not_equals(rule.style.border, "", "border shorthand ");
+ assert_equals(rule.cssText, ".c { border: 1px solid black; }");
+ }, "Border shorthand is serialized correctly if all border-image-* are set to their initial specified values.");
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/support/computed-testcommon.js b/tests/wpt/web-platform-tests/css/support/computed-testcommon.js
index c7c7e073203..43851cb87fc 100644
--- a/tests/wpt/web-platform-tests/css/support/computed-testcommon.js
+++ b/tests/wpt/web-platform-tests/css/support/computed-testcommon.js
@@ -10,14 +10,10 @@
* or an array of permitted computed value.
* If omitted, defaults to specified.
*/
-function test_computed_value(property, specified, computed) {
+function test_computed_value(property, specified, computed, titleExtra) {
if (!computed)
computed = specified;
- let computedDesc = "'" + computed + "'";
- if (Array.isArray(computed))
- computedDesc = '[' + computed.map(e => "'" + e + "'").join(' or ') + ']';
-
test(() => {
const target = document.getElementById('target');
assert_true(property in getComputedStyle(target), property + " doesn't seem to be supported in the computed style");
@@ -37,18 +33,13 @@ function test_computed_value(property, specified, computed) {
assert_equals(getComputedStyle(target)[property], readValue,
'computed value should round-trip');
}
- }, "Property " + property + " value '" + specified + "' computes to " +
- computedDesc);
+ }, `Property ${property} value '${specified}'${titleExtra ? ' ' + titleExtra : ''}`);
}
-function test_pseudo_computed_value(pseudo, property, specified, computed) {
+function test_pseudo_computed_value(pseudo, property, specified, computed, titleExtra) {
if (!computed)
computed = specified;
- let computedDesc = "'" + computed + "'";
- if (Array.isArray(computed))
- computedDesc = '[' + computed.map(e => "'" + e + "'").join(' or ') + ']';
-
test(() => {
assert_true(/^::\w+$/.test(pseudo), pseudo + " doesn't seem to be a pseudo-element");
const styleElement = document.createElement("style");
@@ -78,6 +69,5 @@ function test_pseudo_computed_value(pseudo, property, specified, computed) {
} finally {
document.documentElement.removeChild(styleElement);
}
- }, "Property " + property + " value '" + specified + "' computes to " +
- computedDesc + " in " + pseudo);
+ }, `Property ${property} value '${specified}' in ${pseudo}${titleExtra ? ' ' + titleExtra : ''}`);
}
diff --git a/tests/wpt/web-platform-tests/css/tools/apiclient/README.md b/tests/wpt/web-platform-tests/css/tools/apiclient/README.md
index 528625e4527..6e332b852ad 100644
--- a/tests/wpt/web-platform-tests/css/tools/apiclient/README.md
+++ b/tests/wpt/web-platform-tests/css/tools/apiclient/README.md
@@ -3,7 +3,7 @@ apiclient
Client class for calling http+json APIs in Python. Requires Python 2.7.
-Suports json home pages per:
+Supports json home pages per:
http://tools.ietf.org/html/draft-nottingham-json-home-03
@@ -48,7 +48,7 @@ Get a named APIResource.
**APIClient.setVersion(name, version)**
-Set the request version identifier for a specific resource. If not set, the default version identifer will be used.
+Set the request version identifier for a specific resource. If not set, the default version identifier will be used.
**APIClient.setAccept(name, mimeType)**
diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/testdriver-extension-tutorial.md b/tests/wpt/web-platform-tests/docs/writing-tests/testdriver-extension-tutorial.md
index 262e3943536..92ce939f09f 100644
--- a/tests/wpt/web-platform-tests/docs/writing-tests/testdriver-extension-tutorial.md
+++ b/tests/wpt/web-platform-tests/docs/writing-tests/testdriver-extension-tutorial.md
@@ -92,8 +92,8 @@ The main thing here is the `postMessage` argument. The first argument is an obje
- `action`: the name of the testdriver command this defines (in this case, `set_window_rect`)
- any other things you want to pass to the next point of execution (in this case, the x, y coordinates and the width and height)
-<!-- The pending promise needs to be there as it is resolved when the window recieves a completion message from the executor. -->
-The pending promise is out of scope of this function and is resolved when the window recieves a completion message from the executor.
+<!-- The pending promise needs to be there as it is resolved when the window receives a completion message from the executor. -->
+The pending promise is out of scope of this function and is resolved when the window receives a completion message from the executor.
This happens here in the same file:
```javascript
diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/testdriver.md b/tests/wpt/web-platform-tests/docs/writing-tests/testdriver.md
index 6b398b993b6..bc1cf8dcad1 100644
--- a/tests/wpt/web-platform-tests/docs/writing-tests/testdriver.md
+++ b/tests/wpt/web-platform-tests/docs/writing-tests/testdriver.md
@@ -101,7 +101,7 @@ Usage: `test_driver.click(element)`
This function causes a click to occur on the target element (an
`Element` object), potentially scrolling the document to make it
possible to click it. It returns a `Promise` that resolves after the
-click has occured or rejects if the element cannot be clicked (for
+click has occurred or rejects if the element cannot be clicked (for
example, it is obscured by an element on top of it).
Note that if the element to be clicked does not have a unique ID, the
diff --git a/tests/wpt/web-platform-tests/dom/svg-insert-crash.html b/tests/wpt/web-platform-tests/dom/svg-insert-crash.html
new file mode 100644
index 00000000000..539fb1fae70
--- /dev/null
+++ b/tests/wpt/web-platform-tests/dom/svg-insert-crash.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link rel="author" title="Mason Freed" href="mailto:masonfreed@chromium.org">
+<link rel="help" href="https://crbug.com/1029262">
+<meta name="assert" content="The renderer should not crash.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<svg>
+ <!-- Note that the SVG in the data URL below is intentionally malformed: -->
+ <feImage xlink:href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><rect"/>
+</svg>
+
+<script>
+async_test(t => {
+ window.onload = t.step_func_done();
+}, 'The renderer should not crash.');
+</script>
diff --git a/tests/wpt/web-platform-tests/dpub-aam/README.md b/tests/wpt/web-platform-tests/dpub-aam/README.md
index ce480494440..2805b143bda 100644
--- a/tests/wpt/web-platform-tests/dpub-aam/README.md
+++ b/tests/wpt/web-platform-tests/dpub-aam/README.md
@@ -3,7 +3,7 @@ dpub-aam: Tests for the DPUB-ARIA Accessibility Mapping Recommendation
The [DPUB ARIA Recommendation](https://www.w3.org/TR/dpub-aam-1.0)
define extensions to HTML4/5 for support of extended semantics. These
-semantics make it easier for Assistive Technologies to intepret and
+semantics make it easier for Assistive Technologies to interpret and
present content to users with varying physical and cognitive abilities.
The purpose of these tests is to help ensure that user agents support the
diff --git a/tests/wpt/web-platform-tests/dpub-aria/README.md b/tests/wpt/web-platform-tests/dpub-aria/README.md
index b2ffb99fd51..cf76613c6b9 100644
--- a/tests/wpt/web-platform-tests/dpub-aria/README.md
+++ b/tests/wpt/web-platform-tests/dpub-aria/README.md
@@ -3,7 +3,7 @@ dpub-aria: Tests for the DPUB-ARIA Recommendations
The [DPUB ARIA Recommendation](https://www.w3.org/TR/dpub-aria-1.0)
define extensions to HTML4/5 for support of extended semantics. These
-semantics make it easier for Assistive Technologies to intepret and
+semantics make it easier for Assistive Technologies to interpret and
present content to users with varying physical and cognitive abilities.
The purpose of these tests is to help ensure that user agents support the
diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-timing-iframe-camera.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-timing-iframe-camera.https.sub.html
new file mode 100644
index 00000000000..8ea5d77cfec
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-timing-iframe-camera.https.sub.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<script>
+window.onmessage = m => {
+ navigator.mediaDevices.getUserMedia({video: true})
+ .then(() => 'ok')
+ .catch(e => e.name)
+ .then(r => {
+ window.parent.postMessage({
+ id: m.data.id,
+ result: r
+ }, '*');
+ });
+}
+</script> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-timing.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-timing.https.sub.html
new file mode 100644
index 00000000000..c78d16132bc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-timing.https.sub.html
@@ -0,0 +1,69 @@
+<!doctype html>
+<html>
+ <header>
+ <title>allow/sandbox attr changed after document creation, before response</title>
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+ <script>
+ let lastCallbackId = 0;
+ const callbacks = {};
+
+ function postMessageToFrame(frame, cb) {
+ var id = ++lastCallbackId;
+ callbacks[id] = cb;
+ frame.contentWindow.postMessage({id:id}, '*');
+ step_timeout(() => {
+ if (id in callbacks) {
+ callbacks[id]('timeout');
+ delete callbacks[id];
+ }
+ }, 1000);
+ }
+
+ window.onmessage = function(e) {
+ const message = e.data;
+ const id = message['id'];
+ const callback = callbacks[id];
+ delete callbacks[id];
+ callback(message.result);
+ };
+ // @param {string} url
+ // @param {Function} iframe_pre_nav_callback - a callback with signature (iframe) => () which gets
+ // triggered before setting src attribute.
+ // @param {Function} iframe_post_nav_callback - a callback with signature (iframe) => () which gets
+ // triggered after setting src attribute but before commit
+ // of navigation.
+ // @param {Function} result_handler - a callback that handles the result posted back from iframe.
+ // @param {string} test_name
+ function timing_test(url,
+ iframe_pre_nav_callback,
+ iframe_post_nav_callback,
+ result_handler, test_name) {
+ async_test((t) => {
+ const iframe = document.createElement('iframe');
+ document.body.appendChild(iframe);
+ iframe_pre_nav_callback(iframe);
+ iframe.src = url;
+ iframe_post_nav_callback(iframe);
+ iframe.onload = t.step_func(() => {
+ postMessageToFrame(iframe, t.step_func_done(result_handler));
+ });
+ }, test_name);
+ }
+
+ const path = location.pathname.substring(0, location.pathname.lastIndexOf('/') + 1);
+ const same_origin = path;
+ const cross_origin = "https://{{domains[www1]}}:{{ports[https][0]}}" + path;
+
+ const cameraUrl = 'feature-policy-frame-policy-timing-iframe-camera.https.sub.html';
+ function disallowCamera(iframe) { iframe.allow = "camera 'none'"; }
+ function allowCamera(iframe) { iframe.allow = 'camera *'; }
+ function verifyCamera(result) { assert_equals(result, 'NotAllowedError'); }
+ timing_test(same_origin + cameraUrl, disallowCamera, allowCamera, verifyCamera, 'allow attr timing test same origin');
+ timing_test(cross_origin + cameraUrl, disallowCamera, allowCamera, verifyCamera, 'allow attr timing test diff origin');
+ </script>
+ </header>
+ <body>
+ <div id="log"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/fetch/content-type/README.md b/tests/wpt/web-platform-tests/fetch/content-type/README.md
index 3a9d1bd7266..f553b7ee8e6 100644
--- a/tests/wpt/web-platform-tests/fetch/content-type/README.md
+++ b/tests/wpt/web-platform-tests/fetch/content-type/README.md
@@ -4,7 +4,7 @@ An array of tests. Each test has these fields:
* `contentType`: an array of values for the `Content-Type` header. A harness needs to run the test twice if there are multiple values. One time with the values concatenated with `,` followed by a space and one time with multiple `Content-Type` declarations, each on their own line with one of the values, in order.
* `encoding`: the expected encoding, null for the default.
-* `mimeType`: the result of extracing a MIME type and serializing it.
+* `mimeType`: the result of extracting a MIME type and serializing it.
* `documentContentType`: the MIME type expected to be exposed in DOM documents.
(These tests are currently somewhat geared towards browser use, but could be generalized easily enough if someone wanted to contribute tests for MIME types that would cause downloads in the browser or some such.)
diff --git a/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html b/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html
index 4e34ecd94b4..917e54984f4 100644
--- a/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html
+++ b/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html
@@ -58,14 +58,13 @@ function test(mime_type, is_blocking_expected) {
// of confirmation sniffing.
protected_mime_types = [
"application/gzip",
+ "application/pdf",
"application/x-gzip",
"application/x-protobuf",
"application/zip",
"multipart/byteranges",
+ "text/csv",
"text/event-stream",
- // TODO(lukasza): https://crbug.com/944162: Add application/pdf and
- // text/csv to the list of content types tested here (after
- // kMimeHandlerViewInCrossProcessFrame gets enabled by default).
]
protected_mime_types.forEach(function(type) {
test(type, true /* is_blocking_expected */);
diff --git a/tests/wpt/web-platform-tests/fetch/metadata/appcache.tentative.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/appcache.tentative.https.sub.html
index 5e35472fcfd..3dc47c696fb 100644
--- a/tests/wpt/web-platform-tests/fetch/metadata/appcache.tentative.https.sub.html
+++ b/tests/wpt/web-platform-tests/fetch/metadata/appcache.tentative.https.sub.html
@@ -21,7 +21,7 @@
text = await response.text();
assert_header_equals(text, expected, "Appcache resource");
} catch (e) {
- t.step_func(e => {
+ t.step(e => {
if (e instanceof AssertionError) {
throw e;
}
diff --git a/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-navigation-timing-iframe.tentative.html b/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-navigation-timing-iframe.tentative.html
new file mode 100644
index 00000000000..43726e77200
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-navigation-timing-iframe.tentative.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<script>
+ let result;
+ try {
+ parent.document.getElementsByClassName('script');
+ result = 'iframe not sandboxed'
+ } catch (e) {
+ result = 'iframe sandboxed(' + e.message + ')';
+ }
+ window.onmessage = m => {
+ window.parent.postMessage({
+ result: result
+ }, '*');
+ };
+</script> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-navigation-timing.tentative.html b/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-navigation-timing.tentative.html
new file mode 100644
index 00000000000..686f1c0c9f6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-navigation-timing.tentative.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Sandbox Navigation Timing</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<html></html>
+<script>
+ const sandboxUrl = location.pathname.substring(0, location.pathname.lastIndexOf('/') + 1) + 'sandbox-navigation-timing-iframe.tentative.html';
+ async_test(t => {
+ const iframe = document.createElement('iframe');
+ iframe.src = sandboxUrl;
+ document.body.appendChild(iframe); // Navigation starts; value of sandbox flags locked on.
+ // This should not affect the sandbox value used for both about:blank document
+ // and the final document in iframe.
+ iframe.sandbox = 'allow-scripts';
+ const iframeAboutBlankDocument = iframe.contentDocument;
+
+ iframe.onload = t.step_func(() => {
+ const iframeAboutBlankContents = iframeAboutBlankDocument.querySelectorAll('body');
+ assert_equals(iframeAboutBlankContents[0].tagName, "BODY",
+ "about:blank document's contents should still be accessible");
+
+ iframe.contentWindow.postMessage("is iframe sandboxed?", "*");
+ });
+ window.onmessage = t.step_func_done(e => {
+ assert_equals(e.data.result, 'iframe not sandboxed');
+ });
+ }, 'setting sandbox attribute should not affect current document in iframe');
+</script>
diff --git a/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-new-execution-context.html b/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-new-execution-context.html
index 6692257bc41..653729384fe 100644
--- a/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-new-execution-context.html
+++ b/tests/wpt/web-platform-tests/html/browsers/sandboxing/sandbox-new-execution-context.html
@@ -11,29 +11,28 @@
<body>
<h1>Reuse of iframe about:blank document execution context in sandbox="allow-scripts" iframe</h1>
<script type="text/javascript">
- var t = async_test("iframe with sandbox should load with new execution context")
+ async_test(t => {
+ let iframe = document.createElement("iframe");
+ document.body.appendChild(iframe);
- let iframe = document.createElement("iframe");
- iframe.src = './sandbox-new-execution-context-iframe.html';
- document.body.appendChild(iframe);
- iframe.sandbox = "allow-scripts";
+ let iframeAboutBlankDocument = iframe.contentDocument;
+ assert_equals(iframeAboutBlankDocument.URL, "about:blank");
- let iframeAboutBlankDocument = iframe.contentDocument;
- assert_equals(iframeAboutBlankDocument.URL, "about:blank");
+ iframe.sandbox = "allow-scripts";
+ iframe.src = './sandbox-new-execution-context-iframe.html';
- iframe.onload = t.step_func_done(() => {
- assert_equals(iframe.contentDocument, null,
- "New document in sandboxed iframe should have opaque origin");
+ iframe.onload = t.step_func_done(() => {
+ assert_equals(iframe.contentDocument, null,
+ "New document in sandboxed iframe should have opaque origin");
- assert_equals(iframeAboutBlankDocument.__proto__.changeFromSandboxedIframe, undefined,
- "Sandboxed iframe contents should not have been able to mess with type system of about:blank document");
+ assert_equals(iframeAboutBlankDocument.__proto__.changeFromSandboxedIframe, undefined,
+ "Sandboxed iframe contents should not have been able to mess with type system of about:blank document");
- let iframeAboutBlankContents = iframeAboutBlankDocument.querySelectorAll('body');
- assert_equals(iframeAboutBlankContents[0].tagName, "BODY",
- "about:blank document's contents should still be accessible");
-
- t.done();
- });
+ let iframeAboutBlankContents = iframeAboutBlankDocument.querySelectorAll('body');
+ assert_equals(iframeAboutBlankContents[0].tagName, "BODY",
+ "about:blank document's contents should still be accessible");
+ });
+ },"iframe with sandbox should load with new execution context");
</script>
<div id="log"></div>
</body>
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-about-blank.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-about-blank.html
new file mode 100644
index 00000000000..b94cb57b95f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-about-blank.html
@@ -0,0 +1,47 @@
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+
+promise_test(t => {
+ return new Promise(resolve => {
+ window.addEventListener("DOMContentLoaded", resolve);
+ });
+}, "Wait for the DOM to be built.");
+
+promise_test(async t => {
+ let iframe = document.createElement("iframe");
+ let iframe_loaded = new Promise(resolve => iframe.onload = resolve);
+ iframe.src = "about:blank";
+ document.body.appendChild(iframe);
+
+ // The about:blank document can load.
+ await iframe_loaded;
+ assert_not_equals(iframe.contentDocument, null);
+
+ t.done();
+}, "about:blank can always be embedded by a 'require-corp' document");
+
+promise_test(async t => {
+ let iframe_C = document.createElement("iframe");
+ let iframe_B = document.createElement("iframe");
+ iframe_B.src = "about:blank";
+ iframe_C.src = "/common/blank.html";
+ let iframe_B_loaded = new Promise(resolve => iframe_B.onload = resolve);
+ let iframe_C_loaded = new Promise(resolve => iframe_C.onload = resolve);
+ document.body.appendChild(iframe_B);
+
+ // The about:blank frame must be able to load.
+ await iframe_B_loaded;
+ assert_not_equals(iframe_B.contentDocument, null);
+ iframe_B.contentDocument.body.appendChild(iframe_C);
+
+ // The document nested under about:blank must not load because it does not
+ // specify the Cross-Origin-Embedder-Policy: require-corp header.
+ // An error page must be displayed instead.
+ await iframe_C_loaded;
+ assert_equals(iframe_C.contentDocument, null);
+
+ t.done();
+}, "A(B(C)) A=require-corp, B=about:blank, C=no-require-corp => C can't load");
+
+</script>
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-about-blank.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-about-blank.html.headers
new file mode 100644
index 00000000000..8df98474b58
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-about-blank.html.headers
@@ -0,0 +1 @@
+cross-origin-embedder-policy: require-corp
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-about-srcdoc.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-about-srcdoc.html
new file mode 100644
index 00000000000..a832db1cebb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-about-srcdoc.html
@@ -0,0 +1,49 @@
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+
+promise_test(t => {
+ return new Promise(resolve => {
+ window.addEventListener("DOMContentLoaded", resolve);
+ });
+}, "Wait for the DOM to be built.");
+
+promise_test(async t => {
+ let iframe = document.createElement("iframe");
+ let iframe_loaded = new Promise(resolve => iframe.onload = resolve);
+ iframe.srcdoc = "loaded document";
+ document.body.appendChild(iframe);
+
+ // The about:srcdoc document can load.
+ await iframe_loaded;
+ assert_not_equals(iframe.contentDocument, null);
+ assert_equals(iframe.contentDocument.body.innerText, "loaded document");
+
+ t.done();
+}, "about:srcdoc can always be embedded by a 'require-corp' document");
+
+promise_test(async t => {
+ let iframe_C = document.createElement("iframe");
+ let iframe_B = document.createElement("iframe");
+ iframe_B.srcdoc = "dummy content";
+ iframe_C.src = "/common/blank.html";
+ let iframe_B_loaded = new Promise(resolve => iframe_B.onload = resolve);
+ let iframe_C_loaded = new Promise(resolve => iframe_C.onload = resolve);
+ document.body.appendChild(iframe_B);
+
+ // The about:srcdoc frame must be able to load.
+ await iframe_B_loaded;
+ assert_not_equals(iframe_B.contentDocument, null);
+ assert_equals(iframe_B.contentDocument.body.innerText, "dummy content");
+ iframe_B.contentDocument.body.appendChild(iframe_C);
+
+ // The document nested under about:srcdoc must not load because it does not
+ // specify the Cross-Origin-Embedder-Policy: require-corp header.
+ // An error page must be displayed instead.
+ await iframe_C_loaded;
+ assert_equals(iframe_C.contentDocument, null);
+
+ t.done();
+}, "A(B(C)) A=require-corp, B=about:srcdoc, C=no-require-corp => C can't load");
+
+</script>
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-about-srcdoc.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-about-srcdoc.html.headers
new file mode 100644
index 00000000000..8df98474b58
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-about-srcdoc.html.headers
@@ -0,0 +1 @@
+cross-origin-embedder-policy: require-corp
diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-style-element/mutations.window.js b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-style-element/mutations.window.js
new file mode 100644
index 00000000000..145ea8b66a9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-style-element/mutations.window.js
@@ -0,0 +1,39 @@
+test(t => {
+ const style = document.body.appendChild(document.createElement("style"));
+ const sheet = style.sheet;
+ t.add_cleanup(() => style.remove());
+ assert_not_equals(sheet, null);
+ style.appendChild(new Comment());
+ assert_not_equals(sheet, style.sheet);
+}, "Mutating the style element: inserting a Comment node");
+
+test(t => {
+ const style = document.body.appendChild(document.createElement("style"));
+ t.add_cleanup(() => style.remove());
+ const comment = style.appendChild(new Comment());
+ const sheet = style.sheet;
+ comment.appendData("x");
+ assert_not_equals(sheet, style.sheet);
+}, "Mutating the style element: mutating a Comment node");
+
+test(t => {
+ const style = document.body.appendChild(document.createElement("style"));
+ t.add_cleanup(() => style.remove());
+ const text1 = style.appendChild(new Text("1"));
+ const text2 = style.appendChild(new Text("2"));
+ assert_equals(style.textContent, "12");
+ assert_equals(style.childNodes.length, 2);
+ const sheet = style.sheet;
+ style.normalize();
+ assert_equals(style.childNodes.length, 1);
+ assert_not_equals(sheet, style.sheet);
+}, "Mutating the style element: using normalize()");
+
+test(t => {
+ const style = document.body.appendChild(document.createElement("style"));
+ t.add_cleanup(() => style.remove());
+ const comment = style.appendChild(new Comment());
+ const sheet = style.sheet;
+ comment.remove();
+ assert_not_equals(sheet, style.sheet);
+}, "Mutating the style element: removing a Comment node");
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini
index 358c6f0902e..c7b3482c786 100644
--- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini
@@ -1,7 +1,3 @@
[multiTouchPoints.html]
expected:
if product == "firefox" or product == "safari" or product == "epiphany" or product == "webkit": ERROR
- if product == "chrome" and os == "mac": ERROR
- [TestDriver actions: two touch points with one moving one pause]
- expected:
- if product == "chrome" and os != "mac": FAIL
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html.ini
new file mode 100644
index 00000000000..40626b8193e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html.ini
@@ -0,0 +1,3 @@
+[multiTouchPointsTwoTouchStarts.html]
+ expected:
+ if product == "firefox" or product == "safari": ERROR
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini
index 83ade1dddf0..4f1939a431a 100644
--- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini
@@ -1,4 +1,3 @@
[multiTouchPointsWithPause.html]
expected:
if product == "firefox" or product == "safari": ERROR
- if product == "chrome" and os == "mac": ERROR
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/set_permission.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/set_permission.https.html.ini
index 9a250edf1a9..2101196fa2f 100644
--- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/set_permission.html.ini
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/set_permission.https.html.ini
@@ -1,3 +1,3 @@
-[set_permission.html]
+[set_permission.https.html]
expected:
if product != "chrome": ERROR
diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html
new file mode 100644
index 00000000000..5014be40f61
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>TestDriver actions: two touch points with one moving one pause</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+
+<style>
+div#test1{
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100px;
+ height: 100px;
+ background-color: blue;
+}
+
+</style>
+
+<div id="test1">
+</div>
+
+<script>
+let event_type = [];
+let event_id = [];
+
+async_test(t => {
+ let test1 = document.getElementById("test1");
+ document.getElementById("test1").addEventListener("pointerdown",
+ e => {event_type.push(e.type); event_id.push(e.pointerId);});
+ document.getElementById("test1").addEventListener("pointerup",
+ e => {event_type.push(e.type); event_id.push(e.pointerId);});
+ document.getElementById("test1").addEventListener("pointermove",
+ e => {event_type.push(e.type); event_id.push(e.pointerId);});
+
+ let actions = new test_driver.Actions()
+ .addPointer("touchPointer1", "touch")
+ .addPointer("touchPointer2", "touch")
+ .pointerMove(0, 0, {origin: test1, sourceName: "touchPointer1"})
+ .pointerMove(10, 0, {origin: test1, sourceName: "touchPointer2"})
+ .pointerDown({sourceName: "touchPointer1"})
+ .pointerMove(0, 5, {origin: test1, sourceName: "touchPointer1"})
+ .pointerDown({sourceName: "touchPointer2"})
+ .pointerUp({sourceName: "touchPointer1"})
+ .pointerUp({sourceName: "touchPointer2"});
+
+ actions.send()
+ .then(t.step_func_done(() => {
+ assert_array_equals(event_type, ["pointerdown", "pointermove", "pointerdown", "pointerup", "pointerup"]);
+ assert_array_equals(event_id, [2, 2, 3, 2, 3]);
+ }))
+ .catch(e => t.step_func(() => assert_unreached("Actions sequence failed " + e)));
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/set_permission.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/set_permission.https.html
index 1e92a26398d..af743f63828 100644
--- a/tests/wpt/web-platform-tests/infrastructure/testdriver/set_permission.html
+++ b/tests/wpt/web-platform-tests/infrastructure/testdriver/set_permission.https.html
@@ -8,10 +8,10 @@
<script>
promise_test(t => {
- return test_driver.set_permission("ambient-light-sensor", "granted", true);
+ return test_driver.set_permission({name: "ambient-light-sensor"}, "granted", true);
}, "Grant Permission for one realm");
promise_test(t => {
- return test_driver.set_permission("ambient-light-sensor", "denied");
+ return test_driver.set_permission({name: "push", userVisibleOnly: true}, "denied");
}, "Deny Permission, omit one realm");
</script>
diff --git a/tests/wpt/web-platform-tests/interfaces/webauthn.idl b/tests/wpt/web-platform-tests/interfaces/webauthn.idl
index fd35c0dfd37..29025f35eec 100644
--- a/tests/wpt/web-platform-tests/interfaces/webauthn.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webauthn.idl
@@ -222,7 +222,7 @@ partial dictionary AuthenticationExtensionsClientInputs {
};
partial dictionary AuthenticationExtensionsClientOutputs {
- Coordinates loc;
+ GeolocationCoordinates loc;
};
partial dictionary AuthenticationExtensionsClientInputs {
diff --git a/tests/wpt/web-platform-tests/loading/lazyload/disconnected-image-loading-lazy.tentative.html b/tests/wpt/web-platform-tests/loading/lazyload/disconnected-image-loading-lazy.tentative.html
new file mode 100644
index 00000000000..c3b72b26239
--- /dev/null
+++ b/tests/wpt/web-platform-tests/loading/lazyload/disconnected-image-loading-lazy.tentative.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+<script>
+async_test(function(t) {
+ x = new Image();
+ x.loading = "auto";
+ x.src = "resources/image.png?auto";
+ x.onload = e => {
+ t.step(function() {
+ t.step_func_done();
+ });
+ };
+ t.step_timeout(function() { t.done(); }, 2000);
+}, "loading=auto for disconnected image");
+
+async_test(function(t) {
+ x = new Image();
+ x.loading = "lazy";
+ x.src = "resources/image.png?lazy";
+ x.onload = e => {
+ t.step(function() {
+ t.unreached_func("Disconnected image with loading=lazy should be loaded lazily.");
+ });
+ };
+ t.step_timeout(function() { t.done(); }, 2000);
+}, "loading=lazy for disconnected image");
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/permissions/test-periodic-background-sync-permission.html b/tests/wpt/web-platform-tests/permissions/test-periodic-background-sync-permission.html
new file mode 100644
index 00000000000..c3b6a1d8b9e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/permissions/test-periodic-background-sync-permission.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Test Periodic Background Sync Permission.</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id="log"></div>
+
+<script>
+ promise_test(async test => {
+ const result = await navigator.permissions.query({name:'periodic-background-sync'});
+ assert_true(result instanceof PermissionStatus);
+ });
+</script>
diff --git a/tests/wpt/web-platform-tests/portals/csp/frame-ancestors.sub.html b/tests/wpt/web-platform-tests/portals/csp/frame-ancestors.sub.html
new file mode 100644
index 00000000000..57f1eb3d88c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/portals/csp/frame-ancestors.sub.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+<meta name="timeout" content="long">
+<head>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <title>Blocked portals are reported correctly</title>
+</head>
+<body>
+ <portal src="/content-security-policy/frame-ancestors/support/content-security-policy.sub.html?policy=report-uri%20../../support/report.py%3Fop=put%26reportID={{$id:uuid()}}%3B%20frame-ancestors%20'none'"></portal>
+ <script async defer src="/content-security-policy/support/checkReport.sub.js?reportField=violated-directive&reportValue=frame-ancestors%20'none'&reportID={{$id}}"></script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/sw-install.html b/tests/wpt/web-platform-tests/resource-timing/resources/sw-install.html
new file mode 100644
index 00000000000..0a2fbe2245b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/resource-timing/resources/sw-install.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<script>
+function service_worker_unregister(documentUrl) {
+ return navigator.serviceWorker.getRegistration(documentUrl)
+ .then(function(registration) {
+ if (registration)
+ return registration.unregister();
+ })
+}
+
+function service_worker_unregister_and_register(url, scope, options = {}) {
+ if (!scope || scope.length == 0)
+ return Promise.reject(new Error('tests must define a scope'));
+
+ options.scope = scope;
+ return service_worker_unregister(scope)
+ .then(function() {
+ return navigator.serviceWorker.register(url, options);
+ })
+}
+
+function wait_for_activation_event(worker) {
+ return new Promise(function(resolve) {
+ worker.addEventListener('statechange', function(event) {
+ if (worker.state == 'activated')
+ resolve(true);
+ else if (worker.state == 'redundant')
+ resolve(false);
+ });
+ });
+}
+
+(async () => {
+ var script = '/resource-timing/resources/sw.js';
+ var scope = '/resource-timing/resources/';
+ await service_worker_unregister_and_register(script, scope)
+ .then(function(registration) {
+ return wait_for_activation_event(registration.installing);
+ })
+ .then(function(did_install) {
+ if (window.opener) {
+ window.opener.postMessage("installed", "*");
+ }
+ })
+})();
+
+</script>
diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/sw.js b/tests/wpt/web-platform-tests/resource-timing/resources/sw.js
new file mode 100644
index 00000000000..4e4fe1e1f06
--- /dev/null
+++ b/tests/wpt/web-platform-tests/resource-timing/resources/sw.js
@@ -0,0 +1,3 @@
+self.addEventListener('fetch', function(event) {
+ event.respondWith(fetch(event.request));
+});
diff --git a/tests/wpt/web-platform-tests/resource-timing/workerStart-tao-protected.https.html b/tests/wpt/web-platform-tests/resource-timing/workerStart-tao-protected.https.html
new file mode 100644
index 00000000000..cf5c2e3d606
--- /dev/null
+++ b/tests/wpt/web-platform-tests/resource-timing/workerStart-tao-protected.https.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8" />
+<meta name=timeout content=long>
+<title>Resource Timing - Check that workerStart is TAO protected</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+</head>
+<body>
+<script>
+
+const addFrame = url => {
+ const iframe = document.createElement("iframe");
+ iframe.src = url;
+ document.body.appendChild(iframe);
+};
+
+const host_info = get_host_info();
+
+// Open window to remote origin with a SW install
+let openee;
+promise_test(t => {
+ return new Promise(resolve => {
+ addEventListener("message", e => {
+ if (e.data == "installed") {
+ // Close window once we get an event that it was installed
+ openee.close();
+ performance.clearResourceTimings();
+ resolve();
+ }
+ });
+ openee = window.open(host_info.HTTPS_REMOTE_ORIGIN + "/resource-timing/resources/sw-install.html");
+ });
+}, "Install a SW")
+
+
+// Add iframe to remote origin - page without TAO
+promise_test(t => {
+ return new Promise((resolve, reject) => {
+ const observer = new PerformanceObserver(list => {
+ const entries = list.getEntries();
+ for (entry of entries) {
+ if (entry.name.includes("blank_page_green.htm")) {
+ observer.disconnect();
+ // Observe its performance entry to make sure workerStart is zero
+ if (entry.workerStart != 0) {
+ reject("workerStart should be zero");
+ }
+ resolve();
+ }
+ }
+ });
+ observer.observe({entryTypes: ["resource"]});
+ addFrame(host_info.HTTPS_REMOTE_ORIGIN + "/resource-timing/resources/blank_page_green.htm");
+ });
+}, "Add TAO-less iframe to remote origin. Make sure workerStart is zero");
+
+// Add iframe to remote origin - page with TAO
+promise_test(t => {
+ return new Promise((resolve, reject) => {
+ const observer = new PerformanceObserver(list => {
+ const entries = list.getEntries();
+ for (entry of entries) {
+ if (entry.name.includes("blank-with-tao.html")) {
+ // Observe its performance entry to make sure workerStart is zero
+ if (entry.workerStart == 0) {
+ reject("workerStart should not be zero");
+ }
+ resolve();
+ }
+ }
+ });
+ observer.observe({entryTypes: ["resource"]});
+ addFrame(host_info.HTTPS_REMOTE_ORIGIN + "/resource-timing/resources/blank-with-tao.html");
+ });
+}, "Add TAO iframe to remote origin. Make sure workerStart is not zero");
+// Observe its performance entry to make sure workerStart is not zero
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js b/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js
index 224a6078c1e..6823f6362fa 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js
@@ -15,7 +15,6 @@ function toMojoNDEFPushTarget(target) {
// and mojom.NDEFMessage structure, so that watch function can be tested.
function toMojoNDEFMessage(message) {
let ndefMessage = new device.mojom.NDEFMessage();
- ndefMessage.url = message.url;
ndefMessage.data = [];
for (let record of message.records) {
ndefMessage.data.push(toMojoNDEFRecord(record));
@@ -112,49 +111,29 @@ function assertNDEFReaderOptionsEqual(provided, received) {
// Checks whether NDEFReaderOptions are matched with given message.
function matchesWatchOptions(message, options) {
- // Filter by Web NFC id.
- if (!matchesWebNfcId(message.url, options.id)) return false;
-
- // Matches any record / media type.
- if ((options.mediaType == null || options.mediaType === '') &&
- options.recordType == null) {
+ // A message with no records is to notify that the tag is already formatted to
+ // support NDEF but does not contain a message yet. We always dispatch it for
+ // all options.
+ if (message.records.length == 0)
return true;
- }
- // Filter by mediaType and recordType.
for (let record of message.records) {
- if (options.mediaType != null && options.mediaType !== ""
- && options.mediaType !== record.mediaType) {
- return false;
+ if (options.id != null && options.id !== record.id) {
+ continue;
}
if (options.recordType != null &&
options.recordType !== record.recordType) {
- return false;
+ continue;
}
- }
-
- return true;
-}
-
-// Web NFC id match algorithm.
-// https://w3c.github.io/web-nfc/#url-pattern-match-algorithm
-function matchesWebNfcId(id, pattern) {
- if (id != null && id !== "" && pattern != null && pattern !== "") {
- const id_url = new URL(id);
- const pattern_url = new URL(pattern);
-
- if (id_url.protocol !== pattern_url.protocol) return false;
- if (!id_url.host.endsWith("." + pattern_url.host)
- && id_url.host !== pattern_url.host) {
- return false;
+ if (options.mediaType !== '' && options.mediaType !== record.mediaType) {
+ continue;
}
- if (pattern_url.pathname === "/*") return true;
- if (id_url.pathname.startsWith(pattern_url.pathname)) return true;
- return false;
+ // Found one record matches, means the message matches.
+ return true;
}
- return true;
+ return false;
}
function createNDEFError(type) {
diff --git a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
index c4bfec3547d..739d771d40b 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
@@ -216,7 +216,7 @@ class MockRuntime {
this.pose_ = null;
this.next_frame_id_ = 0;
this.bounds_ = null;
- this.send_pose_reset_ = false;
+ this.send_mojo_space_reset_ = false;
this.service_ = service;
@@ -370,7 +370,7 @@ class MockRuntime {
}
simulateResetPose() {
- this.send_pose_reset_ = true;
+ this.send_mojo_space_reset_ = true;
}
simulateInputSourceConnection(fakeInputSourceInit) {
@@ -514,22 +514,22 @@ class MockRuntime {
// XRFrameDataProvider implementation.
getFrameData() {
+ let mojo_space_reset = this.send_mojo_space_reset_;
+ this.send_mojo_space_reset_ = false;
if (this.pose_) {
this.pose_.poseIndex++;
- this.pose_.poseReset = this.send_pose_reset_;
- this.send_pose_reset_ = false;
-
- // Setting the input_state to null tests a slightly different path than
- // the browser tests where if the last input source is removed, the device
- // code always sends up an empty array, but it's also valid mojom to send
- // up a null array.
- if (this.input_sources_.length > 0) {
- this.pose_.inputState = [];
- for (let i = 0; i < this.input_sources_.length; i++) {
- this.pose_.inputState.push(this.input_sources_[i].getInputSourceState());
- }
- } else {
- this.pose_.inputState = null;
+
+ }
+
+ // Setting the input_state to null tests a slightly different path than
+ // the browser tests where if the last input source is removed, the device
+ // code always sends up an empty array, but it's also valid mojom to send
+ // up a null array.
+ let input_state = null;
+ if (this.input_sources_.length > 0) {
+ input_state = [];
+ for (let i = 0; i < this.input_sources_.length; i++) {
+ input_state.push(this.input_sources_[i].getInputSourceState());
}
}
@@ -542,6 +542,8 @@ class MockRuntime {
return Promise.resolve({
frameData: {
pose: this.pose_,
+ mojoSpaceReset: mojo_space_reset,
+ inputState: input_state,
timeDelta: {
microseconds: now,
},
diff --git a/tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-1.html b/tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-1.html
index e4246e7faba..7d46994aa99 100644
--- a/tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-1.html
+++ b/tests/wpt/web-platform-tests/resources/test/tests/functional/api-tests-1.html
@@ -119,12 +119,6 @@
}
test(assertArrayEqualsNumeric, "assert_array_equals with first param 1");
- function basicAssertObjectEquals()
- {
- assert_object_equals([1, 2, [1, 2]], { 0: 1, 1: 2, 2: { 0: 1, 1: 2} }, "array is equal to object")
- }
- test(basicAssertObjectEquals, "basic assert_object_equals test");
-
function basicAssertArrayApproxEquals()
{
assert_array_approx_equals([10, 11], [11, 10], 1, "[10, 11] is approximately (+/- 1) [11, 10]")
@@ -417,12 +411,6 @@
},
{
"status_string": "PASS",
- "name": "basic assert_object_equals test",
- "message": null,
- "properties": {}
- },
- {
- "status_string": "PASS",
"name": "body element fires the onload event set from the attribute",
"message": null,
"properties": {}
diff --git a/tests/wpt/web-platform-tests/resources/test/tests/unit/assert_object_equals.html b/tests/wpt/web-platform-tests/resources/test/tests/unit/assert_object_equals.html
new file mode 100644
index 00000000000..73a9b958438
--- /dev/null
+++ b/tests/wpt/web-platform-tests/resources/test/tests/unit/assert_object_equals.html
@@ -0,0 +1,170 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<meta charset="utf-8">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<title>Assertion functions</title>
+<script>
+'use strict';
+
+// Neither the `assert_throws` function nor its variants may be used for this
+// purpose because they fail in response to AssertionError exceptions, even
+// when this is expressed as the expected error.
+function test_failure(fn, name) {
+ test(function() {
+ try {
+ fn();
+ } catch (err) {
+ if (err instanceof AssertionError) {
+ return;
+ }
+ throw new AssertionError('Expected an AssertionError, but');
+ }
+ throw new AssertionError(
+ 'Expected an AssertionError, but no error was thrown'
+ );
+ }, name);
+}
+
+test(function() {
+ assert_object_equals({}, {});
+}, 'empty objects');
+
+test(function() {
+ var actual = {};
+ var expected = {};
+ actual.a = actual;
+ expected.a = actual;
+
+ assert_object_equals(actual, expected);
+}, 'tolerates cycles in actual value');
+
+test(function() {
+ var actual = {};
+ var expected = {};
+ actual.a = expected;
+ expected.a = expected;
+
+ assert_object_equals(actual, expected);
+}, 'tolerates cycles in expected value');
+
+test(function() {
+ assert_object_equals({2: 99, 0: 23, 1: 45}, [23, 45, 99]);
+}, 'recognizes equivalence of actual object and expected array');
+
+test(function() {
+ assert_object_equals([23, 45, 99], {2: 99, 0: 23, 1: 45});
+}, 'recognizes equivalence of actual array and expected object');
+
+test(function() {
+ var actual = {};
+ var expected = {};
+ Object.defineProperty(actual, 'a', { value: 1, enumerable: false });
+
+ assert_true(actual.a !== expected.a);
+ assert_object_equals(actual, expected);
+}, 'non-enumerable properties in actual value ignored');
+
+test(function() {
+ var actual = {};
+ var expected = {};
+ Object.defineProperty(expected, 'a', { value: 1, enumerable: false });
+
+ assert_true(actual.a !== expected.a);
+ assert_object_equals(actual, expected);
+}, 'non-enumerable properties in expected value ignored');
+
+test(function() {
+ assert_object_equals({c: 3, a: 1, b: 2}, {a: 1, b: 2, c: 3});
+}, 'equivalent objects - "flat" object');
+
+test(function() {
+ assert_object_equals(
+ {c: {e: 5, d: 4}, b: 2, a: 1},
+ {a: 1, b: 2, c: {d: 4, e: 5}}
+ );
+}, 'equivalent objects - nested object');
+
+test(function() {
+ assert_object_equals(
+ {c: [4, 5], b: 2, a: 1},
+ {a: 1, b: 2, c: [4, 5]}
+ );
+}, 'equivalent objects - nested array');
+
+test(function() {
+ assert_object_equals({a: NaN}, {a: NaN});
+}, 'equivalent objects - NaN value');
+
+test(function() {
+ assert_object_equals({a: -0}, {a: -0});
+}, 'equivalent objects - negative zero value');
+
+test_failure(function() {
+ assert_object_equals(undefined, {});
+}, 'invalid actual value: undefined');
+
+test_failure(function() {
+ assert_object_equals(null, {});
+}, 'invalid actual value: null');
+
+test_failure(function() {
+ assert_object_equals(34, {});
+}, 'invalid actual value: number');
+
+test_failure(function() {
+ assert_object_equals({c: 3, a: 1, b: 2}, {a: 1, b: 1, c: 3});
+}, 'unequal property value - "flat" object');
+
+test_failure(function() {
+ var actual = Object.create({a: undefined});
+ var expected = {};
+
+ assert_object_equals(actual, expected);
+}, 'non-own properties in actual value verified');
+
+test_failure(function() {
+ var actual = {};
+ var expected = Object.create({a: undefined});
+
+ assert_object_equals(actual, expected);
+}, 'non-own properties in expected value verified');
+
+test_failure(function() {
+ assert_object_equals(
+ {a: 1, b: 2, c: {d: 5, e: 5, f: 6}},
+ {a: 1, b: 2, c: {d: 5, e: 7, f: 6}}
+ );
+}, 'unequal property value - nested object');
+
+test_failure(function() {
+ assert_object_equals(
+ {a: 1, b: 2, c: [4, 5, 6]},
+ {a: 1, b: 2, c: [4, 7, 6]}
+ );
+}, 'unequal property value - nested array');
+
+test_failure(function() {
+ assert_object_equals({a: NaN}, {a: 0});
+}, 'equivalent objects - NaN actual value');
+
+test_failure(function() {
+ assert_object_equals({a: 0}, {a: NaN});
+}, 'equivalent objects - NaN expected value');
+
+test_failure(function() {
+ assert_object_equals({a: -0}, {a: 0});
+}, 'equivalent objects - negative zero actual value');
+
+test_failure(function() {
+ assert_object_equals({a: 0}, {a: -0});
+}, 'equivalent objects - negative zero expected value');
+
+test_failure(function() {
+ assert_object_equals({a: 1}, {});
+}, 'actual contains additional property');
+
+test_failure(function() {
+ assert_object_equals({}, {a: 1});
+}, 'expected contains additional property');
+</script>
diff --git a/tests/wpt/web-platform-tests/resources/testdriver.js b/tests/wpt/web-platform-tests/resources/testdriver.js
index 22d5ead7226..f102c8774f7 100644
--- a/tests/wpt/web-platform-tests/resources/testdriver.js
+++ b/tests/wpt/web-platform-tests/resources/testdriver.js
@@ -216,7 +216,9 @@
* This function simulates a user setting a permission into a particular state as described
* in {@link https://w3c.github.io/permissions/#set-permission-command}
*
- * @param {String} name - the name of the permission
+ * @param {Object} descriptor - a [PermissionDescriptor]{@link
+ * https://w3c.github.io/permissions/#dictdef-permissiondescriptor}
+ * object
* @param {String} state - the state of the permission
* @param {boolean} one_realm - Optional. Whether the permission applies to only one realm
*
@@ -226,12 +228,10 @@
* @returns {Promise} fulfilled after the permission is set, or rejected if setting the
* permission fails
*/
- set_permission: function(name, state, one_realm) {
+ set_permission: function(descriptor, state, one_realm) {
let permission_params = {
- descriptor: {
- name: name
- },
- state: state,
+ descriptor,
+ state,
oneRealm: one_realm,
};
return window.test_driver_internal.set_permission(permission_params);
diff --git a/tests/wpt/web-platform-tests/screen_enumeration/getScreens.tentative.https.any.js b/tests/wpt/web-platform-tests/screen_enumeration/getScreens.tentative.https.window.js
index 0b8c226ddbd..3b893bbbb77 100644
--- a/tests/wpt/web-platform-tests/screen_enumeration/getScreens.tentative.https.any.js
+++ b/tests/wpt/web-platform-tests/screen_enumeration/getScreens.tentative.https.window.js
@@ -2,12 +2,11 @@
'use strict';
promise_test(async testCase => {
- assert_class_string(navigator.screen, 'ScreenManager');
- assert_equals(typeof navigator.screen.getScreens, 'function');
-}, 'navigator.screen.getScreens is present');
+ assert_equals(typeof self.getScreens, 'function');
+}, 'self.getScreens is present');
promise_test(async testCase => {
- const screens = await navigator.screen.getScreens();
+ const screens = await self.getScreens();
assert_greater_than(screens.length, 0);
assert_equals(typeof screens[0].availWidth, 'number');
@@ -27,4 +26,4 @@ promise_test(async testCase => {
assert_equals(typeof screens[0].internal, 'boolean');
assert_equals(typeof screens[0].scaleFactor, 'number');
assert_equals(typeof screens[0].name, 'string');
-}, 'navigator.screen.getScreens returns at least 1 Screen'); \ No newline at end of file
+}, 'self.getScreens returns at least 1 Screen'); \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/dummy-worker-interceptor.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/dummy-worker-interceptor.js
index 1c381fd180e..5129ed51ea5 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/dummy-worker-interceptor.js
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/dummy-worker-interceptor.js
@@ -11,10 +11,11 @@ self.onfetch = event => {
// Request handler for a synthesized response.
if (url.indexOf('synthesized') != -1) {
+ let script_headers = new Headers({ "Content-Type": "text/javascript" });
if (destination === 'worker')
- event.respondWith(new Response(dedicated_worker_script));
+ event.respondWith(new Response(dedicated_worker_script, { 'headers': script_headers }));
else if (destination === 'sharedworker')
- event.respondWith(new Response(shared_worker_script));
+ event.respondWith(new Response(shared_worker_script, { 'headers': script_headers }));
else
event.respondWith(new Response('Unexpected request! ' + destination));
return;
diff --git a/tests/wpt/web-platform-tests/sms/detached-iframe.https.html b/tests/wpt/web-platform-tests/sms/detached-iframe.https.html
new file mode 100644
index 00000000000..bde6e25b80c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/sms/detached-iframe.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>sms on DOMWindow of detached iframe</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src="/common/get-host-info.sub.js"></script>
+<iframe id="iframe"></iframe>
+<script>
+'use strict';
+
+promise_test(async t => {
+ const iframe = document.getElementById('iframe');
+ const smsReceiver = iframe.contentWindow.navigator.sms;
+ iframe.parentNode.removeChild(iframe);
+
+ try {
+ await smsReceiver.receive();
+ assert_unreached('Expected NotSupportedError to be thrown.');
+ } catch (error) {
+ assert_equals(error.name, 'NotSupportedError');
+ }
+}, 'Return error when frame is inaccessible');
+
+</script>
diff --git a/tests/wpt/web-platform-tests/svg-aam/README.md b/tests/wpt/web-platform-tests/svg-aam/README.md
index e9163e35361..a1dcef58700 100644
--- a/tests/wpt/web-platform-tests/svg-aam/README.md
+++ b/tests/wpt/web-platform-tests/svg-aam/README.md
@@ -3,7 +3,7 @@ svg-aam: Tests for the SVG Accessibility API Mappings
The [SVG AAM Recommendation](https://www.w3.org/TR/svg-aam-1.0)
define extensions to SVG for support of extended semantics. These
-semantics make it easier for Assistive Technologies to intepret and
+semantics make it easier for Assistive Technologies to interpret and
present content to users with varying physical and cognitive abilities.
The purpose of these tests is to help ensure that user agents support the
diff --git a/tests/wpt/web-platform-tests/svg/META.yml b/tests/wpt/web-platform-tests/svg/META.yml
index ee0fff087c4..a928f0c3991 100644
--- a/tests/wpt/web-platform-tests/svg/META.yml
+++ b/tests/wpt/web-platform-tests/svg/META.yml
@@ -7,3 +7,4 @@ suggested_reviewers:
- svgeesus
- dirkschulze
- fsoder
+ - shallawa
diff --git a/tests/wpt/web-platform-tests/svg/animations/discard-on-discard.html b/tests/wpt/web-platform-tests/svg/animations/discard-on-discard.html
deleted file mode 100644
index 4a6b9f9368d..00000000000
--- a/tests/wpt/web-platform-tests/svg/animations/discard-on-discard.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!doctype html>
-<html>
-<meta charset="utf-8">
-<title>Test the behavior of one discard applied on another discard</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/SVGAnimationTestCase-testharness.js"></script>
-
-<?xml version="1.0" encoding="UTF-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <animate id="anim" attributeName="visibility" to="visible" begin="0s" end="5s"/>
- <rect x="0" y="0" width="50" height="50" fill="rgb(255, 0, 0)">
- <set id="set1" attributeName="fill" to="rgb(0, 255, 0)" begin="2s" fill="freeze"/>
- <set id="set2" attributeName="fill" to="rgb(0, 0, 255)" begin="3s" fill="freeze"/>
- </rect>
-
- <discard id="discard1" xlink:href="#set1" begin="1s"/>
- <discard id="discard2" xlink:href="#set2"/>
- <discard id="discard3" xlink:href="#discard1"/>
-</svg>
-
-<script>
-var rootSVGElement = document.querySelector("svg");
-var epsilon = 1.0;
-
-// Setup animation test
-function sample1() {
- expectFillColor(rect1, 255, 0, 0);
-}
-
-function sample2() {
- expectFillColor(rect1, 0, 255, 0);
-}
-
-smil_async_test((t) => {
- var rects = rootSVGElement.ownerDocument.getElementsByTagName("rect");
- rect1 = rects[0];
-
- const expectedValues = [
- // [animationId, time, sampleCallback]
- ["anim", 0.0, sample1],
- ["anim", 0.01, sample1],
- ["anim", 2.0, sample2],
- ["anim", 2.01, sample2],
- ["anim", 3.0, sample2],
- ["anim", 3.01, sample2]
- ];
-
- runAnimationTest(t, expectedValues);
-});
-
-window.animationStartsImmediately = true;
-
-</script> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/svg/painting/reftests/marker-units-strokewidth-non-scaling-stroke.svg b/tests/wpt/web-platform-tests/svg/painting/reftests/marker-units-strokewidth-non-scaling-stroke.svg
new file mode 100644
index 00000000000..116c61c45eb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/reftests/marker-units-strokewidth-non-scaling-stroke.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
+ <title>Markers: markerUnits=strokeWidth with vector-effect=non-scaling-stroke</title>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#MarkerUnitsAttribute"/>
+ <h:link rel="match" href="../../embedded/reference/green-rect-100x100.svg"/>
+
+ <marker id="m" orient="0" refY="5" markerUnits="strokeWidth"
+ markerWidth="10" markerHeight="10">
+ <rect width="10" height="10" fill="green"/>
+ </marker>
+ <line x2="10" y1="5" y2="5" vector-effect="non-scaling-stroke"
+ stroke="red" stroke-width="10" marker-start="url(#m)"
+ transform="scale(10)"/>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/painting/reftests/marker-units-userspaceonuse-non-scaling-stroke.svg b/tests/wpt/web-platform-tests/svg/painting/reftests/marker-units-userspaceonuse-non-scaling-stroke.svg
new file mode 100644
index 00000000000..7c4c5e0fcf3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/painting/reftests/marker-units-userspaceonuse-non-scaling-stroke.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
+ <title>Markers: markerUnits=userSpaceOnUse with vector-effect=non-scaling-stroke</title>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/painting.html#MarkerUnitsAttribute"/>
+ <h:link rel="match" href="../../embedded/reference/green-rect-100x100.svg"/>
+
+ <marker id="m" orient="0" refY="5" markerUnits="userSpaceOnUse"
+ markerWidth="10" markerHeight="10">
+ <rect width="10" height="10" fill="green"/>
+ </marker>
+ <line x2="10" y1="5" y2="5" vector-effect="non-scaling-stroke"
+ stroke="red" stroke-width="10" marker-start="url(#m)"
+ transform="scale(10)"/>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/struct/reftests/requiredextensions-empty-string.svg b/tests/wpt/web-platform-tests/svg/struct/reftests/requiredextensions-empty-string.svg
new file mode 100644
index 00000000000..28f5da4a3e4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/struct/reftests/requiredextensions-empty-string.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
+ <title>requiredExtensions: present but empty attribute evaluates to false</title>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/struct.html#RequiredExtensionsAttribute"/>
+ <h:link rel="match" href="../scripted/blank.svg"/>
+ <rect width="100" height="100" fill="red" requiredExtensions=""/>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/struct/reftests/requiredextensions-xhtml.tentative.svg b/tests/wpt/web-platform-tests/svg/struct/reftests/requiredextensions-xhtml.tentative.svg
new file mode 100644
index 00000000000..911f983cab6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/struct/reftests/requiredextensions-xhtml.tentative.svg
@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
+ <title>requiredExtensions: support for HTML/XHTML (non-normative)</title>
+ <h:link rel="match" href="reference/green-100x100.svg"/>
+ <switch>
+ <foreignObject width="100" height="100" requiredExtensions="http://www.w3.org/1999/xhtml">
+ <body xmlns="http://www.w3.org/1999/xhtml" style="margin: 0">
+ <div style="width: 100px; height: 100px; background-color: green"></div>
+ </body>
+ </foreignObject>
+ <rect width="100" height="100" fill="red"/>
+ </switch>
+</svg>
diff --git a/tests/wpt/web-platform-tests/tools/ci/run_tc.py b/tests/wpt/web-platform-tests/tools/ci/run_tc.py
index b4cb2b01b97..482de1ad336 100755
--- a/tests/wpt/web-platform-tests/tools/ci/run_tc.py
+++ b/tests/wpt/web-platform-tests/tools/ci/run_tc.py
@@ -102,8 +102,12 @@ def get_parser():
help="Install web-platform.test certificates to UA store")
p.add_argument("--no-install-certificates", action="store_false", default=None,
help="Don't install web-platform.test certificates to UA store")
- p.add_argument("--rev",
- help="Revision that the task_head ref is expected to point to")
+ p.add_argument("--ref",
+ help="Git ref for the commit that should be run")
+ p.add_argument("--head-rev",
+ help="Commit at the head of the branch when the decision task ran")
+ p.add_argument("--merge-rev",
+ help="Provisional merge commit for PR when the decision task ran")
p.add_argument("script",
help="Script to run for the job")
p.add_argument("script_args",
@@ -262,13 +266,65 @@ def setup_environment(args):
if args.oom_killer:
start_userspace_oom_killer()
- if args.checkout:
- checkout_revision(args.checkout)
+def setup_repository(args):
+ is_pr = os.environ.get("GITHUB_PULL_REQUEST", "false") != "false"
+
+ # Initially task_head points at the same commit as the ref we want to test.
+ # However that may not be the same commit as we actually want to test if
+ # the branch changed since the decision task ran. The branch may have
+ # changed because someone has pushed more commits (either to the PR
+ # or later commits to the branch), or because someone has pushed to the
+ # base branch for the PR.
+ #
+ # In that case we take a different approach depending on whether this is a
+ # PR or a push to a branch.
+ # If this is a push to a branch, and the original commit is still fetchable,
+ # we try to fetch that (it may not be in the case of e.g. a force push).
+ # If it's not fetchable then we fail the run.
+ # For a PR we are testing the provisional merge commit. If that's changed it
+ # could be that the PR branch was updated or the base branch was updated. In the
+ # former case we fail the run because testing an old commit is a waste of
+ # resources. In the latter case we assume it's OK to use the current merge
+ # instead of the one at the time the decision task ran.
+
+ if args.ref:
+ if is_pr:
+ assert args.ref.endswith("/merge")
+ expected_head = args.merge_rev
+ else:
+ expected_head = args.head_rev
+
+ task_head = run(["git", "rev-parse", "task_head"], return_stdout=True).strip()
+
+ if task_head != expected_head:
+ if not is_pr:
+ try:
+ run(["git", "fetch", "origin", "%s:task_head" % expected_head])
+ except subprocess.CalledProcessError:
+ print("CRITICAL: task_head points at %s, expected %s and "
+ "unable to fetch expected commit.\n"
+ "This may be because the branch was updated" % (task_head, args.rev))
+ sys.exit(1)
+ else:
+ # Convert the refs/pulls/<id>/merge to refs/pulls/<id>/head
+ head_ref = args.ref.rsplit("/", 1)[0] + "/head"
+ try:
+ remote_head = run(["git", "ls-remote", "origin", head_ref],
+ return_stdout=True).split("\t")[0]
+ except subprocess.CalledProcessError:
+ print("CRITICAL: Failed to read remote ref %s" % head_ref)
+ sys.exit(1)
+ if remote_head != args.head_rev:
+ print("CRITICAL: task_head points at %s, expected %s. "
+ "This may be because the branch was updated" % (task_head, args.rev))
+ sys.exit(1)
+ print("INFO: Merge commit changed from %s to %s due to base branch changes. "
+ "Running task anyway." % (expected_head, task_head))
-def setup_repository():
if os.environ.get("GITHUB_PULL_REQUEST", "false") != "false":
- parents = run(["git", "show", "--no-patch", "--format=%P", "task_head"], return_stdout=True).strip().split()
+ parents = run(["git", "rev-parse", "task_head^@"],
+ return_stdout=True).strip().split()
if len(parents) == 2:
base_head = parents[0]
pr_head = parents[1]
@@ -278,7 +334,8 @@ def setup_repository():
else:
print("ERROR: Pull request HEAD wasn't a 2-parent merge commit; "
"expected to test the merge of PR into the base")
- commit = run(["git", "show", "--no-patch", "--format=%H", "task_head"], return_stdout=True).strip()
+ commit = run(["git", "rev-parse", "task_head"],
+ return_stdout=True).strip()
print("HEAD: %s" % commit)
print("Parents: %s" % ", ".join(parents))
sys.exit(1)
@@ -289,6 +346,14 @@ def setup_repository():
# TODO: move this somewhere earlier in the task
run(["git", "fetch", "--quiet", "origin", "%s:%s" % (branch, branch)])
+ checkout_rev = args.checkout if args.checkout is not None else "task_head"
+ checkout_revision(checkout_rev)
+
+ refs = run(["git", "for-each-ref", "refs/heads"], return_stdout=True)
+ print("INFO: git refs:\n%s" % refs)
+ print("INFO: checked out commit:\n%s" % run(["git", "rev-parse", "HEAD"],
+ return_stdout=True))
+
def fetch_event_data():
try:
@@ -333,13 +398,6 @@ def include_job(job):
def main():
args = get_parser().parse_args()
- if args.rev is not None:
- task_head = run(["git", "rev-parse", "task_head"], return_stdout=True).strip()
- if task_head != args.rev:
- print("CRITICAL: task_head points at %s, expected %s. "
- "This may be because the branch was updated" % (task_head, args.rev))
- sys.exit(1)
-
if "TASK_EVENT" in os.environ:
event = json.loads(os.environ["TASK_EVENT"])
else:
@@ -348,7 +406,7 @@ def main():
if event:
set_variables(event)
- setup_repository()
+ setup_repository(args)
# Hack for backwards compatibility
if args.script in ["run-all", "lint", "update_built", "tools_unittest",
diff --git a/tests/wpt/web-platform-tests/tools/ci/tc/decision.py b/tests/wpt/web-platform-tests/tools/ci/tc/decision.py
index 92a27ef79ab..0c935b93f8e 100644
--- a/tests/wpt/web-platform-tests/tools/ci/tc/decision.py
+++ b/tests/wpt/web-platform-tests/tools/ci/tc/decision.py
@@ -121,24 +121,35 @@ def get_fetch_rev(event):
is_pr, _ = get_triggers(event)
if is_pr:
# Try to get the actual rev so that all non-decision tasks are pinned to that
- ref = "refs/pull/%s/merge" % event["pull_request"]["number"]
- try:
- output = subprocess.check_output(["git", "ls-remote", "origin", ref])
- except subprocess.CalledProcessError:
- import traceback
- logger.error(traceback.format_exc())
- logger.error("Failed to get merge commit sha1")
- return ref, None
- if not output:
- logger.error("Failed to get merge commit")
- return ref, None
- return ref, output.split()[0]
+ rv = ["refs/pull/%s/merge" % event["pull_request"]["number"]]
+ # For every PR GitHub maintains a 'head' branch with commits from the
+ # PR, and a 'merge' branch containing a merge commit between the base
+ # branch and the PR.
+ for ref_type in ["head", "merge"]:
+ ref = "refs/pull/%s/%s" % (event["pull_request"]["number"], ref_type)
+ sha = None
+ try:
+ output = subprocess.check_output(["git", "ls-remote", "origin", ref])
+ except subprocess.CalledProcessError:
+ import traceback
+ logger.error(traceback.format_exc())
+ logger.error("Failed to get commit sha1 for %s" % ref)
+ else:
+ if not output:
+ logger.error("Failed to get commit for %s" % ref)
+ else:
+ sha = output.split()[0]
+ rv.append(sha)
+ rv = tuple(rv)
else:
- return event["ref"], event["after"]
+ # For a branch push we have a ref and a head but no merge SHA
+ rv = (event["ref"], event["after"], None)
+ assert len(rv) == 3
+ return rv
def build_full_command(event, task):
- fetch_ref, fetch_sha = get_fetch_rev(event)
+ fetch_ref, head_sha, merge_sha = get_fetch_rev(event)
cmd_args = {
"task_name": task["name"],
"repo_url": event["repository"]["clone_url"],
@@ -149,8 +160,11 @@ def build_full_command(event, task):
options = task.get("options", {})
options_args = []
- if fetch_sha is not None:
- options_args.append("--rev=%s" % fetch_sha)
+ options_args.append("--ref=%s" % fetch_ref)
+ if head_sha is not None:
+ options_args.append("--head-rev=%s" % head_sha)
+ if merge_sha is not None:
+ options_args.append("--merge-rev=%s" % merge_sha)
if options.get("oom-killer"):
options_args.append("--oom-killer")
if options.get("xvfb"):
@@ -162,8 +176,6 @@ def build_full_command(event, task):
# Check out the expected SHA unless it is overridden (e.g. to base_head).
if options.get("checkout"):
options_args.append("--checkout=%s" % options["checkout"])
- else:
- options_args.append("--checkout=%s" % fetch_sha)
for browser in options.get("browser", []):
options_args.append("--browser=%s" % browser)
if options.get("channel"):
@@ -182,7 +194,7 @@ def build_full_command(event, task):
return ["/bin/bash",
"--login",
- "-c",
+ "-xc",
"""
~/start.sh \
%(repo_url)s \
diff --git a/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml b/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml
index a64ef374921..6e5e1b5070a 100644
--- a/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml
+++ b/tests/wpt/web-platform-tests/tools/ci/tc/tasks/test.yml
@@ -82,6 +82,8 @@ components:
browser-chrome: {}
+ browser-servo: {}
+
tox-python2:
env:
TOXENV: py27
@@ -164,6 +166,11 @@ tasks:
use:
- trigger-weekly
- trigger-push
+ - vars:
+ browser: servo
+ channel: nightly
+ use:
+ - trigger-push
do:
- ${vars.browser}-${vars.channel}-${vars.suite}:
diff --git a/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_valid.py b/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_valid.py
index d6cbfba4e2c..4280387127d 100644
--- a/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_valid.py
+++ b/tests/wpt/web-platform-tests/tools/ci/tc/tests/test_valid.py
@@ -64,7 +64,7 @@ def test_verify_payload():
with open(data_path(filename), encoding="utf8") as f:
event = json.load(f)
- with mock.patch("tools.ci.tc.decision.get_fetch_rev", return_value=(event["after"], None)):
+ with mock.patch("tools.ci.tc.decision.get_fetch_rev", return_value=(None, event["after"], None)):
with mock.patch("tools.ci.tc.decision.get_run_jobs", return_value=set(jobs)):
task_id_map = decide(event)
for name, (task_id, task_data) in task_id_map.items():
@@ -212,7 +212,7 @@ def test_verify_payload():
'wpt-webkitgtk_minibrowser-nightly-wdspec-1'})
])
def test_schedule_tasks(event_path, is_pr, files_changed, expected):
- with mock.patch("tools.ci.tc.decision.get_fetch_rev", return_value=(is_pr, None)):
+ with mock.patch("tools.ci.tc.decision.get_fetch_rev", return_value=(None, None, None)):
with mock.patch("tools.wpt.testfiles.repo_files_changed",
return_value=files_changed):
with open(data_path(event_path), encoding="utf8") as event_file:
diff --git a/tests/wpt/web-platform-tests/tools/manifest/testpaths.py b/tests/wpt/web-platform-tests/tools/manifest/testpaths.py
index 3c1f09d4373..2197792cd64 100644
--- a/tests/wpt/web-platform-tests/tools/manifest/testpaths.py
+++ b/tests/wpt/web-platform-tests/tools/manifest/testpaths.py
@@ -33,6 +33,8 @@ def create_parser():
parser.add_argument(
"-p", "--path", type=abs_path, help="Path to manifest file.")
parser.add_argument(
+ "--src-root", type=abs_path, default=None, help="Path to root of sourcetree.")
+ parser.add_argument(
"--tests-root", type=abs_path, default=wpt_root, help="Path to root of tests.")
parser.add_argument(
"--no-update", dest="update", action="store_false", default=True,
@@ -55,25 +57,35 @@ def create_parser():
return parser
-def get_path_id_map(manifest_file, test_ids):
- # type: (Manifest, Iterable[Text]) -> Dict[Text, List[Text]]
+def get_path_id_map(src_root, tests_root, manifest_file, test_ids):
+ # type: (Text, Text, Manifest, Iterable[Text]) -> Dict[Text, List[Text]]
test_ids = set(test_ids)
path_id_map = defaultdict(list) # type: Dict[Text, List[Text]]
+ compute_rel_path = src_root != tests_root
+
for item_type, path, tests in manifest_file:
for test in tests:
if test.id in test_ids:
- path_id_map[path].append(test.id)
+ if compute_rel_path:
+ rel_path = os.path.relpath(os.path.join(tests_root, path),
+ src_root)
+ else:
+ rel_path = path
+ path_id_map[rel_path].append(test.id)
return path_id_map
-def run(**kwargs):
- # type: (**Any) -> None
+def get_paths(**kwargs):
+ # type: (**Any) -> Dict[Text, List[Text]]
tests_root = kwargs["tests_root"]
assert tests_root is not None
path = kwargs["path"]
if path is None:
path = os.path.join(kwargs["tests_root"], "MANIFEST.json")
+ src_root = kwargs["src_root"]
+ if src_root is None:
+ src_root = tests_root
manifest_file = load_and_update(tests_root,
path,
@@ -82,11 +94,21 @@ def run(**kwargs):
rebuild=kwargs["rebuild"],
cache_root=kwargs["cache_root"])
- path_id_map = get_path_id_map(manifest_file, kwargs["test_ids"])
- if kwargs["json"]:
+ return get_path_id_map(src_root, tests_root, manifest_file, kwargs["test_ids"])
+
+
+def write_output(path_id_map, as_json):
+ # type: (Dict[Text, List[Text]], bool) -> None
+ if as_json:
print(json.dumps(path_id_map))
else:
for path, test_ids in sorted(iteritems(path_id_map)):
print(path)
for test_id in sorted(test_ids):
print(" " + test_id)
+
+
+def run(**kwargs):
+ # type: (**Any) -> None
+ path_id_map = get_paths(**kwargs)
+ write_output(path_id_map, as_json=kwargs["json"])
diff --git a/tests/wpt/web-platform-tests/tools/wpt/browser.py b/tests/wpt/web-platform-tests/tools/wpt/browser.py
index a94d5509cc8..3ee98d959ec 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/browser.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/browser.py
@@ -712,6 +712,20 @@ class ChromeAndroid(ChromeAndroidBase):
return "com.android.chrome"
+#TODO(aluo): This is largely copied from the AndroidWebView implementation.
+# Tests are not running for weblayer yet (crbug/1019521), this
+# initial implementation will help to reproduce and debug any issues.
+class AndroidWeblayer(ChromeAndroidBase):
+ """Weblayer-specific interface for Android."""
+
+ product = "android_weblayer"
+ # TODO(aluo): replace this with weblayer version after tests are working.
+ requirements = "requirements_android_webview.txt"
+
+ def find_binary(self, venv_path=None, channel=None):
+ return "org.chromium.weblayer.shell"
+
+
class AndroidWebview(ChromeAndroidBase):
"""Webview-specific interface for Android.
@@ -1108,7 +1122,7 @@ class Servo(Browser):
_, _, decompress = self.platform_components()
- resp = self._get(dest, channel)
+ resp = self._get(channel)
decompress(resp.raw, dest=dest)
path = find_executable("servo", os.path.join(dest, "servo"))
st = os.stat(path)
diff --git a/tests/wpt/web-platform-tests/tools/wpt/run.py b/tests/wpt/web-platform-tests/tools/wpt/run.py
index 4c1f2c99128..0c732e7ae8a 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/run.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/run.py
@@ -106,7 +106,7 @@ otherwise install OpenSSL and ensure that it's on your $PATH.""")
def check_environ(product):
- if product not in ("android_webview", "chrome", "chrome_android", "firefox", "firefox_android", "servo"):
+ if product not in ("android_weblayer", "android_webview", "chrome", "chrome_android", "firefox", "firefox_android", "servo"):
config_builder = serve.build_config(os.path.join(wpt_root, "config.json"))
# Override the ports to avoid looking for free ports
config_builder.ssl = {"type": "none"}
@@ -399,6 +399,31 @@ class ChromeiOS(BrowserSetup):
raise WptrunError("Unable to locate or install chromedriver binary")
+class AndroidWeblayer(BrowserSetup):
+ name = "android_weblayer"
+ browser_cls = browser.AndroidWeblayer
+
+ def setup_kwargs(self, kwargs):
+ if kwargs.get("device_serial"):
+ self.browser.device_serial = kwargs["device_serial"]
+ if kwargs["webdriver_binary"] is None:
+ webdriver_binary = self.browser.find_webdriver()
+
+ if webdriver_binary is None:
+ install = self.prompt_install("chromedriver")
+
+ if install:
+ logger.info("Downloading chromedriver")
+ webdriver_binary = self.browser.install_webdriver(dest=self.venv.bin_path)
+ else:
+ logger.info("Using webdriver binary %s" % webdriver_binary)
+
+ if webdriver_binary:
+ kwargs["webdriver_binary"] = webdriver_binary
+ else:
+ raise WptrunError("Unable to locate or install chromedriver binary")
+
+
class AndroidWebview(BrowserSetup):
name = "android_webview"
browser_cls = browser.AndroidWebview
@@ -638,6 +663,7 @@ class Epiphany(BrowserSetup):
product_setup = {
+ "android_weblayer": AndroidWeblayer,
"android_webview": AndroidWebview,
"firefox": Firefox,
"firefox_android": FirefoxAndroid,
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst b/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst
index 77938abe03d..e0bc7a850bf 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst
@@ -248,7 +248,7 @@ When used for expectation data, manifests have the following format:
base test URL, in which case the fuzziness applies to any
comparison with that URL, or takes the form lhs url, comparison,
rhs url, in which case the fuzziness only applies for any
- comparison involving that specifc pair of URLs. Some illustrative
+ comparison involving that specific pair of URLs. Some illustrative
examples are given below.
* Variables ``debug``, ``os``, ``version``, ``processor`` and
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py
index 957d2a689ac..da68ddb8618 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py
@@ -22,7 +22,8 @@ All classes and functions named in the above dict must be imported into the
module global scope.
"""
-product_list = ["android_webview",
+product_list = ["android_weblayer",
+ "android_webview",
"chrome",
"chrome_android",
"chrome_ios",
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/android_weblayer.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/android_weblayer.py
new file mode 100644
index 00000000000..93f4d6b630d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/android_weblayer.py
@@ -0,0 +1,135 @@
+import subprocess
+
+from .base import Browser, ExecutorBrowser, require_arg
+from .base import get_timeout_multiplier # noqa: F401
+from .chrome import executor_kwargs as chrome_executor_kwargs
+from ..webdriver_server import ChromeDriverServer
+from ..executors.executorwebdriver import (WebDriverTestharnessExecutor, # noqa: F401
+ WebDriverRefTestExecutor) # noqa: F401
+from ..executors.executorchrome import ChromeDriverWdspecExecutor # noqa: F401
+
+
+__wptrunner__ = {"product": "android_weblayer",
+ "check_args": "check_args",
+ "browser": "WeblayerShell",
+ "executor": {"testharness": "WebDriverTestharnessExecutor",
+ "reftest": "WebDriverRefTestExecutor",
+ "wdspec": "ChromeDriverWdspecExecutor"},
+ "browser_kwargs": "browser_kwargs",
+ "executor_kwargs": "executor_kwargs",
+ "env_extras": "env_extras",
+ "env_options": "env_options",
+ "timeout_multiplier": "get_timeout_multiplier"}
+
+_wptserve_ports = set()
+
+
+def check_args(**kwargs):
+ require_arg(kwargs, "webdriver_binary")
+
+
+def browser_kwargs(test_type, run_info_data, config, **kwargs):
+ return {"binary": kwargs["binary"],
+ "device_serial": kwargs["device_serial"],
+ "webdriver_binary": kwargs["webdriver_binary"],
+ "webdriver_args": kwargs.get("webdriver_args")}
+
+
+def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
+ **kwargs):
+ # Use update() to modify the global list in place.
+ _wptserve_ports.update(set(
+ server_config['ports']['http'] + server_config['ports']['https'] +
+ server_config['ports']['ws'] + server_config['ports']['wss']
+ ))
+
+ executor_kwargs = chrome_executor_kwargs(test_type, server_config,
+ cache_manager, run_info_data,
+ **kwargs)
+ del executor_kwargs["capabilities"]["goog:chromeOptions"]["prefs"]
+ del executor_kwargs["capabilities"]["goog:chromeOptions"]["useAutomationExtension"]
+ capabilities = executor_kwargs["capabilities"]
+ # Note that for WebLayer, we launch a test shell and have the test shell use
+ # WebLayer.
+ # https://cs.chromium.org/chromium/src/weblayer/shell/android/shell_apk/
+ capabilities["goog:chromeOptions"]["androidPackage"] = \
+ "org.chromium.weblayer.shell"
+ capabilities["goog:chromeOptions"]["androidActivity"] = ".WebLayerShellActivity"
+ if kwargs.get('device_serial'):
+ capabilities["goog:chromeOptions"]["androidDeviceSerial"] = kwargs['device_serial']
+
+ # Workaround: driver.quit() cannot quit WeblayerShell.
+ executor_kwargs["pause_after_test"] = False
+ # Workaround: driver.close() is not supported.
+ executor_kwargs["restart_after_test"] = True
+ executor_kwargs["close_after_done"] = False
+ return executor_kwargs
+
+
+def env_extras(**kwargs):
+ return []
+
+
+def env_options():
+ # allow the use of host-resolver-rules in lieu of modifying /etc/hosts file
+ return {"server_host": "127.0.0.1"}
+
+
+#TODO: refactor common elements of WeblayerShell and ChromeAndroidBrowser
+class WeblayerShell(Browser):
+ """Chrome is backed by chromedriver, which is supplied through
+ ``wptrunner.webdriver.ChromeDriverServer``.
+ """
+
+ def __init__(self, logger, binary, webdriver_binary="chromedriver",
+ device_serial=None,
+ webdriver_args=None):
+ """Creates a new representation of Chrome. The `binary` argument gives
+ the browser binary to use for testing."""
+ Browser.__init__(self, logger)
+ self.binary = binary
+ self.device_serial = device_serial
+ self.server = ChromeDriverServer(self.logger,
+ binary=webdriver_binary,
+ args=webdriver_args)
+ self.setup_adb_reverse()
+
+ def _adb_run(self, args):
+ cmd = ['adb']
+ if self.device_serial:
+ cmd.extend(['-s', self.device_serial])
+ cmd.extend(args)
+ self.logger.info(' '.join(cmd))
+ subprocess.check_call(cmd)
+
+ def setup_adb_reverse(self):
+ self._adb_run(['wait-for-device'])
+ self._adb_run(['forward', '--remove-all'])
+ self._adb_run(['reverse', '--remove-all'])
+ # "adb reverse" basically forwards network connection from device to
+ # host.
+ for port in _wptserve_ports:
+ self._adb_run(['reverse', 'tcp:%d' % port, 'tcp:%d' % port])
+
+ def start(self, **kwargs):
+ self.server.start(block=False)
+
+ def stop(self, force=False):
+ self.server.stop(force=force)
+
+ def pid(self):
+ return self.server.pid
+
+ def is_alive(self):
+ # TODO(ato): This only indicates the driver is alive,
+ # and doesn't say anything about whether a browser session
+ # is active.
+ return self.server.is_alive
+
+ def cleanup(self):
+ self.stop()
+ self._adb_run(['forward', '--remove-all'])
+ self._adb_run(['reverse', '--remove-all'])
+
+ def executor_browser(self):
+ return ExecutorBrowser, {"webdriver_url": self.server.url}
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
index c8a26d042eb..9e302107118 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
@@ -130,6 +130,7 @@ class ExecutorException(Exception):
class TimedRunner(object):
def __init__(self, logger, func, protocol, url, timeout, extra_timeout):
self.func = func
+ self.logger = logger
self.result = None
self.protocol = protocol
self.url = url
@@ -149,7 +150,8 @@ class TimedRunner(object):
# Add twice the timeout multiplier since the called function is expected to
# wait at least self.timeout + self.extra_timeout and this gives some leeway
- finished = self.result_flag.wait(self.timeout + 2 * self.extra_timeout)
+ timeout = self.timeout + 2 * self.extra_timeout if self.timeout else None
+ finished = self.result_flag.wait(timeout)
if self.result is None:
if finished:
# flag is True unless we timeout; this *shouldn't* happen, but
@@ -781,7 +783,7 @@ class SetPermissionAction(object):
state = permission_params["state"]
one_realm = permission_params.get("oneRealm", False)
self.logger.debug("Setting permission %s to %s, oneRealm=%s" % (name, state, one_realm))
- self.protocol.set_permission.set_permission(name, state, one_realm)
+ self.protocol.set_permission.set_permission(descriptor, state, one_realm)
class AddVirtualAuthenticatorAction(object):
def __init__(self, logger, protocol):
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
index 8ea59b2577d..221f48a3ea9 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
@@ -208,11 +208,9 @@ class WebDriverSetPermissionProtocolPart(SetPermissionProtocolPart):
def setup(self):
self.webdriver = self.parent.webdriver
- def set_permission(self, name, state, one_realm):
+ def set_permission(self, descriptor, state, one_realm):
permission_params_dict = {
- "descriptor": {
- "name": name
- },
+ "descriptor": descriptor,
"state": state,
}
if one_realm is not None:
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/protocol.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/protocol.py
index 1a47fa9f1d8..a1e8dacecb6 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/protocol.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/protocol.py
@@ -312,10 +312,10 @@ class SetPermissionProtocolPart(ProtocolPart):
name = "set_permission"
@abstractmethod
- def set_permission(self, name, state, one_realm=False):
+ def set_permission(self, descriptor, state, one_realm=False):
"""Set permission state.
- :param name: The name of the permission to set.
+ :param descriptor: A PermissionDescriptor object.
:param state: The state to set the permission to.
:param one_realm: Whether to set the permission for only one realm."""
pass
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
index 8dece20a8e9..f1b1faa4498 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
@@ -561,14 +561,17 @@ class TestRunnerManager(threading.Thread):
self.logger.info("Run %d/%d" % (self.run_count, self.rerun))
self.send_message("reset")
self.run_count += 1
- # Factor of 3 on the extra timeout here is based on allowing the executor
- # at least test.timeout + 2 * extra_timeout to complete,
- # which in turn is based on having several layers of timeout inside the executor
- wait_timeout = (self.state.test.timeout * self.executor_kwargs['timeout_multiplier'] +
- 3 * self.executor_cls.extra_timeout)
- self.timer = threading.Timer(wait_timeout, self._timeout)
+ if self.debug_info is None:
+ # Factor of 3 on the extra timeout here is based on allowing the executor
+ # at least test.timeout + 2 * extra_timeout to complete,
+ # which in turn is based on having several layers of timeout inside the executor
+ wait_timeout = (self.state.test.timeout * self.executor_kwargs['timeout_multiplier'] +
+ 3 * self.executor_cls.extra_timeout)
+ self.timer = threading.Timer(wait_timeout, self._timeout)
+
self.send_message("run_test", self.state.test)
- self.timer.start()
+ if self.timer:
+ self.timer.start()
def _timeout(self):
self.logger.info("Got timeout in harness")
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-constants.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-constants.tentative.html
index 001a6cea481..0ba2eb62375 100644
--- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-constants.tentative.html
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-constants.tentative.html
@@ -23,4 +23,22 @@
assert_true(trustedTypes.isHTML(trustedTypes.emptyHTML));
assert_equals(trustedTypes.emptyHTML.toString(), "");
}, 'trustedTypes.emptyHTML cannot be redefined via defineProperty.');
+
+ test(t => {
+ const empty = trustedTypes.emptyScript;
+ assert_true(trustedTypes.isScript(empty));
+ assert_equals(empty.toString(), "");
+ }, 'trustedTypes.emptyScript returns the intended value.');
+
+ test(t => {
+ try { trustedTypes.emptyScript = 'fake'; } catch { }
+ assert_true(trustedTypes.isScript(trustedTypes.emptyScript));
+ assert_equals(trustedTypes.emptyScript.toString(), "");
+ }, 'trustedTypes.emptyScript cannot be redefined.');
+
+ test(t => {
+ try { Object.defineProperty(TrustedTypes, 'emptyScript', 'fake'); } catch { }
+ assert_true(trustedTypes.isScript(trustedTypes.emptyScript));
+ assert_equals(trustedTypes.emptyScript.toString(), "");
+ }, 'trustedTypes.emptyScript cannot be redefined via defineProperty.');
</script>
diff --git a/tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.html
index a6aa061f730..04b19f7e421 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.html
@@ -3,64 +3,235 @@
<head>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
- <script src="support/helper.sub.js"></script>
<meta http-equiv="Content-Security-Policy" content="trusted-types *">
</head>
<body>
<div id="container"></div>
+<script id="script1">"hello world!";</script>
+<script id="trigger"></script>
<script>
var container = document.querySelector("#container");
+ const policy_dict = {
+ createScript: s => (s.includes("fail") ? null : s.replace("default", "count")),
+ createHTML: s => s.replace(/2/g, "3"),
+ };
+ const policy = trustedTypes.createPolicy("policy", policy_dict);
// Regression tests for 'Bypass via insertAdjacentText', reported at
// https://github.com/WICG/trusted-types/issues/133
+ // We are trying to assert that scripts do _not_ get executed. We
+ // accomplish by having the script under examination containing a
+ // postMessage, and to send a second guaranteed-to-execute postMessage
+ // so there's a point in time when we're sure the first postMessage
+ // must have arrived (if indeed it had been sent).
+ //
+ // We'll interpret the message data as follows:
+ // - includes "block": error (this message should have been blocked by TT)
+ // - includes "count": Count these, and later check against expect_count.
+ // - includes "done": Unregister the event handler and finish the test.
+ // - all else: Reject, as this is probably an error in the test.
+ function checkMessage(expect_count) {
+ postMessage("done", "*");
+ return new Promise((resolve, reject) => {
+ let count = 0;
+ globalThis.addEventListener("message", function handler(e) {
+ if (e.data.includes("block")) {
+ reject(`'block' received (${e.data})`);
+ } else if (e.data.includes("count")) {
+ count = count + 1;
+ } else if (e.data.includes("done")) {
+ globalThis.removeEventListener("message", handler);
+ if (expect_count && count != expect_count) {
+ reject(
+ `'done' received, but unexpected counts: expected ${expect_count} != actual ${count} (${e.data})`);
+ } else {
+ resolve(e.data);
+ }
+ } else {
+ reject("unexpected message received: " + e.data);
+ }
+ });
+ });
+ }
+
+ function checkSecurityPolicyViolationEvent(expect_count) {
+ return new Promise((resolve, reject) => {
+ let count = 0;
+ document.addEventListener("securitypolicyviolation", e => {
+ if (e.sample.includes("trigger")) {
+ if (expect_count && count != expect_count) {
+ reject(
+ `'trigger' received, but unexpected counts: expected ${expect_count} != actual ${count}`);
+ } else {
+ resolve();
+ }
+ } else {
+ count = count + 1;
+ }
+ });
+ try {
+ document.getElementById("trigger").text = "trigger fail";
+ } catch(e) { }
+ });
+ }
+
// Original report:
- test(t => {
+ promise_test(t => {
// Setup: Create a <script> element with a <p> child.
let s = document.createElement("script");
+
+ // Sanity check: Element child content (<p>) doesn't count as source text.
let p = document.createElement("p");
- p.textContent = "hello('world');";
+ p.text = "hello('world');";
s.appendChild(p);
container.appendChild(s);
-
- // Sanity check: The <p> content doesn't count as source text.
assert_equals(s.text, "");
// Try to insertAdjacentText into the <script>, starting from the <p>
- try {
- p.insertAdjacentText("beforebegin", "hello('before');");
- } catch (err) { }
- assert_equals(s.text, "");
- try {
- p.insertAdjacentText("afterend", "hello('after');");
- } catch (err) { }
- assert_equals(s.text, "");
- }, "Regression test: Bypass via insertAdjacentText, initial comment");
+ p.insertAdjacentText("beforebegin",
+ "postMessage('beforebegin should be blocked', '*');");
+ assert_true(s.text.includes("postMessage"));
+ p.insertAdjacentText("afterend",
+ "postMessage('afterend should be blocked', '*');");
+ assert_true(s.text.includes("after"));
+ return checkMessage();
+ }, "Regression test: Bypass via insertAdjacentText, initial comment.");
- // Variant: Create a <script> element and create & insert a text node. Then
- // insert it into the document container to make it live.
- test(t => {
- // Setup: Create a <script> element, and insert text via a text node.
- let s = document.createElement("script");
- let text = document.createTextNode("alert('hello');");
- assert_throws(new TypeError(),
- _ => { s.appendChild(text); },
- "We should not be able to modify <script>.");
- container.appendChild(s);
- }, "Regression test: Bypass via appendChild into off-document script element");
+ const script_elements = {
+ "script": doc => doc.createElement("script"),
+ "svg:script": doc => doc.createElementNS("http://www.w3.org/2000/svg", "script"),
+ };
+ for (let [element, create_element] of Object.entries(script_elements)) {
+ // Like the "Original Report" test case above, but avoids use of the "text"
+ // accessor that <svg:script> doesn't support.
+ promise_test(t => {
+ let s = create_element(document);
- // Variant: Create a <script> element and insert it into the document. Then
- // create a text node and insert it into the live <script> element.
- test(t => {
- // Setup: Create a <script> element, insert it into the doc, and then create
- // and insert text via a text node.
- let s = document.createElement("script");
- container.appendChild(s);
- let text = document.createTextNode("alert('hello');");
- assert_throws(new TypeError(),
- _ => { s.appendChild(text); },
- "We should not be able to modify <script>.");
- }, "Regression test: Bypass via appendChild into live script element");
+ // Sanity check: Element child content (<p>) doesn't count as source text.
+ let p = document.createElement("p");
+ p.textContent = "hello('world');";
+ s.appendChild(p);
+ container.appendChild(s);
+
+ // Try to insertAdjacentText into the <script>, starting from the <p>
+ p.insertAdjacentText("beforebegin",
+ "postMessage('beforebegin should be blocked', '*');");
+ assert_true(s.textContent.includes("postMessage"));
+ p.insertAdjacentText("afterend",
+ "postMessage('afterend should be blocked', '*');");
+ assert_true(s.textContent.includes("after"));
+ return checkMessage();
+ }, "Regression test: Bypass via insertAdjacentText, initial comment. " + element);
+
+ // Variant: Create a <script> element and create & insert a text node. Then
+ // insert it into the document container to make it live.
+ promise_test(t => {
+ // Setup: Create a <script> element, and insert text via a text node.
+ let s = create_element(document);
+ let text = document.createTextNode("postMessage('appendChild with a " +
+ "text node should be blocked', '*');");
+ s.appendChild(text);
+ container.appendChild(s);
+ return checkMessage();
+ }, "Regression test: Bypass via appendChild into off-document script element" + element);
+
+ // Variant: Create a <script> element and insert it into the document. Then
+ // create a text node and insert it into the live <script> element.
+ promise_test(t => {
+ // Setup: Create a <script> element, insert it into the doc, and then create
+ // and insert text via a text node.
+ let s = create_element(document);
+ container.appendChild(s);
+ let text = document.createTextNode("postMessage('appendChild with a live " +
+ "text node should be blocked', '*');");
+ s.appendChild(text);
+ return checkMessage();
+ }, "Regression test: Bypass via appendChild into live script element " + element);
+ }
+
+ promise_test(t => {
+ return checkSecurityPolicyViolationEvent();
+ }, "Prep for subsequent tests: Clear SPV event queue.");
+
+ promise_test(t => {
+ const inserted_script = document.getElementById("script1");
+ assert_throws(new TypeError(), _ => {
+ inserted_script.innerHTML = "2+2";
+ });
+
+ let new_script = document.createElement("script");
+ assert_throws(new TypeError(), _ => {
+ new_script.innerHTML = "2+2";
+ container.appendChild(new_script);
+ });
+
+ const trusted_html = policy.createHTML("2*4");
+ assert_equals("" + trusted_html, "3*4");
+ inserted_script.innerHTML = trusted_html;
+ assert_equals(inserted_script.textContent, "3*4");
+
+ new_script = document.createElement("script");
+ new_script.innerHTML = trusted_html;
+ container.appendChild(new_script);
+ assert_equals(inserted_script.textContent, "3*4");
+
+ // We expect 3 SPV events: two for the two assert_throws cases, and one
+ // for script element, which will be rejected at the time of execution.
+ return checkSecurityPolicyViolationEvent(3);
+ }, "Spot tests around script + innerHTML interaction.");
+
+
+ // Create default policy. Wrapped in a promise_test to ensure it runs only
+ // after the other tests.
+ let default_policy;
+ promise_test(t => {
+ default_policy = trustedTypes.createPolicy("default", policy_dict);
+ return Promise.resolve();
+ }, "Prep for subsequent tests: Create default policy.");
+
+ for (let [element, create_element] of Object.entries(script_elements)) {
+ promise_test(t => {
+ let s = create_element(document);
+ let text = document.createTextNode("postMessage('default', '*');");
+ s.appendChild(text);
+ container.appendChild(s);
+ return Promise.all([checkMessage(1),
+ checkSecurityPolicyViolationEvent(0)]);
+ }, "Test that default policy applies. " + element);
+
+ promise_test(t => {
+ let s = create_element(document);
+ let text = document.createTextNode("fail");
+ s.appendChild(text);
+ container.appendChild(s);
+ return Promise.all([checkMessage(0),
+ checkSecurityPolicyViolationEvent(1)]);
+ }, "Test a failing default policy. " + element);
+ }
+
+ promise_test(t => {
+ const inserted_script = document.getElementById("script1");
+ inserted_script.innerHTML = "2+2";
+ assert_equals(inserted_script.textContent, "3+3");
+
+ let new_script = document.createElement("script");
+ new_script.innerHTML = "2+2";
+ container.appendChild(new_script);
+ assert_equals(inserted_script.textContent, "3+3");
+
+ const trusted_html = default_policy.createHTML("2*4");
+ assert_equals("" + trusted_html, "3*4");
+ inserted_script.innerHTML = trusted_html;
+ assert_equals(inserted_script.textContent, "3*4");
+
+ new_script = document.createElement("script");
+ new_script.innerHTML = trusted_html;
+ container.appendChild(new_script);
+ assert_equals(inserted_script.textContent, "3*4");
+
+ return checkSecurityPolicyViolationEvent(0);
+ }, "Spot tests around script + innerHTML interaction with default policy.");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/wai-aria/README.md b/tests/wpt/web-platform-tests/wai-aria/README.md
index 66d6d087f68..4e1a7706e33 100644
--- a/tests/wpt/web-platform-tests/wai-aria/README.md
+++ b/tests/wpt/web-platform-tests/wai-aria/README.md
@@ -3,7 +3,7 @@ Wai-aria: Tests for the WAI-ARIA Recommendations
The [WAI ARIA Recommendations](https://www.w3.org/TR/wai-aria)
define extensions to HTML4/5 for support of extended semantics. These
-semantics make it easier for Assistive Technologies to intepret and
+semantics make it easier for Assistive Technologies to interpret and
present content to users with varying physical and cognitive abilities.
The purpose of these tests is to help ensure that user agents support the
diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html
index 2d09cdf4545..95d7db7bb3b 100644
--- a/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html
+++ b/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html
@@ -241,18 +241,28 @@ promise_test(async t => {
}, 'Element.animate() does NOT trigger a style change event');
// Tests on pseudo-elements
+// Some tests occur twice (on pseudo-elements with and without content)
+// in order to test both code paths for tree-abiding pseudo-elements in blink.
test(t => {
const div = createDiv(t);
div.classList.add('pseudo');
+ getComputedStyle(div,"::before").content; // Sync style
const anim = div.animate(null, {pseudoElement: '::before'});
assert_class_string(anim, 'Animation', 'The returned object is an Animation');
}, 'animate() with pseudoElement parameter creates an Animation object');
test(t => {
const div = createDiv(t);
+ const anim = div.animate(null, {pseudoElement: '::before'});
+ assert_class_string(anim, 'Animation', 'The returned object is an Animation');
+}, 'animate() with pseudoElement parameter without content creates an Animation object');
+
+test(t => {
+ const div = createDiv(t);
div.classList.add('pseudo');
div.style.display = 'list-item';
+ getComputedStyle(div,"::marker").content; // Sync style
const anim = div.animate(null, {pseudoElement: '::marker'});
assert_class_string(anim, 'Animation', 'The returned object is an Animation for ::marker');
}, 'animate() with pseudoElement parameter creates an Animation object for ::marker');
@@ -268,31 +278,45 @@ test(t => {
test(t => {
const div = createDiv(t);
div.classList.add('pseudo');
+ getComputedStyle(div,"::before").content; // Sync style
const anim = div.animate(null, {pseudoElement: '::before'});
+ assert_equals(anim.effect.target, div, 'The returned element has the correct target element');
assert_equals(anim.effect.pseudoElement, '::before',
- 'The returned Animation targets to the correct selector');
+ 'The returned Animation targets the correct selector');
}, 'animate() with pseudoElement an Animation object targeting ' +
- 'to the correct pseudo-element');
+ 'the correct pseudo-element');
+
+test(t => {
+ const div = createDiv(t);
+ const anim = div.animate(null, {pseudoElement: '::before'});
+ assert_equals(anim.effect.target, div, 'The returned element has the correct target element');
+ assert_equals(anim.effect.pseudoElement, '::before',
+ 'The returned Animation targets the correct selector');
+}, 'animate() with pseudoElement without content creates an Animation object targeting ' +
+ 'the correct pseudo-element');
test(t => {
const div = createDiv(t);
div.classList.add('pseudo');
div.style.display = 'list-item';
+ getComputedStyle(div,"::marker").content; // Sync style
const anim = div.animate(null, {pseudoElement: '::marker'});
+ assert_equals(anim.effect.target, div, 'The returned element has the correct target element');
assert_equals(anim.effect.pseudoElement, '::marker',
- 'The returned Animation targets to the correct selector');
+ 'The returned Animation targets the correct selector');
}, 'animate() with pseudoElement an Animation object targeting ' +
- 'to the correct pseudo-element for ::marker');
+ 'the correct pseudo-element for ::marker');
test(t => {
const div = createDiv(t);
div.classList.add('pseudo');
div.textContent = 'foo';
const anim = div.animate(null, {pseudoElement: '::first-line'});
+ assert_equals(anim.effect.target, div, 'The returned element has the correct target element');
assert_equals(anim.effect.pseudoElement, '::first-line',
- 'The returned Animation targets to the correct selector');
+ 'The returned Animation targets the correct selector');
}, 'animate() with pseudoElement an Animation object targeting ' +
- 'to the correct pseudo-element for ::first-line');
+ 'the correct pseudo-element for ::first-line');
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/target.html b/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/target.html
index 10f42eea4e5..a9827d64d3d 100644
--- a/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/target.html
+++ b/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/target.html
@@ -1,11 +1,17 @@
<!DOCTYPE html>
<meta charset=utf-8>
-<title>KeyframeEffect.target</title>
+<title>KeyframeEffect.target and .pseudoElement</title>
<link rel="help"
href="https://drafts.csswg.org/web-animations/#dom-keyframeeffect-target">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../../testcommon.js"></script>
+<style>
+ .before::before {content: 'foo'; display: inline-block;}
+ .after::after {content: 'bar'; display: inline-block;}
+ .pseudoa::before, .pseudoc::before {margin-left: 10px;}
+ .pseudob::before, .pseudoc::after {margin-left: 20px;}
+</style>
<body>
<div id="log"></div>
<script>
@@ -105,5 +111,151 @@ promise_test(async t => {
await waitForNextFrame();
}, 'Target element can be set to a foreign element');
+// Pseudo-element tests
+// (testing target and pseudoElement in these cases)
+// Since blink uses separate code paths for handling pseudo-element styles
+// depending on whether content is set (putting the pseudo-element in the layout),
+// we run tests on both cases.
+for (const hasContent of [true, false]){
+ test(t => {
+ const d = createDiv(t);
+ d.classList.add('pseudoa');
+ if (hasContent) {
+ d.classList.add('before');
+ getComputedStyle(d,"::before").content; // Sync style
+ }
+
+ const effect = new KeyframeEffect(null, gKeyFrames, 100 * MS_PER_SEC);
+ const anim = new Animation(effect, document.timeline);
+ anim.play();
+
+ anim.currentTime = 50 * MS_PER_SEC;
+ assert_equals(getComputedStyle(d, '::before').marginLeft, '10px',
+ 'Value at 50% progress before setting new target');
+ effect.target = d;
+ effect.pseudoElement = '::before';
+
+ assert_equals(effect.target, d, "Target element is set correctly");
+ assert_equals(effect.pseudoElement, '::before', "Target pseudo-element set correctly");
+ assert_equals(getComputedStyle(d, '::before').marginLeft, '50px',
+ 'Value at 50% progress after setting new target');
+ }, "Change target from null to " + (hasContent ? "an existing" : "a non-existing") +
+ " pseudoElement setting target first.");
+
+ test(t => {
+ const d = createDiv(t);
+ d.classList.add('pseudoa');
+ if (hasContent) {
+ d.classList.add('before');
+ getComputedStyle(d,"::before").content; // Sync style
+ }
+
+ const effect = new KeyframeEffect(null, gKeyFrames, 100 * MS_PER_SEC);
+ const anim = new Animation(effect, document.timeline);
+ anim.play();
+
+ anim.currentTime = 50 * MS_PER_SEC;
+ assert_equals(getComputedStyle(d, '::before').marginLeft, '10px',
+ 'Value at 50% progress before setting new target');
+ effect.pseudoElement = '::before';
+ effect.target = d;
+
+ assert_equals(effect.target, d, "Target element is set correctly");
+ assert_equals(effect.pseudoElement, '::before', "Target pseudo-element set correctly");
+ assert_equals(getComputedStyle(d, '::before').marginLeft, '50px',
+ 'Value at 50% progress after setting new target');
+ }, "Change target from null to " + (hasContent ? "an existing" : "a non-existing") +
+ " pseudoElement setting pseudoElement first.");
+
+ test(t => {
+ const d = createDiv(t);
+ d.classList.add('pseudoa');
+ if (hasContent) {
+ d.classList.add('before');
+ getComputedStyle(d,"::before").content; // Sync style
+ }
+ const anim = d.animate(gKeyFrames, {duration: 100 * MS_PER_SEC, pseudoElement: '::before'});
+
+ anim.currentTime = 50 * MS_PER_SEC;
+ anim.effect.pseudoElement = null;
+ assert_equals(anim.effect.target, d,
+ "Animation targets specified element (target element)");
+ assert_equals(anim.effect.pseudoElement, null,
+ "Animation targets specified element (null pseudo-selector)");
+ assert_equals(getComputedStyle(d, '::before').marginLeft, '10px',
+ 'Value of 1st element (currently not targeted) after ' +
+ 'changing the effect target');
+ assert_equals(getComputedStyle(d).marginLeft, '50px',
+ 'Value of 2nd element (currently targeted) after ' +
+ 'changing the effect target');
+ }, "Change target from " + (hasContent ? "an existing" : "a non-existing") + " pseudo-element to the originating element.");
+
+ for (const prevHasContent of [true, false]) {
+ test(t => {
+ const a = createDiv(t);
+ a.classList.add('pseudoa');
+ const b = createDiv(t);
+ b.classList.add('pseudob');
+ if (prevHasContent) {
+ a.classList.add('before');
+ getComputedStyle(a,"::before").content; // Sync style
+ }
+ if (hasContent) {
+ b.classList.add('before');
+ getComputedStyle(b,"::before").content; // Sync style
+ }
+
+ const anim = a.animate(gKeyFrames, {duration: 100 * MS_PER_SEC, pseudoElement: '::before'});
+
+ anim.currentTime = 50 * MS_PER_SEC;
+ anim.effect.target = b;
+ assert_equals(anim.effect.target, b,
+ "Animation targets specified pseudo-element (target element)");
+ assert_equals(anim.effect.pseudoElement, '::before',
+ "Animation targets specified pseudo-element (pseudo-selector)");
+ assert_equals(getComputedStyle(a, '::before').marginLeft, '10px',
+ 'Value of 1st element (currently not targeted) after ' +
+ 'changing the effect target');
+ assert_equals(getComputedStyle(b, '::before').marginLeft, '50px',
+ 'Value of 2nd element (currently targeted) after ' +
+ 'changing the effect target');
+ }, "Change target from " + (prevHasContent ? "an existing" : "a non-existing") +
+ " to a different " + (hasContent ? "existing" : "non-existing") +
+ " pseudo-element by setting target.");
+
+ test(t => {
+ const d = createDiv(t);
+ d.classList.add('pseudoc');
+ if (prevHasContent) {
+ d.classList.add('before');
+ getComputedStyle(d,"::before").content; // Sync style
+ }
+ if (hasContent) {
+ d.classList.add('after');
+ getComputedStyle(d,"::after").content; // Sync style
+ }
+
+ const anim = d.animate(gKeyFrames, {duration: 100 * MS_PER_SEC, pseudoElement: '::before'});
+
+ anim.currentTime = 50 * MS_PER_SEC;
+ anim.effect.pseudoElement = '::after';
+ assert_equals(anim.effect.target, d,
+ "Animation targets specified pseudo-element (target element)");
+ assert_equals(anim.effect.pseudoElement, '::after',
+ "Animation targets specified pseudo-element (pseudo-selector)");
+ assert_equals(getComputedStyle(d, '::before').marginLeft, '10px',
+ 'Value of 1st element (currently not targeted) after ' +
+ 'changing the effect target');
+ assert_equals(getComputedStyle(d, '::after').marginLeft, '50px',
+ 'Value of 2nd element (currently targeted) after ' +
+ 'changing the effect target');
+ }, "Change target from " + (prevHasContent ? "an existing" : "a non-existing") +
+ " to a different " + (hasContent ? "existing" : "non-existing") +
+ " pseudo-element by setting pseudoElement.");
+ }
+}
+
+
+
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation-ref.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation-ref.html
index 0aaa0443649..7fcdf9156f8 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation-ref.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation-ref.html
@@ -1,17 +1,18 @@
<!DOCTYPE html>
<title>Reference for reverse running animation</title>
<style>
- #box {
- background: blue;
- height: 40px;
- width: 40px;
- transform: translateX(100px);
- will-change: transform;
+ #notes {
+ position: absolute;
+ left: 0px;
+ top: 100px;
+ }
+ body {
+ backgrond: white;
}
</style>
<body>
- <div id="box"></div>
- <p>This test reverses the animation shortly after the box starts moving. If
- the box doesn't move back to its original position, the test has failed.
+ <p id="notes">
+ This test reverses the animation shortly after the box starts moving. If
+ any blue pixels are visible the test has failed.
</p>
</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation.html
index 584aa0029ea..c5179a72c9d 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reverse-running-animation.html
@@ -6,36 +6,63 @@
<link rel="match" href="reverse-running-animation-ref.html">
<script src="/common/reftest-wait.js"></script>
<style>
- #box {
- background: blue;
+ #box, #overlay {
+ /* Add a border to ensure that anti-aliasing does not leak blue pixels
+ outside of the element's bounds. */
+ border: 1px solid white;
height: 40px;
+ position: absolute;
+ top: 40px;
width: 40px;
}
+ #box {
+ background: blue;
+ left: 40px;
+ z-index: 1;
+ }
+ #overlay {
+ background: white;
+ left: 140px;
+ z-index: 2;
+ }
+ #notes {
+ position: absolute;
+ left: 0px;
+ top: 100px;
+ }
+ body {
+ backgrond: white;
+ }
</style>
<body>
<div id="box"></div>
- <p>This test reverses the animation shortly after the box starts moving. If
- the box doesn't move back to its original position, the test has failed.
- </p>
+ <div id="overlay"></div>
+ <p id="notes">
+ This test reverses the animation shortly after the box starts moving. If
+ any blue pixels are visible the test has failed.
+ </p>
</body>
<script>
onload = function() {
- const elem = document.getElementById('box');
- const anim = elem.animate([
- { transform: 'translateX(100px)' },
- { transform: 'translateX(100px)' },
- { transform: 'translateX(200px)' },
- { transform: 'translateX(200px)' }
- ], {
- duration: 1000
+ // Double rAF to ensure that we are not bogged down during initialization
+ // and the compositor is ready.
+ requestAnimationFrame(() => {
+ requestAnimationFrame(() => {
+ const elem = document.getElementById('box');
+ const anim = elem.animate([
+ { transform: 'translateX(100px)' },
+ { transform: 'translateX(100px)' },
+ { transform: 'translateX(200px)' },
+ { transform: 'translateX(200px)' }
+ ], {
+ duration: 1000
+ });
+ setTimeout(() => {
+ anim.reverse();
+ }, 500);
+ takeScreenshotDelayed(900);
});
-
- anim.ready.then(() => {
- setTimeout(() => {
- anim.reverse();
- }, 500);
- takeScreenshotDelayed(900);
});
};
</script>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html
index b1fc43e7952..6687ad7612e 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html
@@ -67,5 +67,74 @@ promise_test(async t => {
}, 'Setting the current time of a pausing animation applies a pending playback'
+ ' rate');
+
+// The following tests verify that currentTime can be set outside of the normal
+// bounds of an animation.
+
+promise_test(async t => {
+ const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ await anim.ready;
+
+ anim.currentTime = 200 * MS_PER_SEC;
+ assert_equals(anim.playState, 'finished');
+ assert_time_equals_literal(anim.currentTime, 200 * MS_PER_SEC);
+}, 'Setting the current time after the end with a positive playback rate');
+
+promise_test(async t => {
+ const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ await anim.ready;
+
+ anim.currentTime = -100 * MS_PER_SEC;
+ assert_equals(anim.playState, 'running');
+ assert_time_equals_literal(anim.currentTime, -100 * MS_PER_SEC);
+
+ await waitForAnimationFrames(2);
+ assert_greater_than(anim.currentTime, -100 * MS_PER_SEC);
+}, 'Setting a negative current time with a positive playback rate');
+
+promise_test(async t => {
+ const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ anim.updatePlaybackRate(-1);
+ await anim.ready;
+
+ anim.currentTime = 200 * MS_PER_SEC;
+ assert_equals(anim.playState, 'running');
+ assert_time_equals_literal(anim.currentTime, 200 * MS_PER_SEC);
+
+ await waitForAnimationFrames(2);
+ assert_less_than(anim.currentTime, 200 * MS_PER_SEC);
+}, 'Setting the current time after the end with a negative playback rate');
+
+promise_test(async t => {
+ const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ anim.updatePlaybackRate(-1);
+ await anim.ready;
+
+ anim.currentTime = -100 * MS_PER_SEC;
+ assert_equals(anim.playState, 'finished');
+ assert_time_equals_literal(anim.currentTime, -100 * MS_PER_SEC);
+}, 'Setting a negative current time with a negative playback rate');
+
+promise_test(async t => {
+ const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ anim.updatePlaybackRate(0);
+ await anim.ready;
+
+ // An animation with a playback rate of zero is never in the finished state
+ // even if currentTime is outside the normal range of [0, effect end].
+ anim.currentTime = 200 * MS_PER_SEC;
+ assert_equals(anim.playState, 'running');
+ assert_time_equals_literal(anim.currentTime, 200 * MS_PER_SEC);
+ await waitForAnimationFrames(2);
+ assert_time_equals_literal(anim.currentTime, 200 * MS_PER_SEC);
+
+ anim.currentTime = -200 * MS_PER_SEC;
+ assert_equals(anim.playState, 'running');
+ assert_time_equals_literal(anim.currentTime, -200 * MS_PER_SEC);
+ await waitForAnimationFrames(2);
+ assert_time_equals_literal(anim.currentTime, -200 * MS_PER_SEC);
+
+}, 'Setting the current time on an animation with a zero playback rate');
+
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html
index 9d07d53df46..0522c43b16a 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html
@@ -57,5 +57,54 @@ promise_test(async t => {
assert_equals(animation.playbackRate, 1);
}, 'Setting the playback rate should clear any pending playback rate');
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ animation.currentTime = 50 * MS_PER_SEC;
+ animation.pause();
+ await animation.ready;
+ animation.playbackRate = 2;
+ // Ensure that the animation remains paused and current time is preserved.
+ assert_equals(animation.playState, 'paused');
+ assert_time_equals_literal(animation.currentTime, 50 * MS_PER_SEC);
+}, 'Setting the playback rate while paused preserves the current time and '
+ + 'state');
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ animation.currentTime = 150 * MS_PER_SEC;
+ await animation.ready;
+ animation.playbackRate = 2;
+ // Ensure that current time is preserved and does not snap to the effect end
+ // time.
+ assert_equals(animation.playState, 'finished');
+ assert_time_equals_literal(animation.currentTime, 150 * MS_PER_SEC);
+}, 'Setting the playback rate while finished preserves the current time');
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ animation.currentTime = 150 * MS_PER_SEC;
+ await animation.ready;
+ assert_equals(animation.playState, 'finished');
+ animation.playbackRate = -1;
+ // Ensure that current time does not snap to the effect end time and that the
+ // animation resumes playing.
+ assert_equals(animation.playState, 'running');
+ assert_time_equals_literal(animation.currentTime, 150 * MS_PER_SEC);
+ await waitForAnimationFrames(2);
+ assert_less_than(animation.currentTime, 150 * MS_PER_SEC);
+}, 'Reversing the playback rate while finished restarts the animation');
+
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ animation.currentTime = 50 * MS_PER_SEC;
+ await animation.ready;
+ animation.playbackRate = 0;
+ // Ensure that current time does not drift.
+ assert_equals(animation.playState, 'running');
+ await waitForAnimationFrames(2);
+ assert_time_equals_literal(animation.currentTime, 50 * MS_PER_SEC);
+}, 'Setting a zero playback rate while running preserves the current time');
+
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html
index a1727994bdb..14c9c601005 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html
@@ -266,5 +266,36 @@ promise_test(async t => {
assert_time_equals_literal(parseInt(anim.currentTime.toPrecision(5), 10), 50 * MS_PER_SEC);
}, 'Setting the start time of a playing animation applies a pending playback rate');
+promise_test(async t => {
+ const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ await anim.ready;
+ assert_equals(anim.playState, 'running');
+
+ // Setting the start time updates the finished state. The hold time is not
+ // constrained by the effect end time.
+ anim.startTime = -200 * MS_PER_SEC;
+ assert_equals(anim.playState, 'finished');
+
+ assert_times_equal(anim.currentTime,
+ document.timeline.currentTime + 200 * MS_PER_SEC);
+}, 'Setting the start time on a running animation updates the play state');
+
+promise_test(async t => {
+ const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ await anim.ready;
+
+ // Setting the start time updates the finished state. The hold time is not
+ // constrained by the normal range of the animation time.
+ anim.currentTime = 100 * MS_PER_SEC;
+ assert_equals(anim.playState, 'finished');
+ anim.playbackRate = -1;
+ assert_equals(anim.playState, 'running');
+ anim.startTime = -200 * MS_PER_SEC;
+ assert_equals(anim.playState, 'finished');
+ assert_times_equal(anim.currentTime,
+ -document.timeline.currentTime - 200 * MS_PER_SEC);
+}, 'Setting the start time on a reverse running animation updates the play '
+ + 'state');
+
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFErrorEvent_constructor.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFErrorEvent_constructor.https.html
deleted file mode 100644
index 243893620c6..00000000000
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFErrorEvent_constructor.https.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE html>
-<title>NDEFErrorEvent constructor</title>
-<link rel="help" href="https://w3c.github.io/web-nfc/#dom-ndeferrorevent">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script>
- test(() => {
- assert_equals(NDEFErrorEvent.length, 2);
- assert_throws(new TypeError, () => new NDEFErrorEvent('error'));
- }, 'NDEFErrorEvent constructor without init dict');
-
- test(() => {
- assert_throws(new TypeError, () => new NDEFErrorEvent('error', { error : null }));
- }, 'NDEFErrorEvent constructor with a null that is not of type DOMException');
-
- test(() => {
- const event = new NDEFErrorEvent('error', { error : new DOMException() });
- assert_true(event.error instanceof DOMException);
- }, 'NDEFErrorEvent constructor with a valid DOMException');
-</script>
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFMessage_constructor.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFMessage_constructor.https.html
index f32f179b957..1c842f5c7b6 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFMessage_constructor.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFMessage_constructor.https.html
@@ -13,7 +13,6 @@
test(() => {
const message = new NDEFMessage(null);
- assert_equals(message.url.length, 0, 'empty url');
assert_equals(message.records.length, 0, 'empty records');
}, 'NDEFMessage constructor with null init dict');
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html
index 78160fbcb2a..d3101ab8e1a 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html
@@ -36,20 +36,6 @@ promise_test(async t => {
}, "Test that NDEFReader.scan rejects if signal is not an AbortSignal.");
promise_test(async t => {
- await waitSyntaxErrorPromise(t, {id: "www.a.com"});
-}, "Test that NDEFReader.scan rejects if NDEFScanOptions.id is missing \
-components.");
-
-promise_test(async t => {
- await waitSyntaxErrorPromise(t, {id: "invalid"});
-}, "Test that NDEFReader.scan rejects if NDEFScanOptions.id is invalid.");
-
-promise_test(async t => {
- await waitSyntaxErrorPromise(t, {id: "http://a.com"});
-}, "Test that NDEFReader.scan rejects if NDEFScanOptions.id has wrong \
-protocol.");
-
-promise_test(async t => {
if (window.testRunner) {
// Deny nfc permissions for Chromium testrunner.
window.testRunner.setPermission('nfc', 'denied',
@@ -59,6 +45,23 @@ promise_test(async t => {
await promise_rejects(t, 'NotAllowedError', reader.scan());
}, "NDEFReader.scan should fail if user permission is not granted.");
+// We do not provide NFC mock here to simulate that there has no available
+// implementation for NFC Mojo interface.
+promise_test(async t => {
+ if (window.testRunner) {
+ window.testRunner.setPermission('nfc', 'granted',
+ location.origin, location.origin);
+ }
+ const reader = new NDEFReader();
+ const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
+ const promise = readerWatcher.wait_for("error").then(event => {
+ assert_true(event instanceof ErrorEvent);
+ });
+ await promise_rejects(t, 'NotSupportedError', reader.scan());
+ await promise;
+}, "Test that an error event happens if no implementation for NFC Mojo interface \
+is available.");
+
nfc_test(async (t, mockNFC) => {
mockNFC.setHWStatus(NFCHWStatus.DISABLED);
const reader = new NDEFReader();
@@ -93,56 +96,11 @@ nfc_test(async (t, mockNFC) => {
assert_true(event instanceof NDEFReadingEvent);
controller.abort();
});
- await reader.scan({signal : controller.signal, url: "https://a.com"});
-
- mockNFC.setReadingMessage(createMessage([createTextRecord(test_text_data)]));
- await promise;
-}, "Test that NDEFReader.scan succeeds if NDEFScanOptions.url is valid URL.");
-
-nfc_test(async (t, mockNFC) => {
- const reader = new NDEFReader();
- const controller = new AbortController();
- const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
- const promise = readerWatcher.wait_for("reading").then(event => {
- assert_true(event instanceof NDEFReadingEvent);
- controller.abort();
- });
- await reader.scan({signal : controller.signal, url: "https://a.com/*"});
-
- mockNFC.setReadingMessage(createMessage([createTextRecord(test_text_data)]));
- await promise;
-}, "Test that NDEFReader.scan succeeds if NDEFScanOptions.url is valid URL \
-with '*' wildcard character in path.");
-
-nfc_test(async (t, mockNFC) => {
- const reader = new NDEFReader();
- const controller = new AbortController();
- const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
- const promise = readerWatcher.wait_for("reading").then(event => {
- assert_true(event instanceof NDEFReadingEvent);
- controller.abort();
- });
- await reader.scan({signal : controller.signal, url: "https://a.com/*/bar"});
-
- mockNFC.setReadingMessage(createMessage([createTextRecord(test_text_data)]));
- await promise;
-}, "Test that NDEFReader.scan succeeds if NDEFScanOptions.url is valid URL \
-with '*' wildcard character in the beginning of path component followed by \
-subpath.");
-
-nfc_test(async (t, mockNFC) => {
- const reader = new NDEFReader();
- const controller = new AbortController();
- const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
- const promise = readerWatcher.wait_for("reading").then(event => {
- assert_true(event instanceof NDEFReadingEvent);
- controller.abort();
- });
- await reader.scan({signal : controller.signal, url: ""});
+ await reader.scan({signal : controller.signal});
mockNFC.setReadingMessage(createMessage([createTextRecord(test_text_data)]));
await promise;
-}, "Test that NDEFReader.scan succeeds if NDEFScanOptions.url is empty.");
+}, "Test that NDEFReader.scan matches any ids if NDEFScanOptions.id is undefined.");
nfc_test(async (t, mockNFC) => {
const reader = new NDEFReader();
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan_filter.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan_filter.https.html
index 4c1e7de4400..850d9b9c088 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan_filter.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan_filter.https.html
@@ -62,12 +62,11 @@ const multiScanOptionsTests =
message: createMessage([createRecord('w3.org:xyz', test_buffer_data)])
},
{
- desc: "Test that the url of NDEFScanOptions filters relevant data" +
+ desc: "Test that the id of NDEFScanOptions filters relevant data" +
" sources correctly.",
- scanOptions: {id: `${location.origin}/custom/path`},
- unmatchedScanOptions: {id: `${location.origin}/custom/invalid`},
- message: {url: `${location.origin}/custom/path/update`,
- records: [createTextRecord(test_text_data)]}
+ scanOptions: {id: test_record_id},
+ unmatchedScanOptions: {id: 'non_sense_id'},
+ message: {records: [createTextRecord(test_text_data)]}
},
{
desc: "Test that the mediaType of NDEFScanOptions filters relevant data" +
@@ -131,12 +130,10 @@ const multiMessagesTests =
},
{
desc: "Test that filtering 'text' record from different messages" +
- " correctly with NDEFScanOptions' url set.",
- scanOptions: {id: `${location.origin}/custom/path`},
- message: {url: `${location.origin}/custom/path/update`,
- records: [createTextRecord(test_text_data)]},
- unmatchedMessage: {url: `${location.origin}/custom/invalid`,
- records: [createUrlRecord(test_url_data)]}
+ " correctly with NDEFScanOptions' id set.",
+ scanOptions: {id: test_record_id},
+ message: {records: [createTextRecord(test_text_data)]},
+ unmatchedMessage: {records: [createRecord('url', test_url_data, 'random_record_id')]}
},
{
desc: "Test that filtering 'mime' record from different messages" +
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFReadingEvent_constructor.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFReadingEvent_constructor.https.html
index 3d734105e9c..cc56f8a18bd 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFReadingEvent_constructor.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFReadingEvent_constructor.https.html
@@ -26,7 +26,6 @@
test(() => {
const event = new NDEFReadingEvent('type', {serialNumber: '', message: null});
assert_equals(0, event.message.records.length, 'no records');
- assert_equals(0, event.message.url.length, 'empty url');
}, 'NDEFReadingEvent constructor with null message');
test(() => {
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html
index 1b2dda9bfc8..f3546b99dcb 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html
@@ -18,6 +18,12 @@
test(() => {
assert_throws(new TypeError, () => new NDEFRecord(
+ createRecord('empty', test_text_data, test_record_id)),
+ 'id does not apply for empty record type.');
+ }, 'NDEFRecord constructor with empty record type and id');
+
+ test(() => {
+ assert_throws(new TypeError, () => new NDEFRecord(
createRecord('empty', test_text_data, test_record_id, 'text/plain')),
'mediaType does not apply for empty record type.');
assert_throws(new TypeError, () => new NDEFRecord(
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html
index a33b1fab303..bacbcaaeff3 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_push.https.html
@@ -124,7 +124,7 @@ promise_test(async t => {
}, "Test that promise is rejected with SyntaxError if NDEFMessageSource contains\
invalid records.");
- promise_test(async t => {
+promise_test(async t => {
if (window.testRunner) {
// Deny nfc permissions for Chromium testrunner.
window.testRunner.setPermission('nfc', 'denied',
@@ -134,6 +134,18 @@ promise_test(async t => {
await promise_rejects(t, 'NotAllowedError', writer.push(test_text_data));
}, 'NDEFWriter.push should fail if user permission is not granted.');
+// We do not provide NFC mock here to simulate that there has no available
+// implementation for NFC Mojo interface.
+promise_test(async t => {
+ if (window.testRunner) {
+ // Deny nfc permissions for Chromium testrunner.
+ window.testRunner.setPermission('nfc', 'granted',
+ location.origin, location.origin);
+ }
+ const writer = new NDEFWriter();
+ await promise_rejects(t, 'NotSupportedError', writer.push(test_text_data));
+}, 'NDEFWriter.push should fail if no implementation for NFC Mojo interface is available.');
+
nfc_test(async (t, mockNFC) => {
const writer = new NDEFWriter();
const controller = new AbortController();
@@ -209,14 +221,6 @@ promise_test(async t => {
promise_test(async t => {
const writer = new NDEFWriter();
- const message = createMessage([createTextRecord(test_text_data)]);
- message.url = '%00/invalid/ path';
- await promise_rejects(t, 'SyntaxError', writer.push(message));
-}, "Reject promise with SyntaxError if WebNFC Id cannot be created from \
-provided URL.");
-
-promise_test(async t => {
- const writer = new NDEFWriter();
await promise_rejects(
t, new TypeError(), writer.push(test_text_data, {target: "invalid"}));
}, "NDEFWriter.push should fail with TypeError when invalid target value is \
diff --git a/tests/wpt/web-platform-tests/web-nfc/idlharness.https.window.js b/tests/wpt/web-platform-tests/web-nfc/idlharness.https.window.js
index 74ffc21b220..a1eb3386b73 100644
--- a/tests/wpt/web-platform-tests/web-nfc/idlharness.https.window.js
+++ b/tests/wpt/web-platform-tests/web-nfc/idlharness.https.window.js
@@ -25,7 +25,6 @@ idl_test(
NDEFRecord: [`new NDEFRecord(${JSON.stringify(record)});`],
NDEFMessage: [`new NDEFMessage(${JSON.stringify(message)});`],
NDEFReadingEvent: [`new NDEFReadingEvent("reading", { message: ${JSON.stringify(message)} })`],
- NDEFErrorEvent: ['new NDEFErrorEvent("error", { error: new DOMException() });'],
});
}
);
diff --git a/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js b/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
index 3ce725a7c47..b9e260ac714 100644
--- a/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
+++ b/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
@@ -157,9 +157,6 @@ function assertNDEFMessagesEqual(providedMessage, receivedMessage) {
// NDEFWriter.onreading() EventHandler and another that is provided to mock NFC
// service.
function assertWebNDEFMessagesEqual(message, expectedMessage) {
- if (expectedMessage.url)
- assert_equals(message.url, expectedMessage.url);
-
assert_equals(message.records.length, expectedMessage.records.length);
for(let i in message.records) {
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html
index d87e35b571d..84458d0aaa7 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html
@@ -12,30 +12,32 @@
<script id="layout-test-code">
let audit = Audit.createTaskRunner();
- let sampleRate = 48000;
- let renderLength = 512;
- let context = new OfflineAudioContext(1, renderLength, sampleRate);
+ setup(() => {
+ let sampleRate = 48000;
+ let renderLength = 512;
+ let context = new OfflineAudioContext(1, renderLength, sampleRate);
- let filePath = 'processors/one-pole-processor.js';
+ let filePath = 'processors/one-pole-processor.js';
- // Without rendering the context, attempt to access |sampleRate| in the
- // global scope as soon as it is created.
- audit.define(
- 'Query |sampleRate| upon AudioWorkletGlobalScope construction',
- (task, should) => {
- let onePoleFilterNode =
- new AudioWorkletNode(context, 'one-pole-filter');
- let frequencyParam = onePoleFilterNode.parameters.get('frequency');
+ // Without rendering the context, attempt to access |sampleRate| in the
+ // global scope as soon as it is created.
+ audit.define(
+ 'Query |sampleRate| upon AudioWorkletGlobalScope construction',
+ (task, should) => {
+ let onePoleFilterNode =
+ new AudioWorkletNode(context, 'one-pole-filter');
+ let frequencyParam = onePoleFilterNode.parameters.get('frequency');
- should(frequencyParam.maxValue,
- 'frequencyParam.maxValue')
- .beEqualTo(0.5 * context.sampleRate);
+ should(frequencyParam.maxValue,
+ 'frequencyParam.maxValue')
+ .beEqualTo(0.5 * context.sampleRate);
- task.done();
- });
+ task.done();
+ });
- context.audioWorklet.addModule(filePath).then(() => {
- audit.run();
+ context.audioWorklet.addModule(filePath).then(() => {
+ audit.run();
+ });
});
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-timing-info.https.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-timing-info.https.html
index 79d402c5186..5f4bee7c531 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-timing-info.https.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-timing-info.https.html
@@ -12,45 +12,47 @@
<script id="layout-test-code">
let audit = Audit.createTaskRunner();
- let sampleRate = 48000;
- let renderLength = 512;
- let context = new OfflineAudioContext(1, renderLength, sampleRate);
+ setup(() => {
+ let sampleRate = 48000;
+ let renderLength = 512;
+ let context = new OfflineAudioContext(1, renderLength, sampleRate);
- let filePath = 'processors/timing-info-processor.js';
+ let filePath = 'processors/timing-info-processor.js';
- audit.define(
- 'Check the timing information from AudioWorkletProcessor',
- (task, should) => {
- let portWorkletNode =
- new AudioWorkletNode(context, 'timing-info-processor');
- portWorkletNode.connect(context.destination);
+ audit.define(
+ 'Check the timing information from AudioWorkletProcessor',
+ (task, should) => {
+ let portWorkletNode =
+ new AudioWorkletNode(context, 'timing-info-processor');
+ portWorkletNode.connect(context.destination);
- // Suspend at render quantum boundary and check the timing
- // information between the main thread and the rendering thread.
- [0, 128, 256, 384].map((suspendFrame) => {
- context.suspend(suspendFrame/sampleRate).then(() => {
- portWorkletNode.port.onmessage = (event) => {
- should(event.data.currentFrame,
- 'currentFrame from the processor at ' + suspendFrame)
- .beEqualTo(suspendFrame);
- should(event.data.currentTime,
- 'currentTime from the processor at '
- + context.currentTime)
- .beEqualTo(context.currentTime);
- context.resume();
- };
+ // Suspend at render quantum boundary and check the timing
+ // information between the main thread and the rendering thread.
+ [0, 128, 256, 384].map((suspendFrame) => {
+ context.suspend(suspendFrame/sampleRate).then(() => {
+ portWorkletNode.port.onmessage = (event) => {
+ should(event.data.currentFrame,
+ 'currentFrame from the processor at ' + suspendFrame)
+ .beEqualTo(suspendFrame);
+ should(event.data.currentTime,
+ 'currentTime from the processor at '
+ + context.currentTime)
+ .beEqualTo(context.currentTime);
+ context.resume();
+ };
- portWorkletNode.port.postMessage('query-timing-info');
+ portWorkletNode.port.postMessage('query-timing-info');
+ });
});
- });
- context.startRendering().then(() => {
- task.done();
+ context.startRendering().then(() => {
+ task.done();
+ });
});
- });
- context.audioWorklet.addModule(filePath).then(() => {
- audit.run();
+ context.audioWorklet.addModule(filePath).then(() => {
+ audit.run();
+ });
});
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-onerror.https.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-onerror.https.html
index 0a9966add85..0914edbb3b0 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-onerror.https.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-onerror.https.html
@@ -12,43 +12,45 @@
<script id="layout-test-code">
let audit = Audit.createTaskRunner();
- const sampleRate = 48000;
- const renderLength = sampleRate * 0.1;
- let context = new OfflineAudioContext(1, renderLength, sampleRate);
+ setup(() => {
+ const sampleRate = 48000;
+ const renderLength = sampleRate * 0.1;
+ let context = new OfflineAudioContext(1, renderLength, sampleRate);
- let filePath = 'processors/error-processor.js';
+ let filePath = 'processors/error-processor.js';
- // Test |onprocessorerror| called upon failure of processor constructor.
- audit.define('constructor-error',
- (task, should) => {
- let constructorErrorWorkletNode =
- new AudioWorkletNode(context, 'constructor-error');
- constructorErrorWorkletNode.onprocessorerror = () => {
- // Without 'processorerror' event callback, this test will be
- // timed out.
- task.done();
- };
- });
+ // Test |onprocessorerror| called upon failure of processor constructor.
+ audit.define('constructor-error',
+ (task, should) => {
+ let constructorErrorWorkletNode =
+ new AudioWorkletNode(context, 'constructor-error');
+ constructorErrorWorkletNode.onprocessorerror = () => {
+ // Without 'processorerror' event callback, this test will be
+ // timed out.
+ task.done();
+ };
+ });
- // Test |onprocessorerror| called upon failure of process() method.
- audit.define('process-error',
- (task, should) => {
- let processErrorWorkletNode =
- new AudioWorkletNode(context, 'process-error');
- processErrorWorkletNode.connect(context.destination);
- processErrorWorkletNode.onprocessorerror = () => {
- // Without 'processorerror' event callback, this test will be
- // timed out.
- task.done();
- };
+ // Test |onprocessorerror| called upon failure of process() method.
+ audit.define('process-error',
+ (task, should) => {
+ let processErrorWorkletNode =
+ new AudioWorkletNode(context, 'process-error');
+ processErrorWorkletNode.connect(context.destination);
+ processErrorWorkletNode.onprocessorerror = () => {
+ // Without 'processorerror' event callback, this test will be
+ // timed out.
+ task.done();
+ };
- context.startRendering();
- });
+ context.startRendering();
+ });
- // 'error-processor.js' contains 2 class definitions represents an error
- // in the constructor and an error in the process method respectively.
- context.audioWorklet.addModule(filePath).then(() => {
- audit.run();
+ // 'error-processor.js' contains 2 class definitions represents an error
+ // in the constructor and an error in the process method respectively.
+ context.audioWorklet.addModule(filePath).then(() => {
+ audit.run();
+ });
});
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html
index 9d65d872b98..a8a7f5ed1de 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html
@@ -13,7 +13,7 @@
const audit = Audit.createTaskRunner();
const context = new AudioContext();
- (async function () {
+ setup(async function () {
await context.audioWorklet.addModule(
'processors/channel-count-processor.js');
@@ -76,7 +76,7 @@
});
audit.run();
- })();
+ });
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https.html
index a2fa8040b2c..38bd94a037c 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https.html
@@ -14,60 +14,62 @@
<script id="layout-test-code">
const audit = Audit.createTaskRunner();
- const context = new AudioContext();
- context.suspend();
+ setup(() => {
+ const context = new AudioContext();
+ context.suspend();
- const host_info = get_host_info();
- const audioElement = document.createElement('audio');
- audioElement.loop = true;
- audioElement.crossOrigin = 'anonymous';
- const wav =
- host_info.HTTPS_ORIGIN + '/webaudio/resources/4ch-440.wav?' +
- 'pipe=header(access-control-allow-origin,*)';
- audioElement.src =
- host_info.HTTPS_REMOTE_ORIGIN +
- '/fetch/api/resources/redirect.py?location=' +
- encodeURIComponent(wav);
- let source;
- let workletRecorder;
+ const host_info = get_host_info();
+ const audioElement = document.createElement('audio');
+ audioElement.loop = true;
+ audioElement.crossOrigin = 'anonymous';
+ const wav =
+ host_info.HTTPS_ORIGIN + '/webaudio/resources/4ch-440.wav?' +
+ 'pipe=header(access-control-allow-origin,*)';
+ audioElement.src =
+ host_info.HTTPS_REMOTE_ORIGIN +
+ '/fetch/api/resources/redirect.py?location=' +
+ encodeURIComponent(wav);
+ let source;
+ let workletRecorder;
- audit.define(
- {label: 'setting-up-graph'},
- (task, should) => {
- source = new MediaElementAudioSourceNode(context, {
- mediaElement: audioElement
+ audit.define(
+ {label: 'setting-up-graph'},
+ (task, should) => {
+ source = new MediaElementAudioSourceNode(context, {
+ mediaElement: audioElement
+ });
+ workletRecorder = new AudioWorkletNode(
+ context, 'recorder-processor', {channelCount: 4});
+ source.connect(workletRecorder).connect(context.destination);
+ task.done();
});
- workletRecorder = new AudioWorkletNode(
- context, 'recorder-processor', {channelCount: 4});
- source.connect(workletRecorder).connect(context.destination);
- task.done();
- });
- // The recorded data from MESN must be non-zero. The source file contains
- // 4 channels of sine wave.
- audit.define(
- {label: 'start-playback-and-capture'},
- (task, should) => {
- workletRecorder.port.onmessage = (event) => {
- if (event.data.type === 'recordfinished') {
- for (let i = 0; i < event.data.recordBuffer.length; ++i) {
- const channelData = event.data.recordBuffer[i];
- should(channelData, `Recorded channel #${i}`)
- .notBeConstantValueOf(0);
+ // The recorded data from MESN must be non-zero. The source file contains
+ // 4 channels of sine wave.
+ audit.define(
+ {label: 'start-playback-and-capture'},
+ (task, should) => {
+ workletRecorder.port.onmessage = (event) => {
+ if (event.data.type === 'recordfinished') {
+ for (let i = 0; i < event.data.recordBuffer.length; ++i) {
+ const channelData = event.data.recordBuffer[i];
+ should(channelData, `Recorded channel #${i}`)
+ .notBeConstantValueOf(0);
+ }
}
- }
- task.done();
- };
+ task.done();
+ };
- context.resume();
- audioElement.play();
- });
+ context.resume();
+ audioElement.play();
+ });
- Promise.all([
- context.audioWorklet.addModule('/webaudio/js/worklet-recorder.js')
- ]).then(() => {
- audit.run();
+ Promise.all([
+ context.audioWorklet.addModule('/webaudio/js/worklet-recorder.js')
+ ]).then(() => {
+ audit.run();
+ });
});
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/no-cors.https.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/no-cors.https.html
index 38324a9f67a..de2f0b7dd3b 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/no-cors.https.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/no-cors.https.html
@@ -14,59 +14,61 @@
<script id="layout-test-code">
const audit = Audit.createTaskRunner();
- const context = new AudioContext();
- context.suspend();
+ setup(() => {
+ const context = new AudioContext();
+ context.suspend();
- const host_info = get_host_info();
- const audioElement = document.createElement('audio');
- audioElement.loop = true;
- const wav =
- host_info.HTTPS_ORIGIN + '/webaudio/resources/4ch-440.wav?' +
- 'pipe=header(access-control-allow-origin,*)';
- audioElement.src =
- host_info.HTTPS_REMOTE_ORIGIN +
- '/fetch/api/resources/redirect.py?location=' +
- encodeURIComponent(wav);
- let source;
- let workletRecorder;
+ const host_info = get_host_info();
+ const audioElement = document.createElement('audio');
+ audioElement.loop = true;
+ const wav =
+ host_info.HTTPS_ORIGIN + '/webaudio/resources/4ch-440.wav?' +
+ 'pipe=header(access-control-allow-origin,*)';
+ audioElement.src =
+ host_info.HTTPS_REMOTE_ORIGIN +
+ '/fetch/api/resources/redirect.py?location=' +
+ encodeURIComponent(wav);
+ let source;
+ let workletRecorder;
- audit.define(
- {label: 'setting-up-graph'},
- (task, should) => {
- source = new MediaElementAudioSourceNode(context, {
- mediaElement: audioElement
+ audit.define(
+ {label: 'setting-up-graph'},
+ (task, should) => {
+ source = new MediaElementAudioSourceNode(context, {
+ mediaElement: audioElement
+ });
+ workletRecorder = new AudioWorkletNode(
+ context, 'recorder-processor', {channelCount: 4});
+ source.connect(workletRecorder).connect(context.destination);
+ task.done();
});
- workletRecorder = new AudioWorkletNode(
- context, 'recorder-processor', {channelCount: 4});
- source.connect(workletRecorder).connect(context.destination);
- task.done();
- });
- // The recorded data from MESN must be non-zero. The source file contains
- // 4 channels of sine wave.
- audit.define(
- {label: 'start-playback-and-capture'},
- (task, should) => {
- workletRecorder.port.onmessage = (event) => {
- if (event.data.type === 'recordfinished') {
- for (let i = 0; i < event.data.recordBuffer.length; ++i) {
- const channelData = event.data.recordBuffer[i];
- should(channelData, `Recorded channel #${i}`)
- .beConstantValueOf(0);
+ // The recorded data from MESN must be non-zero. The source file contains
+ // 4 channels of sine wave.
+ audit.define(
+ {label: 'start-playback-and-capture'},
+ (task, should) => {
+ workletRecorder.port.onmessage = (event) => {
+ if (event.data.type === 'recordfinished') {
+ for (let i = 0; i < event.data.recordBuffer.length; ++i) {
+ const channelData = event.data.recordBuffer[i];
+ should(channelData, `Recorded channel #${i}`)
+ .beConstantValueOf(0);
+ }
}
- }
- task.done();
- };
+ task.done();
+ };
- context.resume();
- audioElement.play();
- });
+ context.resume();
+ audioElement.play();
+ });
- Promise.all([
- context.audioWorklet.addModule('/webaudio/js/worklet-recorder.js')
- ]).then(() => {
- audit.run();
+ Promise.all([
+ context.audioWorklet.addModule('/webaudio/js/worklet-recorder.js')
+ ]).then(() => {
+ audit.run();
+ });
});
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/webauthn/resources/common-inputs.js b/tests/wpt/web-platform-tests/webauthn/resources/common-inputs.js
new file mode 100644
index 00000000000..8370f7f079a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webauthn/resources/common-inputs.js
@@ -0,0 +1,34 @@
+const ES256_ID = -7;
+const CHALLENGE = "climb the mountain";
+
+const PUBLIC_KEY_RP = {
+ id: window.location.hostname,
+ name: "Example RP",
+};
+
+const PUBLIC_KEY_USER = {
+ id: new TextEncoder().encode("123456789"),
+ name: "madeline@example.com",
+ displayName: "Madeline",
+ icon: "https://example.com/celeste.png"
+};
+
+// ES256.
+const PUBLIC_KEY_PARAMETERS = [{
+ type: "public-key",
+ alg: ES256_ID,
+}];
+
+const AUTHENTICATOR_SELECTION_CRITERIA = {
+ requireResidentKey: false,
+ userVerification: "discouraged",
+};
+
+const MAKE_CREDENTIAL_OPTIONS = {
+ challenge: new TextEncoder("utf-8").encode(CHALLENGE),
+ rp: PUBLIC_KEY_RP,
+ user: PUBLIC_KEY_USER,
+ pubKeyCredParams: PUBLIC_KEY_PARAMETERS,
+ authenticatorSelection: AUTHENTICATOR_SELECTION_CRITERIA,
+ excludeCredentials: [],
+};
diff --git a/tests/wpt/web-platform-tests/webauthn/resources/utils.js b/tests/wpt/web-platform-tests/webauthn/resources/utils.js
new file mode 100644
index 00000000000..f361a94d2e4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webauthn/resources/utils.js
@@ -0,0 +1,335 @@
+"use strict";
+
+// Encodes |data| into base64url string. There is no '=' padding, and the
+// characters '-' and '_' must be used instead of '+' and '/', respectively.
+function base64urlEncode(data) {
+ let result = btoa(data);
+ return result.replace(/=+$/g, '').replace(/\+/g, "-").replace(/\//g, "_");
+}
+
+// Decode |encoded| using base64url decoding.
+function base64urlDecode(encoded) {
+ return atob(encoded.replace(/\-/g, "+").replace(/\_/g, "/"));
+}
+
+// Encodes a Uint8Array as a base64url string.
+function uint8ArrayToBase64url(array) {
+ return base64urlEncode(String.fromCharCode.apply(null, array));
+}
+
+// Convert a EC signature from DER to a concatenation of the r and s parameters,
+// as expected by the subtle crypto API.
+function convertDERSignatureToSubtle(der) {
+ let index = -1;
+ const SEQUENCE = 0x30;
+ const INTEGER = 0x02;
+ assert_equals(der[++index], SEQUENCE);
+
+ let size = der[++index];
+ assert_equals(size + 2, der.length);
+
+ assert_equals(der[++index], INTEGER);
+ let rSize = der[++index];
+ ++index;
+ while (der[index] == 0) {
+ ++index;
+ --rSize;
+ }
+ let r = der.slice(index, index + rSize);
+ index += rSize;
+
+ assert_equals(der[index], INTEGER);
+ let sSize = der[++index];
+ ++index;
+ while (der[index] == 0) {
+ ++index;
+ --sSize;
+ }
+ let s = der.slice(index, index + sSize);
+ assert_equals(index + sSize, der.length);
+
+ let result = new Uint8Array(64);
+ result.set(r, 32 - rSize);
+ result.set(s, 64 - sSize);
+ return result;
+};
+
+function coseObjectToJWK(cose) {
+ // Convert an object representing a COSE_Key encoded public key into a JSON
+ // Web Key object.
+ // https://tools.ietf.org/html/rfc7517
+
+ // The example used on the test is a ES256 key, so we only implement that.
+ let jwk = {};
+ if (cose.type != 2)
+ assert_unreached("Unknown type: " + cose.type);
+
+ jwk.kty = "EC";
+ if (cose.alg != ES256_ID)
+ assert_unreached("Unknown alg: " + cose.alg);
+
+ if (cose.crv != 1)
+ assert_unreached("Unknown curve: " + jwk.crv);
+
+ jwk.crv = "P-256";
+ jwk.x = uint8ArrayToBase64url(cose.x);
+ jwk.y = uint8ArrayToBase64url(cose.y);
+ return jwk;
+}
+
+function parseCosePublicKey(coseKey) {
+ // Parse a CTAP2 canonical CBOR encoding form key.
+ // https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#ctap2-canonical-cbor-encoding-form
+ let parsed = new Cbor(coseKey);
+ let cbor = parsed.getCBOR();
+ let key = {
+ type: cbor[1],
+ alg: cbor[3],
+ };
+ if (key.type != 2)
+ assert_unreached("Unknown key type: " + key.type);
+
+ key.crv = cbor[-1];
+ key.x = new Uint8Array(cbor[-2]);
+ key.y = new Uint8Array(cbor[-3]);
+ return key;
+}
+
+function parseAttestedCredentialData(attestedCredentialData) {
+ // Parse the attested credential data according to
+ // https://w3c.github.io/webauthn/#attested-credential-data
+ let aaguid = attestedCredentialData.slice(0, 16);
+ let credentialIdLength = (attestedCredentialData[16] << 8)
+ + attestedCredentialData[17];
+ let credentialId =
+ attestedCredentialData.slice(18, 18 + credentialIdLength);
+ let credentialPublicKey = parseCosePublicKey(
+ attestedCredentialData.slice(18 + credentialIdLength,
+ attestedCredentialData.length));
+
+ return { aaguid, credentialIdLength, credentialId, credentialPublicKey };
+}
+
+function parseAuthenticatorData(authenticatorData) {
+ // Parse the authenticator data according to
+ // https://w3c.github.io/webauthn/#sctn-authenticator-data
+ assert_greater_than_equal(authenticatorData.length, 37);
+ let flags = authenticatorData[32];
+ let counter = authenticatorData.slice(33, 37);
+
+ let attestedCredentialData = authenticatorData.length > 37 ?
+ parseAttestedCredentialData(authenticatorData.slice(37)) : null;
+ let extensions = null;
+ if (attestedCredentialData &&
+ authenticatorData.length > 37 + attestedCredentialData.length) {
+ extensions = authenticatorData.slice(37 + attestedCredentialData.length);
+ }
+
+ return {
+ rpIdHash: authenticatorData.slice(0, 32),
+ flags: {
+ up: !!(flags & 0x01),
+ uv: !!(flags & 0x04),
+ at: !!(flags & 0x40),
+ ed: !!(flags & 0x80),
+ },
+ counter: (counter[0] << 24)
+ + (counter[1] << 16)
+ + (counter[2] << 8)
+ + counter[3],
+ attestedCredentialData,
+ extensions,
+ };
+}
+
+// Taken from
+// https://cs.chromium.org/chromium/src/chrome/browser/resources/cryptotoken/cbor.js?rcl=c9b6055cf9c158fb4119afd561a591f8fc95aefe
+class Cbor {
+ constructor(buffer) {
+ this.slice = new Uint8Array(buffer);
+ }
+ get data() {
+ return this.slice;
+ }
+ get length() {
+ return this.slice.length;
+ }
+ get empty() {
+ return this.slice.length == 0;
+ }
+ get hex() {
+ const hexTable = '0123456789abcdef';
+ let s = '';
+ for (let i = 0; i < this.data.length; i++) {
+ s += hexTable.charAt(this.data[i] >> 4);
+ s += hexTable.charAt(this.data[i] & 15);
+ }
+ return s;
+ }
+ compare(other) {
+ if (this.length < other.length) {
+ return -1;
+ } else if (this.length > other.length) {
+ return 1;
+ }
+ for (let i = 0; i < this.length; i++) {
+ if (this.slice[i] < other.slice[i]) {
+ return -1;
+ } else if (this.slice[i] > other.slice[i]) {
+ return 1;
+ }
+ }
+ return 0;
+ }
+ getU8() {
+ if (this.empty) {
+ throw('Cbor: empty during getU8');
+ }
+ const byte = this.slice[0];
+ this.slice = this.slice.subarray(1);
+ return byte;
+ }
+ skip(n) {
+ if (this.length < n) {
+ throw('Cbor: too few bytes to skip');
+ }
+ this.slice = this.slice.subarray(n);
+ }
+ getBytes(n) {
+ if (this.length < n) {
+ throw('Cbor: insufficient bytes in getBytes');
+ }
+ const ret = this.slice.subarray(0, n);
+ this.slice = this.slice.subarray(n);
+ return ret;
+ }
+ getCBORHeader() {
+ const copy = new Cbor(this.slice);
+ const a = this.getU8();
+ const majorType = a >> 5;
+ const info = a & 31;
+ if (info < 24) {
+ return [majorType, info, new Cbor(copy.getBytes(1))];
+ } else if (info < 28) {
+ const lengthLength = 1 << (info - 24);
+ let data = this.getBytes(lengthLength);
+ let value = 0;
+ for (let i = 0; i < lengthLength; i++) {
+ // Javascript has problems handling uint64s given the limited range of
+ // a double.
+ if (value > 35184372088831) {
+ throw('Cbor: cannot represent CBOR number');
+ }
+ // Not using bitwise operations to avoid truncating to 32 bits.
+ value *= 256;
+ value += data[i];
+ }
+ switch (lengthLength) {
+ case 1:
+ if (value < 24) {
+ throw('Cbor: value should have been encoded in single byte');
+ }
+ break;
+ case 2:
+ if (value < 256) {
+ throw('Cbor: non-minimal integer');
+ }
+ break;
+ case 4:
+ if (value < 65536) {
+ throw('Cbor: non-minimal integer');
+ }
+ break;
+ case 8:
+ if (value < 4294967296) {
+ throw('Cbor: non-minimal integer');
+ }
+ break;
+ }
+ return [majorType, value, new Cbor(copy.getBytes(1 + lengthLength))];
+ } else {
+ throw('Cbor: CBOR contains unhandled info value ' + info);
+ }
+ }
+ getCBOR() {
+ const [major, value] = this.getCBORHeader();
+ switch (major) {
+ case 0:
+ return value;
+ case 1:
+ return 0 - (1 + value);
+ case 2:
+ return this.getBytes(value);
+ case 3:
+ return this.getBytes(value);
+ case 4: {
+ let ret = new Array(value);
+ for (let i = 0; i < value; i++) {
+ ret[i] = this.getCBOR();
+ }
+ return ret;
+ }
+ case 5:
+ if (value == 0) {
+ return {};
+ }
+ let copy = new Cbor(this.data);
+ const [firstKeyMajor] = copy.getCBORHeader();
+ if (firstKeyMajor == 3) {
+ // String-keyed map.
+ let lastKeyHeader = new Cbor(new Uint8Array(0));
+ let lastKeyBytes = new Cbor(new Uint8Array(0));
+ let ret = {};
+ for (let i = 0; i < value; i++) {
+ const [keyMajor, keyLength, keyHeader] = this.getCBORHeader();
+ if (keyMajor != 3) {
+ throw('Cbor: non-string in string-valued map');
+ }
+ const keyBytes = new Cbor(this.getBytes(keyLength));
+ if (i > 0) {
+ const headerCmp = lastKeyHeader.compare(keyHeader);
+ if (headerCmp > 0 ||
+ (headerCmp == 0 && lastKeyBytes.compare(keyBytes) >= 0)) {
+ throw(
+ 'Cbor: map keys in wrong order: ' + lastKeyHeader.hex +
+ '/' + lastKeyBytes.hex + ' ' + keyHeader.hex + '/' +
+ keyBytes.hex);
+ }
+ }
+ lastKeyHeader = keyHeader;
+ lastKeyBytes = keyBytes;
+ ret[keyBytes.parseUTF8()] = this.getCBOR();
+ }
+ return ret;
+ } else if (firstKeyMajor == 0 || firstKeyMajor == 1) {
+ // Number-keyed map.
+ let lastKeyHeader = new Cbor(new Uint8Array(0));
+ let ret = {};
+ for (let i = 0; i < value; i++) {
+ let [keyMajor, keyValue, keyHeader] = this.getCBORHeader();
+ if (keyMajor != 0 && keyMajor != 1) {
+ throw('Cbor: non-number in number-valued map');
+ }
+ if (i > 0 && lastKeyHeader.compare(keyHeader) >= 0) {
+ throw(
+ 'Cbor: map keys in wrong order: ' + lastKeyHeader.hex + ' ' +
+ keyHeader.hex);
+ }
+ lastKeyHeader = keyHeader;
+ if (keyMajor == 1) {
+ keyValue = 0 - (1 + keyValue);
+ }
+ ret[keyValue] = this.getCBOR();
+ }
+ return ret;
+ } else {
+ throw('Cbor: map keyed by invalid major type ' + firstKeyMajor);
+ }
+ default:
+ throw('Cbor: unhandled major type ' + major);
+ }
+ }
+ parseUTF8() {
+ return (new TextDecoder('utf-8')).decode(this.slice);
+ }
+}
diff --git a/tests/wpt/web-platform-tests/webauthn/webauthn-testdriver-basic.https.html b/tests/wpt/web-platform-tests/webauthn/webauthn-testdriver-basic.https.html
new file mode 100644
index 00000000000..7790f5d0d3f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webauthn/webauthn-testdriver-basic.https.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html>
+<title>Successful WebAuthn tests</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="resources/common-inputs.js"></script>
+<script src="resources/utils.js"></script>
+
+<script>
+"use strict";
+
+promise_test(async t => {
+ return window.test_driver.add_virtual_authenticator({
+ protocol: "ctap1/u2f",
+ transport: "usb",
+ });
+}, "Set up the test environment");
+
+let credential;
+let publicKey;
+
+promise_test(async t => {
+ credential = await navigator.credentials.create({
+ publicKey: MAKE_CREDENTIAL_OPTIONS,
+ });
+
+ // Perform the validations the Relying Party should do against the credential.
+ // https://w3c.github.io/webauthn/#sctn-registering-a-new-credential
+ let jsonText =
+ new TextDecoder("utf-8").decode(credential.response.clientDataJSON);
+ let clientData = JSON.parse(jsonText);
+ assert_equals(clientData.type, "webauthn.create");
+ assert_equals(clientData.challenge, base64urlEncode(CHALLENGE));
+ assert_equals(clientData.origin, window.location.origin);
+
+ let attestationObject =
+ new Cbor(credential.response.attestationObject).getCBOR();
+
+ let rpIdHash = new Uint8Array(await crypto.subtle.digest(
+ { name: "SHA-256" }, new TextEncoder("utf-8").encode(PUBLIC_KEY_RP.id)));
+
+ let authenticatorData = parseAuthenticatorData(attestationObject.authData);
+
+ assert_array_equals(authenticatorData.rpIdHash, rpIdHash)
+ assert_true(authenticatorData.flags.up);
+ assert_false(authenticatorData.flags.uv);
+
+ publicKey = authenticatorData.attestedCredentialData.credentialPublicKey;
+ assert_equals(publicKey.alg, PUBLIC_KEY_PARAMETERS[0].alg);
+ assert_equals(publicKey.type, 2 /* EC2 */);
+
+ assert_equals(authenticatorData.extensions, null);
+ assert_object_equals(credential.getClientExtensionResults(), {});
+}, "Create a credential");
+
+promise_test(async t => {
+ let assertion = await navigator.credentials.get({
+ publicKey: {
+ challenge: new TextEncoder("utf-8").encode(CHALLENGE),
+ rpId: PUBLIC_KEY_RP.id,
+ allowCredentials: [{
+ type: "public-key",
+ id: credential.rawId,
+ transports: ["usb"],
+ }],
+ userVerification: "discouraged",
+ },
+ });
+
+ // Perform the validations the Relying Party should do against the assertion.
+ // https://w3c.github.io/webauthn/#sctn-verifying-assertion
+ assert_object_equals(credential.rawId, assertion.rawId);
+ let jsonText =
+ new TextDecoder("utf-8").decode(assertion.response.clientDataJSON);
+ let clientData = JSON.parse(jsonText);
+ assert_equals(clientData.type, "webauthn.get");
+ assert_equals(clientData.challenge, base64urlEncode(CHALLENGE));
+ assert_equals(clientData.type, "webauthn.get");
+ assert_equals(clientData.origin, window.location.origin);
+
+ let binaryAuthenticatorData =
+ new Uint8Array(assertion.response.authenticatorData);
+
+ let authenticatorData = parseAuthenticatorData(binaryAuthenticatorData);
+
+ let rpIdHash = new Uint8Array(await crypto.subtle.digest(
+ { name: "SHA-256" }, new TextEncoder("utf-8").encode(PUBLIC_KEY_RP.id)));
+
+ assert_array_equals(authenticatorData.rpIdHash, rpIdHash)
+ assert_true(authenticatorData.flags.up);
+ assert_false(authenticatorData.flags.uv);
+
+ assert_equals(authenticatorData.extensions, null);
+ assert_object_equals(credential.getClientExtensionResults(), {});
+ assert_equals(authenticatorData.attestedCredentialData, null);
+
+ let jwkPublicKey = coseObjectToJWK(publicKey);
+ let key = await crypto.subtle.importKey(
+ "jwk", jwkPublicKey, {name: "ECDSA", namedCurve: "P-256"},
+ /*extractable=*/false, ["verify"]);
+
+ let signature =
+ convertDERSignatureToSubtle(new Uint8Array(assertion.response.signature));
+
+ let clientDataJsonHash = new Uint8Array(await crypto.subtle.digest(
+ "SHA-256", assertion.response.clientDataJSON));
+ let signedData =
+ new Uint8Array(binaryAuthenticatorData.length + clientDataJsonHash.length);
+ signedData.set(binaryAuthenticatorData);
+ signedData.set(clientDataJsonHash, binaryAuthenticatorData.length);
+
+ assert_true(await crypto.subtle.verify(
+ { name: "ECDSA", hash: "SHA-256" }, key, signature, signedData));
+}, "Get an assertion");
+
+</script>
diff --git a/tests/wpt/web-platform-tests/workers/Worker-constructor-proto.any.js b/tests/wpt/web-platform-tests/workers/Worker-constructor-proto.any.js
index 73eabd55226..90ad767b980 100644
--- a/tests/wpt/web-platform-tests/workers/Worker-constructor-proto.any.js
+++ b/tests/wpt/web-platform-tests/workers/Worker-constructor-proto.any.js
@@ -1,7 +1,7 @@
//META: global=!default, worker
test(() => {
proto = new Number(42)
- assert_equals(String(Object.getPrototypeOf(WorkerLocation)), "function () { [native code] }");
+ assert_equals(String(Object.getPrototypeOf(WorkerLocation)).replace(/\n/g, " ").replace(/\s\s+/g, " "), "function () { [native code] }");
WorkerLocation.__proto__ = proto;
assert_object_equals(Object.getPrototypeOf(WorkerLocation), Object(42));
}, 'Tests that setting the proto of a built in constructor is not reset.');
diff --git a/tests/wpt/web-platform-tests/workers/Worker-location.sub.any.js b/tests/wpt/web-platform-tests/workers/Worker-location.sub.any.js
index 2ef94455310..1c3dabff036 100644
--- a/tests/wpt/web-platform-tests/workers/Worker-location.sub.any.js
+++ b/tests/wpt/web-platform-tests/workers/Worker-location.sub.any.js
@@ -1,6 +1,6 @@
// META: global=!default, dedicatedworker, sharedworker
test(() => {
- assert_equals(String(WorkerLocation), "function WorkerLocation() { [native code] }");
+ assert_equals(String(WorkerLocation).replace(/\n/g, " ").replace(/\s\s+/g, " "), "function WorkerLocation() { [native code] }");
assert_true(location instanceof Object);
assert_equals(location.href, 'http://{{host}}:{{ports[http][0]}}/workers/Worker-location.sub.any.worker.js');
assert_equals(location.origin, "http://{{host}}:{{ports[http][0]}}");
diff --git a/tests/wpt/web-platform-tests/workers/Worker-multi-port.html b/tests/wpt/web-platform-tests/workers/Worker-multi-port.html
index 9a89583ad91..138f8f02d4e 100644
--- a/tests/wpt/web-platform-tests/workers/Worker-multi-port.html
+++ b/tests/wpt/web-platform-tests/workers/Worker-multi-port.html
@@ -56,7 +56,7 @@ test(() => {
test(() => {
var worker = new Worker("support/Worker-thread-multi-port.js")
var channel = new MessageChannel();
- assert_throws(new TypeError(),
+ assert_throws('DataCloneError',
function() { worker.postMessage("notAPort",
[channel.port1, {},
channel.port2]); },
@@ -65,7 +65,7 @@ test(() => {
test(() => {
var worker = new Worker("support/Worker-thread-multi-port.js");
- assert_throws(new TypeError(),
+ assert_throws('DataCloneError',
function() { worker.postMessage("notASequence", [{length: 3}]) },
'postMessage without sequence should throw exception.');
}, 'Test postMessage without sequence throws exception');
@@ -73,7 +73,7 @@ test(() => {
async_test(function(t) {
var worker = new Worker("support/Worker-thread-multi-port.js");
var channel = new MessageChannel();
- assert_throws(new TypeError(),
+ assert_throws('DataCloneError',
function() { worker.postMessage("notAPort",
[channel.port1, {},
channel.port2]); },
diff --git a/tests/wpt/web-platform-tests/workers/WorkerGlobalScope-close.html b/tests/wpt/web-platform-tests/workers/WorkerGlobalScope-close.html
index a193a3478f4..08ab1ca515c 100644
--- a/tests/wpt/web-platform-tests/workers/WorkerGlobalScope-close.html
+++ b/tests/wpt/web-platform-tests/workers/WorkerGlobalScope-close.html
@@ -16,16 +16,31 @@ async_test(function(t) {
async_test(function(t) {
var worker = new Worker('support/WorkerGlobalScope-close.js');
worker.postMessage("ping");
- worker.onmessage = t.step_func(function(evt) {
+ worker.onmessage = t.step_func(function(evt) {
assert_equals(evt.data, "pong");
- // Tell the worker to close, then send a followup message. This message
- // should not be delivered, since that would require JS to invoke the
- // onmessage handler, which does not happen after the JS fragment with
- // 'close()' in it exits. So, the 'ping' should not come back as 'pong'.
+ // Tell the worker to close, then send a followup message.
worker.postMessage("close");
+
+ // The worker may or may not be closing/closed by this call. If it is, the
+ // message won't be enqueued on the worker's event loop. If it isn't, the
+ // message will be enqueued but shouldn't be handled by the worker because
+ // the prior postMessage will cause the worker to close. In either case,
+ // the worker shouldn't postMessage back "pong".
+ //
+ // This also means that at this point we can't confidently test
+ // postMessage-ing a worker that will close nor a worker that is already
+ // closing/closed.
worker.postMessage("ping");
- worker.onmessage = t.step_func(function(evt) {
+
+ worker.onmessage = t.step_func(function(evt) {
assert_not_equals(evt.data, "pong");
+
+ // The worker should definitely be closed by now, so we can confidently
+ // test postMessage-ing a closed worker. This postMessage shouldn't throw
+ // or cause the worker to postMessage back "pong" (it shouldn't receive
+ // any events after closing).
+ worker.postMessage("ping");
+
t.step_timeout(function() { t.done(); }, 500);
});
});
diff --git a/tests/wpt/web-platform-tests/workers/Worker_script_mimetype.htm b/tests/wpt/web-platform-tests/workers/Worker_script_mimetype.htm
index 04fe68e6628..55d81d5d1c9 100644
--- a/tests/wpt/web-platform-tests/workers/Worker_script_mimetype.htm
+++ b/tests/wpt/web-platform-tests/workers/Worker_script_mimetype.htm
@@ -9,6 +9,8 @@ async_test(function(t) {
worker.onmessage = t.step_func_done(function(e) {
assert_equals(e.data, "Pass");
});
+ // TODO(mkwst): Revisit this after https://github.com/whatwg/html/issues/3255.
+ worker.onerror = t.unreached_func("Worker should load.");
worker.postMessage("start");
});
</script>