diff options
author | Servo WPT Sync <josh+wptsync@joshmatthews.net> | 2024-05-05 05:12:21 +0000 |
---|---|---|
committer | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2024-05-05 05:13:02 +0000 |
commit | 0763a2206f247d8f5a3c02e2f54fc25c3d9582ae (patch) | |
tree | 401a66536b54cbecfa60ae76d811693a9f66dbce | |
parent | ff3cd1494ea5c333d8f53450ccd50fe3a287e2a1 (diff) | |
download | servo-wpt_update_05-05-2024.tar.gz servo-wpt_update_05-05-2024.zip |
Update web-platform-tests to revision b'536297144c737f84096d1f448e790de0fb654956'wpt_update_05-05-2024
173 files changed, 4244 insertions, 622 deletions
diff --git a/tests/wpt/meta-legacy-layout/css/css-easing/linear-timing-functions-output.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-easing/linear-timing-functions-output.html.ini index ca90b52fe3e..30d62fe90a3 100644 --- a/tests/wpt/meta-legacy-layout/css/css-easing/linear-timing-functions-output.tentative.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-easing/linear-timing-functions-output.html.ini @@ -1,4 +1,4 @@ -[linear-timing-functions-output.tentative.html] +[linear-timing-functions-output.html] [linear function easing with output greater than 1] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-margins-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-margins-003.html.ini new file mode 100644 index 00000000000..1847181fd5a --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-margins-003.html.ini @@ -0,0 +1,2 @@ +[position-sticky-margins-003.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-ui/webkit-appearance-auto-non-html-namespace-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-ui/webkit-appearance-auto-non-html-namespace-001.html.ini new file mode 100644 index 00000000000..fea2ef619e4 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-ui/webkit-appearance-auto-non-html-namespace-001.html.ini @@ -0,0 +1,2 @@ +[webkit-appearance-auto-non-html-namespace-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/backdrop-filter-isolation.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/backdrop-filter-isolation.html.ini deleted file mode 100644 index ac98c983cc8..00000000000 --- a/tests/wpt/meta-legacy-layout/css/filter-effects/backdrop-filter-isolation.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[backdrop-filter-isolation.html] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/fetch/fetch-later/new-window.tentative.https.window.js.ini b/tests/wpt/meta-legacy-layout/fetch/fetch-later/new-window.tentative.https.window.js.ini index da97254b909..5391a593b49 100644 --- a/tests/wpt/meta-legacy-layout/fetch/fetch-later/new-window.tentative.https.window.js.ini +++ b/tests/wpt/meta-legacy-layout/fetch/fetch-later/new-window.tentative.https.window.js.ini @@ -4,7 +4,7 @@ expected: FAIL [A same-origin window[target=''\][features='0'\] can trigger fetchLater.] - expected: FAIL + expected: TIMEOUT [A cross-origin window[target=''\][features='0'\] can trigger fetchLater.] expected: TIMEOUT @@ -13,7 +13,7 @@ expected: FAIL [A same-origin window[target=''\][features='1'\] can trigger fetchLater.] - expected: FAIL + expected: TIMEOUT [A cross-origin window[target=''\][features='1'\] can trigger fetchLater.] expected: TIMEOUT @@ -22,7 +22,7 @@ expected: FAIL [A same-origin window[target=''\][features='2'\] can trigger fetchLater.] - expected: FAIL + expected: TIMEOUT [A cross-origin window[target=''\][features='2'\] can trigger fetchLater.] expected: TIMEOUT @@ -31,7 +31,7 @@ expected: FAIL [A same-origin window[target='_blank'\][features='0'\] can trigger fetchLater.] - expected: FAIL + expected: TIMEOUT [A cross-origin window[target='_blank'\][features='0'\] can trigger fetchLater.] expected: TIMEOUT @@ -40,7 +40,7 @@ expected: FAIL [A same-origin window[target='_blank'\][features='1'\] can trigger fetchLater.] - expected: FAIL + expected: TIMEOUT [A cross-origin window[target='_blank'\][features='1'\] can trigger fetchLater.] expected: TIMEOUT @@ -49,7 +49,7 @@ expected: FAIL [A same-origin window[target='_blank'\][features='2'\] can trigger fetchLater.] - expected: FAIL + expected: TIMEOUT [A cross-origin window[target='_blank'\][features='2'\] can trigger fetchLater.] expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini index 324db3d9b35..5aef7ce66ce 100644 --- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini @@ -10,3 +10,6 @@ [load event does not fire on window.open('about:blank?foo')] expected: FAIL + + [load event does not fire on window.open('about:blank')] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js.ini new file mode 100644 index 00000000000..4ecd6d9f753 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js.ini @@ -0,0 +1,3 @@ +[navigation-unload-cross-origin.sub.window.html] + [Cross-origin navigation started from unload handler must be ignored] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/dom/documents/dom-tree-accessors/Document.currentScript.html.ini b/tests/wpt/meta-legacy-layout/html/dom/documents/dom-tree-accessors/Document.currentScript.html.ini index ada0c300bb0..2e74427b47e 100644 --- a/tests/wpt/meta-legacy-layout/html/dom/documents/dom-tree-accessors/Document.currentScript.html.ini +++ b/tests/wpt/meta-legacy-layout/html/dom/documents/dom-tree-accessors/Document.currentScript.html.ini @@ -1,9 +1,8 @@ [Document.currentScript.html] type: testharness - expected: TIMEOUT + expected: CRASH [Script script-exec] expected: NOTRUN [Script script-svg] expected: NOTRUN - diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini index 68203d2a082..7df8f9458e9 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini @@ -1,4 +1,4 @@ [iframe_sandbox_popups_escaping-2.html] expected: CRASH [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini new file mode 100644 index 00000000000..7682a4830bf --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini @@ -0,0 +1,4 @@ +[reparent-form-during-planned-navigation-task.html] + expected: TIMEOUT + [reparent-form-during-planned-navigation-task] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-lr.tentative.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-lr.tentative.html.ini new file mode 100644 index 00000000000..3b64ad3a46a --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-lr.tentative.html.ini @@ -0,0 +1,2 @@ +[select-appearance-writing-mode-vertical-lr.tentative.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-rl.tentative.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-rl.tentative.html.ini new file mode 100644 index 00000000000..a3843b0849b --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-rl.tentative.html.ini @@ -0,0 +1,2 @@ +[select-appearance-writing-mode-vertical-rl.tentative.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini deleted file mode 100644 index 752f99a106e..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[async-script.html?default] - -[async-script.html?reload] - expected: ERROR diff --git a/tests/wpt/meta-legacy-layout/performance-timeline/not-restored-reasons/performance-navigation-timing-iframes-without-attributes.tentative.window.js.ini b/tests/wpt/meta-legacy-layout/performance-timeline/not-restored-reasons/performance-navigation-timing-iframes-without-attributes.tentative.window.js.ini index ff04c7a9e96..ffbdcb66626 100644 --- a/tests/wpt/meta-legacy-layout/performance-timeline/not-restored-reasons/performance-navigation-timing-iframes-without-attributes.tentative.window.js.ini +++ b/tests/wpt/meta-legacy-layout/performance-timeline/not-restored-reasons/performance-navigation-timing-iframes-without-attributes.tentative.window.js.ini @@ -1,3 +1,4 @@ [performance-navigation-timing-iframes-without-attributes.tentative.window.html] + expected: TIMEOUT [RemoteContextHelper navigation using BFCache] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/webgl/idlharness.any.js.ini b/tests/wpt/meta-legacy-layout/webgl/idlharness.any.js.ini index 4063e1c6d5d..2caaf97708c 100644 --- a/tests/wpt/meta-legacy-layout/webgl/idlharness.any.js.ini +++ b/tests/wpt/meta-legacy-layout/webgl/idlharness.any.js.ini @@ -3917,6 +3917,9 @@ [WebGL2RenderingContext interface: operation drawingBufferStorage(GLenum, unsigned long, unsigned long)] expected: FAIL + [WebGLObject interface: attribute label] + expected: FAIL + [idlharness.any.worker.html] [WebGL2RenderingContext interface: constant ONE_MINUS_SRC_COLOR on interface object] @@ -10221,3 +10224,6 @@ [WebGL2RenderingContext interface: operation drawingBufferStorage(GLenum, unsigned long, unsigned long)] expected: FAIL + + [WebGLObject interface: attribute label] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/webmessaging/with-ports/017.html.ini b/tests/wpt/meta-legacy-layout/webmessaging/with-ports/017.html.ini new file mode 100644 index 00000000000..c7946fc91b4 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/webmessaging/with-ports/017.html.ini @@ -0,0 +1,4 @@ +[017.html] + expected: TIMEOUT + [origin of the script that invoked the method, about:blank] + expected: TIMEOUT diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json index f2cded0cfc7..124d021a511 100644 --- a/tests/wpt/meta/MANIFEST.json +++ b/tests/wpt/meta/MANIFEST.json @@ -31235,6 +31235,110 @@ {} ] ], + "multi-line-row-flex-fragmentation-081a-print.html": [ + "d773768bf0221faa34d9fd02e7b16fe2ede23a39", + [ + null, + [ + [ + "/css/css-break/flexbox/multi-line-row-flex-fragmentation-081-print-ref.html", + "==" + ] + ], + {} + ] + ], + "multi-line-row-flex-fragmentation-081b-print.html": [ + "7c4eeb2083b6092df51e41e6769a007236244c7a", + [ + null, + [ + [ + "/css/css-break/flexbox/multi-line-row-flex-fragmentation-081-print-ref.html", + "==" + ] + ], + {} + ] + ], + "multi-line-row-flex-fragmentation-081c-print.html": [ + "2181bc56b05660ebcc85fc023a05a40270958d4f", + [ + null, + [ + [ + "/css/css-break/flexbox/multi-line-row-flex-fragmentation-081-print-ref.html", + "==" + ] + ], + {} + ] + ], + "multi-line-row-flex-fragmentation-081d-print.html": [ + "b4d9f061420843ca009864061656f907f8d2d0d9", + [ + null, + [ + [ + "/css/css-break/flexbox/multi-line-row-flex-fragmentation-081-print-ref.html", + "==" + ] + ], + {} + ] + ], + "multi-line-row-flex-fragmentation-082a-print.html": [ + "18c732d242e6795b1f79be4ca83bdee49bc17739", + [ + null, + [ + [ + "/css/css-break/flexbox/multi-line-row-flex-fragmentation-082-print-ref.html", + "==" + ] + ], + {} + ] + ], + "multi-line-row-flex-fragmentation-082b-print.html": [ + "6f88af6cf68166981f45831506a70159152317ca", + [ + null, + [ + [ + "/css/css-break/flexbox/multi-line-row-flex-fragmentation-082-print-ref.html", + "==" + ] + ], + {} + ] + ], + "multi-line-row-flex-fragmentation-082c-print.html": [ + "116e8db2b334b66bfb054b7615cb59cacbf8b7eb", + [ + null, + [ + [ + "/css/css-break/flexbox/multi-line-row-flex-fragmentation-082-print-ref.html", + "==" + ] + ], + {} + ] + ], + "multi-line-row-flex-fragmentation-082d-print.html": [ + "e649304e7be773083c1a7de19ab53d348f850293", + [ + null, + [ + [ + "/css/css-break/flexbox/multi-line-row-flex-fragmentation-082-print-ref.html", + "==" + ] + ], + {} + ] + ], "single-line-column-flex-fragmentation-060-print.html": [ "15890801979709a152f580ad8f18d6af7e102b61", [ @@ -31274,6 +31378,110 @@ {} ] ], + "single-line-column-flex-fragmentation-068a-print.html": [ + "5eebf664325184d52a4633774f5ff81c03ba64b6", + [ + null, + [ + [ + "/css/css-break/flexbox/single-line-column-flex-fragmentation-068-print-ref.html", + "==" + ] + ], + {} + ] + ], + "single-line-column-flex-fragmentation-068b-print.html": [ + "64a495e01cd7d310f5b8242ae3611e95594ccbbc", + [ + null, + [ + [ + "/css/css-break/flexbox/single-line-column-flex-fragmentation-068-print-ref.html", + "==" + ] + ], + {} + ] + ], + "single-line-column-flex-fragmentation-068c-print.html": [ + "6c004f3d1958f4b91202c4f9c9cb076f9a12f5ad", + [ + null, + [ + [ + "/css/css-break/flexbox/single-line-column-flex-fragmentation-068-print-ref.html", + "==" + ] + ], + {} + ] + ], + "single-line-column-flex-fragmentation-068d-print.html": [ + "7ccf5e9f3eced96a29311584875d9e0c150a9f32", + [ + null, + [ + [ + "/css/css-break/flexbox/single-line-column-flex-fragmentation-068-print-ref.html", + "==" + ] + ], + {} + ] + ], + "single-line-column-flex-fragmentation-069a-print.html": [ + "1d18987036b9f54baf3bed8d03b4254b9614c883", + [ + null, + [ + [ + "/css/css-break/flexbox/single-line-column-flex-fragmentation-069-print-ref.html", + "==" + ] + ], + {} + ] + ], + "single-line-column-flex-fragmentation-069b-print.html": [ + "b5312837a7a338ab4f144e9230966c4e710729e5", + [ + null, + [ + [ + "/css/css-break/flexbox/single-line-column-flex-fragmentation-069-print-ref.html", + "==" + ] + ], + {} + ] + ], + "single-line-column-flex-fragmentation-069c-print.html": [ + "76686cb481bc4bb6e37331ba18b22f079bf3889e", + [ + null, + [ + [ + "/css/css-break/flexbox/single-line-column-flex-fragmentation-069-print-ref.html", + "==" + ] + ], + {} + ] + ], + "single-line-column-flex-fragmentation-069d-print.html": [ + "7a740c35f53c468ec50f4989a47683a6156a35a2", + [ + null, + [ + [ + "/css/css-break/flexbox/single-line-column-flex-fragmentation-069-print-ref.html", + "==" + ] + ], + {} + ] + ], "single-line-row-flex-fragmentation-042-print.html": [ "f8a2934ac5a9d9a9f2b67867545dd37486cae38a", [ @@ -33547,6 +33755,19 @@ {} ] ], + "page-size-012-print.html": [ + "737b37cbc3dbe30f83e9cae3eaf4582f5cf2e04d", + [ + null, + [ + [ + "/css/css-page/page-size-012-print-ref.html", + "==" + ] + ], + {} + ] + ], "page-visibility-hidden-001-print.html": [ "0de5c5ae825f4e84de4f7f82da02c55d4deddcb8", [ @@ -121507,6 +121728,19 @@ {} ] ], + "anchor-scroll-overflow-hidden.html": [ + "b57e39956bbbb3f268b25d3dabedb6c97ef22dd0", + [ + null, + [ + [ + "/css/css-anchor-position/anchor-scroll-overflow-hidden-ref.html", + "==" + ] + ], + {} + ] + ], "anchor-scroll-position-try-012.html": [ "7c0b381999d303dcefd8dccbdcad60d9c4b1d29d", [ @@ -135790,6 +136024,58 @@ {} ] ], + "multi-line-row-flex-fragmentation-083a.html": [ + "efc64d5f4abd9cd10ac24d3d380530a96cc1191a", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "multi-line-row-flex-fragmentation-083b.html": [ + "9181fd5f011e7520f8a60f9c6fa1faef64a6ef0c", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "multi-line-row-flex-fragmentation-083c.html": [ + "b54571898d36984d133206333e2a1bd6ddd86d05", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "multi-line-row-flex-fragmentation-083d.html": [ + "025fd6743602a7df64ec00e0bc693e5f020933ee", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], "nested-flex-item-expansion-in-mulicol.html": [ "56aa3ec5c26878e4b12be7fe09e2700021e6b19c", [ @@ -136635,6 +136921,58 @@ {} ] ], + "single-line-column-flex-fragmentation-070a.html": [ + "aa9af6a290a7fdafbfd4bf2c78fe6cb7211b55a9", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "single-line-column-flex-fragmentation-070b.html": [ + "45a91d96cf6899cf3fd8e4db1e401e3a850271f1", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "single-line-column-flex-fragmentation-070c.html": [ + "149ff6667ccb05e2b4b30e7cc50fa84b2ee041a5", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], + "single-line-column-flex-fragmentation-070d.html": [ + "2265e71df692bc3c4b6f94243863dfa2f79d5f9a", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], "single-line-row-flex-fragmentation-001.html": [ "379327a4aff584192f076d3f9d8f3ead232c0f5c", [ @@ -217687,6 +218025,32 @@ {} ] ], + "position-sticky-margins-002.html": [ + "29833ccae083513df51016269bab7af7cc907626", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "position-sticky-margins-003.html": [ + "2bc1a3ef255db103225f1e66222b2e2a57c2bf97", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "position-sticky-nested-inline.html": [ "92eda147bd4e54cc70081eb36eb8bb9ae33f19c2", [ @@ -280576,6 +280940,19 @@ {} ] ], + "webkit-appearance-auto-non-html-namespace-001.html": [ + "27567497250252ef0a45808506ab2b2c95371189", + [ + null, + [ + [ + "/css/css-ui/nothing-below-ref.html", + "==" + ] + ], + {} + ] + ], "webkit-appearance-button-001.html": [ "cf36b42384a7168d85a0475bded03aaadf26d52c", [ @@ -285727,6 +286104,84 @@ {} ] ], + "iframe-and-main-frame-transition-new-main-new-iframe.html": [ + "89360c0dcca68b9c7e36cb1cf14e4fb159fa9311", + [ + null, + [ + [ + "/css/css-view-transitions/iframe-and-main-frame-transition-new-main-new-iframe-ref.html", + "==" + ] + ], + {} + ] + ], + "iframe-and-main-frame-transition-new-main-old-iframe.html": [ + "7a9c53ffc16808b4f35e8a815a87c07a6bf6a790", + [ + null, + [ + [ + "/css/css-view-transitions/iframe-and-main-frame-transition-new-main-old-iframe-ref.html", + "==" + ] + ], + {} + ] + ], + "iframe-and-main-frame-transition-old-main-new-iframe.html": [ + "d3681aa43497c0c68947e1a492ab7fb598b3c81d", + [ + null, + [ + [ + "/css/css-view-transitions/iframe-and-main-frame-transition-old-main-new-iframe-ref.html", + "==" + ] + ], + {} + ] + ], + "iframe-and-main-frame-transition-old-main-old-iframe.html": [ + "bcdc566a260e38881cd4c21e1a46bd3e58ecd565", + [ + null, + [ + [ + "/css/css-view-transitions/iframe-and-main-frame-transition-old-main-old-iframe-ref.html", + "==" + ] + ], + {} + ] + ], + "iframe-and-main-frame-transition-old-main.html": [ + "bd58368645fb587b610f8a28771d6e23a8e34244", + [ + null, + [ + [ + "/css/css-view-transitions/iframe-and-main-frame-transition-old-main-ref.html", + "==" + ] + ], + {} + ] + ], + "iframe-and-main-frame-transition-with-name-on-iframe.html": [ + "f948e89dc7d13429008da1d9418209f46fb1da54", + [ + null, + [ + [ + "/css/css-view-transitions/iframe-and-main-frame-transition-with-name-on-iframe-ref.html", + "==" + ] + ], + {} + ] + ], "iframe-new-has-scrollbar.html": [ "81072ac38aa1d8fd98649b23ffe178c633daedb7", [ @@ -304369,6 +304824,103 @@ ] }, "filter-effects": { + "backdrop-filter-backdrop-root-backdrop-filter.html": [ + "6be85d5cf24ca4fd605c428fb8d6d0c109210cc4", + [ + null, + [ + [ + "/css/filter-effects/backdrop-filter-backdrop-root-ref.html", + "==" + ] + ], + {} + ] + ], + "backdrop-filter-backdrop-root-clip-path.html": [ + "172d07be93e6ed271d9c7444f0674c72b79b7367", + [ + null, + [ + [ + "/css/filter-effects/backdrop-filter-backdrop-root-clip-path-ref.html", + "==" + ] + ], + {} + ] + ], + "backdrop-filter-backdrop-root-filter.html": [ + "e988b479ced02e521ddbd578ede43473aa3d0419", + [ + null, + [ + [ + "/css/filter-effects/backdrop-filter-backdrop-root-filter-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 5 + ], + [ + 0, + 500 + ] + ] + ] + ] + } + ] + ], + "backdrop-filter-backdrop-root-mix-blend-mode.html": [ + "2d77b61b849393d5b61b2e62a5a50d373bf5abea", + [ + null, + [ + [ + "/css/filter-effects/backdrop-filter-backdrop-root-ref.html", + "==" + ] + ], + {} + ] + ], + "backdrop-filter-backdrop-root-opacity.html": [ + "b11d064cb3b2d9a860964c682aa4f02ebc4061b6", + [ + null, + [ + [ + "/css/filter-effects/backdrop-filter-backdrop-root-opacity-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 5 + ], + [ + 0, + 500 + ] + ] + ] + ] + } + ] + ], "backdrop-filter-basic-opacity-2.html": [ "c40e8bc09832ec6d30daa6803e98baa3141c9efe", [ @@ -304612,19 +305164,6 @@ {} ] ], - "backdrop-filter-isolation.html": [ - "06791f73d2b78ed03b77cd4a4d5b56e44406abf8", - [ - null, - [ - [ - "/css/filter-effects/backdrop-filter-isolation-ref.html", - "==" - ] - ], - {} - ] - ], "backdrop-filter-opacity-rounded-clip.html": [ "88fed5742034734f539d965d99ffa20c16428282", [ @@ -326572,12 +327111,12 @@ ] ], "select-appearance-custom-button-no-datalist.tentative.html": [ - "94d7fd53b340100bf67e47a5c79ab7cf6c073916", + "aaceabcf051be57d4fc657474f9a1844edc0f5d4", [ null, [ [ - "/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-custom-datalist-ref.html", + "/html/semantics/forms/the-select-element/stylable-select/select-appearance-custom-button-no-datalist-ref.html", "==" ] ], @@ -326585,12 +327124,12 @@ ] ], "select-appearance-no-button-custom-datalist.tentative.html": [ - "87425cf7a321168e9b83172cf160b3c393fffb3d", + "cc8a4c60bd76fa1e936a1788e5dec11d6d5b252b", [ null, [ [ - "/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-custom-datalist-ref.html", + "/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-no-datalist-ref.html", "==" ] ], @@ -326598,12 +327137,38 @@ ] ], "select-appearance-no-button-no-datalist.tentative.html": [ - "b2a6b5a6d394ba70b67591f4c5705a2955fe7a60", + "29261b7f2556be9341323e37a86cb27e7f417545", [ null, [ [ - "/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-custom-datalist-ref.html", + "/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-no-datalist-ref.html", + "==" + ] + ], + {} + ] + ], + "select-appearance-writing-mode-vertical-lr.tentative.html": [ + "2f8a6aa886ee76021dbaea98da47f2cf05e2ff56", + [ + null, + [ + [ + "/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-lr-ref.html", + "==" + ] + ], + {} + ] + ], + "select-appearance-writing-mode-vertical-rl.tentative.html": [ + "c2ea647be95a58c305444f67b9a211309fd18b6a", + [ + null, + [ + [ + "/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-rl-ref.html", "==" ] ], @@ -326770,7 +327335,7 @@ ] ], "selectlist-option-arbitrary-content-displayed.tentative.html": [ - "2d51002fb2e7e30f5cae4cd1a9452f63641e0dff", + "8c620baccad8ef750589b8d7687dd3aa458a1cf4", [ null, [ @@ -326779,7 +327344,23 @@ "==" ] ], - {} + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 1 + ], + [ + 0, + 200 + ] + ] + ] + ] + } ] ], "selectlist-option-arbitrary-content-not-displayed.tentative.html": [ @@ -335995,6 +336576,19 @@ } }, "layout": { + "svg-embed-intrinsic-size-min-size.html": [ + "79dfb07b42bb4f60c56033ac1fcb5e7f0eb33ec8", + [ + null, + [ + [ + "/svg/layout/svg-intrinsic-size-min-size-ref.html", + "==" + ] + ], + {} + ] + ], "svg-foreign-relayout-001.html": [ "2c8a8141526d0ddf759f32d038754ec919d93435", [ @@ -336034,6 +336628,19 @@ {} ] ], + "svg-intrinsic-size-min-size.html": [ + "41c68e56e1e92afb164c46a6c19f6391eff6bd6b", + [ + null, + [ + [ + "/svg/layout/svg-intrinsic-size-min-size-ref.html", + "==" + ] + ], + {} + ] + ], "svg-with-precent-dimensions-relayout.html": [ "9d04f412b70ad3038bde08b31bf981b7f65619bb", [ @@ -342665,7 +343272,7 @@ }, "support": { ".azure-pipelines.yml": [ - "ae5c9c0bf1e74e74d0ece499c6cb70f506de8a1a", + "36e745a87f151b68483a906b2a52b622e5030f88", [] ], ".gitattributes": [ @@ -342683,7 +343290,7 @@ ], "workflows": { "documentation.yml": [ - "0efa736adefb34737f93dff0d55755fd43fb13fa", + "eecf8ea6369f1128a8992194d7b326ae7f64a528", [] ], "epochs.yml": [ @@ -342695,11 +343302,11 @@ [] ], "manifest.yml": [ - "597259eb72e85cba9a588d84595c533427f6c500", + "aae43615a9ed23bf1aadbb6e9150bb65a95c1ee7", [] ], "regen_certs.yml": [ - "634ac202d5f18815d4bce4a2f95203558ab14ce7", + "bb0cea9f396c41faf9f045b402fb3b8ee99e1f4a", [] ] } @@ -385842,6 +386449,10 @@ "dc7f77f2b3441ebee25f3e40a9480b668ee79ea4", [] ], + "anchor-scroll-overflow-hidden-ref.html": [ + "b674998a5db1f347af82bde1f5efb4261a3732af", + [] + ], "anchor-scroll-position-try-012-ref.html": [ "fbc0b5fc6da55cfadb1ea610092882b8ff7502a7", [] @@ -388499,6 +389110,14 @@ "de6bd49c922454e303216fb45a627954bab33df6", [] ], + "multi-line-row-flex-fragmentation-081-print-ref.html": [ + "5eb4a3117362167e3fcb38f1d1295de6147f56e2", + [] + ], + "multi-line-row-flex-fragmentation-082-print-ref.html": [ + "e7314be63b845053b717580eaf2d61febe99fbba", + [] + ], "single-line-column-flex-fragmentation-040-ref.html": [ "3d20cb44e49b065fdb90d400fba69aca442f0fc2", [] @@ -388515,6 +389134,14 @@ "100fcca0840f784914d386d366fce905cb95f184", [] ], + "single-line-column-flex-fragmentation-068-print-ref.html": [ + "feff86edf96a6611be80c2d7b789d9394c398339", + [] + ], + "single-line-column-flex-fragmentation-069-print-ref.html": [ + "7f37d32454e3fc5a675c687d8db22034d646c910", + [] + ], "single-line-row-flex-fragmentation-027-ref.html": [ "e1079de13fb771854107b4022054945a0b460e18", [] @@ -391055,6 +391682,10 @@ [] ], "counter-style-at-rule": { + "WEB_FEATURES.yml": [ + "fc866d5c1246989f29f1a917470edc611296149e", + [] + ], "access-from-shadow-dom-ref.html": [ "ee40f94bda4b400be543eb79eff155269a6f4056", [] @@ -391227,6 +391858,10 @@ [] ], "cssom": { + "WEB_FEATURES.yml": [ + "1efb03070d8cdd0be1284ba554171d5cd3b2089d", + [] + ], "cssom-additive-symbols-setter-ref.html": [ "a09788e369a58a35dd92370cc1f25ef2561c1814", [] @@ -392196,6 +392831,10 @@ "2c412b40f0f1b6059099682bc5c787310e8d2991", [] ], + "WEB_FEATURES.yml": [ + "c17b6206c55bb09fe0920d7a4af8cfe8cb3603b7", + [] + ], "testcommon.js": [ "9fd25b86507258b900911df892540bdb1ae17cd3", [] @@ -405278,6 +405917,10 @@ "05e60af1d8a558ec87a6c6f8acdeecdc0c7bb78d", [] ], + "WEB_FEATURES.yml": [ + "89ef4a2521b17e1b251f82964bbd380aa5067d9f", + [] + ], "add-inline-child-after-marker-001-ref.html": [ "0c1d2397d75c34f7238c65b8762d5d206c36bf73", [] @@ -408716,6 +409359,10 @@ "945f105ef470b0e78a92828dc54b651bce7abf7b", [] ], + "page-size-012-print-ref.html": [ + "e85e5f078508ca299255ea8270dd1519115019a1", + [] + ], "page-visibility-hidden-001-print-ref.html": [ "24d3806eb99421a98c7a189c8a0348b592c5fb0c", [] @@ -412081,6 +412728,10 @@ [] ], "contain-intrinsic-size": { + "WEB_FEATURES.yml": [ + "5fc7189215cd11a5f49504feba382008cf182e64", + [] + ], "contain-intrinsic-size-001-ref.html": [ "299930ac35a35a27cbfbe67ebee66c9facb7d2b9", [] @@ -413135,6 +413786,10 @@ } }, "hyphens": { + "WEB_FEATURES.yml": [ + "c8270e62c6030d5e7d7e86d7b7ec8448a31316b1", + [] + ], "hyphens-auto-control-ref.html": [ "7283d239d8bb337a291b0866f75119eef019e853", [] @@ -420761,7 +421416,7 @@ [] ], "WEB_FEATURES.yml": [ - "ca3c0ff91b9f8b46195b54ea0364a5f3f071aca2", + "dc7331ab9545223f7c420b54be38a929498661cc", [] ], "attr-notype-fallback-ref.html": [ @@ -421606,6 +422261,30 @@ "99cde99149e4945a4b0b8c5287dafc232ffcd807", [] ], + "iframe-and-main-frame-transition-new-main-new-iframe-ref.html": [ + "86bc2a4a36845d5b3d4b445a12f3ddb388163f8c", + [] + ], + "iframe-and-main-frame-transition-new-main-old-iframe-ref.html": [ + "baafea3656a9262dfeacf2527e29b47708ac6467", + [] + ], + "iframe-and-main-frame-transition-old-main-new-iframe-ref.html": [ + "7033cd9d21db5f2a15d64f57b3bf9d7524225804", + [] + ], + "iframe-and-main-frame-transition-old-main-old-iframe-ref.html": [ + "2824884c4fecae902aa722e5360a4b3431f15bbe", + [] + ], + "iframe-and-main-frame-transition-old-main-ref.html": [ + "9253bb5f21cf25b2bb269df3b6cee0a06e9994a5", + [] + ], + "iframe-and-main-frame-transition-with-name-on-iframe-ref.html": [ + "94bd3bdac373ad2e232001f127595aa7ef00b6b5", + [] + ], "iframe-new-has-scrollbar-ref.html": [ "338f8a6f23e1708383e7717de5a8267227719ace", [] @@ -421887,7 +422566,7 @@ [] ], "root-to-shared-animation-incoming-ref.html": [ - "df0ec1a9d8e09c50524993ec255610b7a56e7b5b", + "6044ba263618ff51dd198fd0c35b736a689b8172", [] ], "root-to-shared-animation-start-ref.html": [ @@ -425116,6 +425795,22 @@ [] ] }, + "backdrop-filter-backdrop-root-clip-path-ref.html": [ + "08a2ad4fc52f0bdad5d3cc54d489e8987bf912b0", + [] + ], + "backdrop-filter-backdrop-root-filter-ref.html": [ + "ffa4dfcf0e0e308f9910c8c501ede43e78b9b382", + [] + ], + "backdrop-filter-backdrop-root-opacity-ref.html": [ + "76d4854df6c149dd0b59ca900a8e89102a37666f", + [] + ], + "backdrop-filter-backdrop-root-ref.html": [ + "934e08acb9a01f59157653687a6daadd3d50c22c", + [] + ], "backdrop-filter-basic-background-color-ref.html": [ "4997007f0bf858986b8f0fbbe8348153cfee1dd6", [] @@ -425160,10 +425855,6 @@ "38a8c8b253a9302f230fe5d4b073eac0d9a38df6", [] ], - "backdrop-filter-isolation-ref.html": [ - "fc2bccc36c1143b194c09bed7a3ba566fcca46f6", - [] - ], "backdrop-filter-non-isolation-ref.html": [ "229d6b4faadad52ddae75b1ad92e5600e588df67", [] @@ -425701,6 +426392,10 @@ ] }, "resources": { + "backdrop-filter-backdrop-root.css": [ + "635e497cdfc8acaf8f254ba1d77b21246b0be89d", + [] + ], "reference.png": [ "68641b76771abf086dc213b353ac2088fffb931a", [] @@ -427388,6 +428083,10 @@ "META.yml": [ "57ba808a2e4b1f787988967817391d9ecc397418", [] + ], + "__dir__.ini": [ + "79ef6f271a7643bd2280c6e210a573cf84ff3526", + [] ] }, "device-memory": { @@ -432560,7 +433259,7 @@ [] ], "fetch-metadata.conf.yml": [ - "11e6140343638fd47c6fe6795d9e6127ae41cf40", + "b96bd2fd7b4b81f6681ec84ffe41afe85576f1fd", [] ], "generate.py": [ @@ -440266,6 +440965,10 @@ } }, "dom": { + "WEB_FEATURES.yml": [ + "5c9e27d29745ca9046d04c1dea58af2f8b3fd801", + [] + ], "directionality": { "bdi-element-invalid-dir-ref.html": [ "88ccd4b9b53ee27a8450bd77ec794861fc01a708", @@ -445960,6 +446663,10 @@ } }, "media-elements": { + "WEB_FEATURES.yml": [ + "5730fe4715a896c4e93fd79b51da5a124cb9f03e", + [] + ], "autoplay-allowed-by-feature-policy.https.sub.html.headers": [ "08461fadc2888cbcdfcda533f2928f14a52ab44e", [] @@ -447297,12 +448004,24 @@ ], "resources": { "stylable-select-styles.css": [ - "ed572669a4fb2ebed0c66715f13abeef0b145123", + "5ee317d61a9fadeb46a28a51ad550e5b9877a2c3", [] ] }, - "select-appearance-no-button-custom-datalist-ref.html": [ - "8e5eadaf57b5a238d740809f2d1db2a8e006a99b", + "select-appearance-custom-button-no-datalist-ref.html": [ + "10c966a107ba3f341cc45b43e3160a791abec6b1", + [] + ], + "select-appearance-no-button-no-datalist-ref.html": [ + "3c6e9416b06aeb9ecaa2a9dbf56c1c1e7c1ad2b5", + [] + ], + "select-appearance-writing-mode-vertical-lr-ref.html": [ + "8b7e6402fb8d26872bb9bd6bf9869390638a64f0", + [] + ], + "select-appearance-writing-mode-vertical-rl-ref.html": [ + "158807ba58fdf1268843baf56765f64e65e1b78c", [] ], "select-child-button-and-datalist-ref.html": [ @@ -451032,6 +451751,10 @@ "e50fcfc84ff1f564f6fafb4dfe267df4ffbfb971", [] ], + "WEB_FEATURES.yml": [ + "4104016b756353a2207a93c4955fcfd5e9e8c2e4", + [] + ], "resources": { "child-message-event-api.html": [ "a0001633c22d19e44c1f48ddeffa07dde1fbc436", @@ -452772,7 +453495,7 @@ [] ], "DOM-Parsing.idl": [ - "676753bf0fce08b7fb8a0e85564016a4c749ea75", + "af2626079364fa841ecd7092b9bb4f1dac832267", [] ], "EXT_blend_minmax.idl": [ @@ -453048,7 +453771,7 @@ [] ], "compute-pressure.idl": [ - "77537feb1066ee61acaa7a751b2eb9b3aa299a21", + "a90febffc3b018571c1ae3ff78a8e6a56de7cc90", [] ], "console.idl": [ @@ -453168,7 +453891,7 @@ [] ], "css-properties-values-api.idl": [ - "eb7d7b027e72d9347c319c5d02770bf5e600b4e7", + "418e78375bec6b72104347c3aeb0cde49b46c747", [] ], "css-pseudo.idl": [ @@ -453332,7 +454055,7 @@ [] ], "geolocation.idl": [ - "4b971f097babf71b9ef1b5091d1a8777b4d717ea", + "8c0acfc6cc1c37220d282f42edd84bab4e02505c", [] ], "geometry.idl": [ @@ -453356,7 +454079,7 @@ [] ], "html.idl": [ - "e9598a1bbb60a2d43e612d8642100db273157d8b", + "aad8994b87dae6df4134353fffa68416c0b9eb4c", [] ], "idle-detection.idl": [ @@ -453892,7 +454615,7 @@ [] ], "webcodecs.idl": [ - "19964c51e45efddd9c004a28aaa202842f211a2a", + "c754b2b036cbe9c12415d5c735de7f86212fa5ac", [] ], "webcrypto-secure-curves.idl": [ @@ -453904,7 +454627,7 @@ [] ], "webgl1.idl": [ - "1b711e1a4ce9df841d62229e3598333ce22f7747", + "655c294fc1eb60831f810d983e0f0401f1ddcfb4", [] ], "webgl2.idl": [ @@ -453928,7 +454651,7 @@ [] ], "webnn.idl": [ - "9beb8858d102ddabab04ec6e6670722347c29862", + "9af2879214eef64275eeb96c5ca908ef52a28635", [] ], "webrtc-encoded-transform.idl": [ @@ -457463,6 +458186,10 @@ "cd5fcdfeb19f8b91c5b179296ba2ca9b5dfe4539", [] ], + "WEB_FEATURES.yml": [ + "414dbe7478f078be42ac08999c2afcb97d0f0fdd", + [] + ], "resources": { "orientation-event-helpers.js": [ "dab876fc6a320bbf11e9bc85b28631850b094269", @@ -461253,7 +461980,7 @@ [] ], "mock-pressure-service.js": [ - "bd0e32c5673888f2c6ed06d4bb3259c5414d9238", + "016c6d97e73ddfa33eb9398f15fdde0b62c37496", [] ], "mock-pressure-service.js.headers": [ @@ -464468,7 +465195,7 @@ [] ], "range-request-with-synth-head-worker.js": [ - "6025d91b1a2893a0b542835662446088c45ce108", + "6b6395aecaef26feeb59e81b2283e7ff02f9e6ae", [] ], "redirect-worker.js": [ @@ -464980,7 +465707,7 @@ ] }, "router-rules.js": [ - "dd7b3f550207a6e644a4a64a49ba82ec0dee88ff", + "fdc1c9e063787053a24be52829862c39bed6a883", [] ], "simple-test-for-condition-main-resource.html": [ @@ -466944,6 +467671,10 @@ "acfc7be517b3cc6783a372de4c67cc0d7a8b976e", [] ], + "svg-intrinsic-size-min-size-ref.html": [ + "f9ae2910d860e41dc0f489730ebabc44fc76315d", + [] + ], "svg-use-symbol-animateMotion-print-ref.html": [ "07e162c8a5182d7550640801d05c3ccc36718adc", [] @@ -467991,7 +468722,7 @@ [] ], "jobs.py": [ - "44de9fe1ad078673e92385bd6e4bedba129c2485", + "fe8eaae069eb3c548cf22af0fa5e7e65063a1b2a", [] ], "macos_color_profile.py": [ @@ -468061,7 +468792,7 @@ ], "tasks": { "test.yml": [ - "86d8a965ff3e8631c032c4fe2788c2609d0c06b1", + "a9ca07c6cebb887e44f7f1effbbd690e8bc98e82", [] ] }, @@ -468097,7 +468828,7 @@ [] ], "test_valid.py": [ - "fc67d67eb8d8dfaa760a032e2da0f34dbb7a05f2", + "dd8d732654252a190dee1f0e8f9e056ec62f76cd", [] ] } @@ -468113,7 +468844,7 @@ ] }, "update_built.py": [ - "8e0f18589de5cc7e31f2740085b46203b7a1e231", + "929b09f9fe42d3b4613895e21a6fc91800c6c6cb", [] ], "website_build.sh": [ @@ -468467,7 +469198,7 @@ [] ], "requirements.txt": [ - "d7c173723ed5d2bdc5ffdb2e8ec7063c5a1e7f32", + "70ad0df0e958c2a8528d558ff974db6ba252ab05", [] ], "sourcefile.py": [ @@ -468614,7 +469345,7 @@ [] ], "pytest.ini": [ - "81666e01db9e5b653df94dd6293fdf715a503f4a", + "650d07caf3a67c75a08c438f19f3a1231596aff5", [] ], "requirements_flake8.txt": [ @@ -468630,7 +469361,7 @@ [] ], "requirements_tests.txt": [ - "2613def3da422e79e55d82f295609fe8ffc8c4ab", + "24785f3531394470e232e5420a2fd64cbc1c0774", [] ], "runner": { @@ -476509,7 +477240,7 @@ [] ], "websocket_server.py": [ - "e7485ecbef0285c4537233498733e91bdbc8ad8e", + "dab2f079fff0ab869ea0142ab4c329aa174bb33f", [] ] }, @@ -478203,7 +478934,7 @@ [] ], "html.py": [ - "040de1ae5381b2f9151d84b0731804868dd87ee6", + "87fa4a638a7d89f6f7f42a3ee15fe8d5ad544df3", [] ], "main.js": [ @@ -478386,7 +479117,7 @@ } }, "tox.ini": [ - "a4ed2cb05e53ae3ca6135c2bc60dce2ee2e3d158", + "61442932f355281528c4373fcbb383b18feff190", [] ], "wave": { @@ -478871,7 +479602,7 @@ ] }, "tox.ini": [ - "28cecdebb5a9216acb4424e9fd0d594cc42c575f", + "88c76096f459839acd996be9600396604aa8b6e8", [] ], "utils": { @@ -479285,7 +480016,7 @@ [] ], "browser.py": [ - "a228cfa888e32b9af793656bc1d547ce50ceeef3", + "4c42ffa4e82d22e316a235b93dcc29dee55c217f", [] ], "commands.json": [ @@ -479297,7 +480028,7 @@ [] ], "install.py": [ - "fd1653772b005d49d988e469847be99c14d17f43", + "1e6408b0be633c6c857577645558e927ecc112ab", [] ], "markdown.py": [ @@ -479325,7 +480056,7 @@ [] ], "run.py": [ - "2277bb244398a07f10741e621b28e107d3d410f9", + "2fb7f97f498c4a47235c286da8fee3035a459da9", [] ], "testfiles.py": [ @@ -479392,7 +480123,7 @@ ] }, "test_browser.py": [ - "95094e376dbd3d83251999e9c92b8dbffbcae7e3", + "3a45dab16e27299cc7539570f3d54e6aa0d5537d", [] ], "test_install.py": [ @@ -479425,7 +480156,7 @@ ] }, "tox.ini": [ - "5bae81e9536d097a65d7221a613a8e610bad3806", + "b6e3dab2317d084f45357a777607e91e052443ca", [] ], "update.py": [ @@ -479433,7 +480164,7 @@ [] ], "utils.py": [ - "5899dc3f3a967ff7d4b8b3c9e5340428ba6a9de8", + "51bb3f55dc9dcb083c7bd769a6836c62aa560e15", [] ], "virtualenv.py": [ @@ -479472,7 +480203,7 @@ [] ], "expectation.rst": [ - "fea676565ba94a6eecba232270ad9931db137e67", + "76f088dd8fb0204998beae56ad5cc3a872e92e6e", [] ], "internals.rst": [ @@ -479481,7 +480212,7 @@ ] }, "requirements.txt": [ - "cda06eba5d0048a10b5f73cc8b493e93f94164ad", + "fba8e42ebe2fb68869916fa4a3b1844c39f2cfec", [] ], "requirements_chromium.txt": [ @@ -479489,7 +480220,7 @@ [] ], "requirements_firefox.txt": [ - "17fed6fab47ce5580c411f2390121adb8758ca8c", + "ed377b9c95a20911500ce9e0ba7b907f0af7295a", [] ], "requirements_opera.txt": [ @@ -479509,7 +480240,7 @@ [] ], "tox.ini": [ - "cd7021a76432177ac9a6076b61d45b184f8c036e", + "c380be1252749de5549a1e37ad2c817aba9ed161", [] ], "wptrunner": { @@ -479519,7 +480250,7 @@ ], "browsers": { "__init__.py": [ - "7d045e961fe903ec5205e7ea7c2419fa89ff1c13", + "d54a9be943008fb2b02a8918649f3dae573fcf8e", [] ], "android_webview.py": [ @@ -479531,7 +480262,7 @@ [] ], "chrome.py": [ - "95a51451a32eb35b60bfeabff09de2bfbde4cb8b", + "c0a176743defc1f9ef8d506e13e3776afb4d2096", [] ], "chrome_android.py": [ @@ -479554,8 +480285,8 @@ "6df8671e0ac32ae7e4b51e31b96fde3a4b8c3b35", [] ], - "edgechromium.py": [ - "4f5bffa06c498e2b046789da21755915f6df9d8d", + "edge.py": [ + "82597c9312a4ad655aa9cb9a223179e55d74975d", [] ], "epiphany.py": [ @@ -479639,7 +480370,7 @@ [] ], "executoredge.py": [ - "cbe5eadf9a608da0b8d767f26a4fca6b15eb4681", + "3b62cb7477b26f2ab44ccb5a8fb610ed18b4c023", [] ], "executormarionette.py": [ @@ -480364,7 +481095,7 @@ [] ], "response.py": [ - "a6ece62dab1fb8cf0d167eda776f6f5212f53379", + "8d0e01bbddfacd146baacfc24df122db011baeba", [] ], "router.py": [ @@ -480389,7 +481120,7 @@ [] ], "openssl.py": [ - "5a16097e374de50afc8a2539d5d2b965fb7f85f2", + "25f86e019ecf210dd1bf2d735932781bb7fb430e", [] ], "pregenerated.py": [ @@ -481199,6 +481930,10 @@ "fa5e3b0dc72385a5a60125802d78c53e46e99058", [] ], + "WEB_FEATURES.yml": [ + "4711efc1faf9a97d57c9a48bdff97b1f7951f6d0", + [] + ], "resources": { "IdnaTestV2.json": [ "669d4b0938204a8b1bb1a4689d3077a3af1c0789", @@ -482349,6 +483084,10 @@ "84af41baa8224b8e1c807bdefe43366235102612", [] ], + "WEB_FEATURES.yml": [ + "dac5b1ba75296ea0788b0a29d7e1f4b78fe6b81f", + [] + ], "bfcache": { "helpers.js": [ "7997f982a8f748281c21e1be05c9c74407600fe2", @@ -482837,6 +483576,10 @@ "a52d978f0eac073ea327e13eb6b8773f89d6091b", [] ], + "WEB_FEATURES.yml": [ + "8b273de80b54a1e320ec9ffdd29bdbaa92445430", + [] + ], "helpers.js": [ "5b30749bf377ca03aaa791b3a815033f9460cbda", [] @@ -483541,7 +484284,7 @@ }, "storage": { "__init__.py": [ - "4ca0f7bdd7e293514f7621189ff0a0d059796e07", + "56ea539914328c6d4dafe3d202ad08017e26f717", [] ], "conftest.py": [ @@ -515417,7 +516160,7 @@ ] ], "compute_pressure_timestamp.https.any.js": [ - "6000321be5b554a283d6cb2f2d6a1cd41fa7ec0b", + "18db1dac461dd175bf7ee67ff96e6084a61964ad", [ "compute-pressure/compute_pressure_timestamp.https.any.html", { @@ -524704,7 +525447,7 @@ ] ], "digital-identity.https.html": [ - "b2f36d21eec550f4d859e0e566950b8e0311123e", + "8ae9caa002d061862098b30341147601da6d10e0", [ null, { @@ -533826,15 +534569,15 @@ {} ] ], - "linear-timing-functions-output.tentative.html": [ - "82ea4690529504afc34a9b2be964c6801c0d78f2", + "linear-timing-functions-output.html": [ + "ef157e2e28520da48b16f91409b0679e3366260a", [ null, {} ] ], - "linear-timing-functions-syntax.tentative.html": [ - "d2aa4f45b1a87c5b97bfc582cb3494095e5581c5", + "linear-timing-functions-syntax.html": [ + "2d1baea4ebb311cd9710469189926b5a95beab47", [ null, {} @@ -550006,7 +550749,7 @@ ] ], "custom-property-rule-ambiguity.html": [ - "b1adce7f9eb7a3225e525696e7d5dfb9e2fdf700", + "04f908acde2e72fba295d9bc1592ab026a1aef68", [ null, {} @@ -606934,7 +607677,7 @@ ] ], "auction-config.https.window.js": [ - "28ed147071858ee6c5f0f3acdaf1d2d636b1ad4a", + "057b4d7f785cbe05f676b45ffc33551f51cf5e85", [ "fledge/tentative/auction-config.https.window.html?1-5", { @@ -606997,11 +607740,19 @@ ], [ "variant", - "?45-50" + "?46-50" + ], + [ + "variant", + "?51-55" ], [ "variant", - "?50-last" + "?56-60" + ], + [ + "variant", + "?61-last" ] ], "timeout": "long" @@ -607069,11 +607820,19 @@ ], [ "variant", - "?45-50" + "?46-50" + ], + [ + "variant", + "?51-55" ], [ "variant", - "?50-last" + "?56-60" + ], + [ + "variant", + "?61-last" ] ], "timeout": "long" @@ -607141,11 +607900,19 @@ ], [ "variant", - "?45-50" + "?46-50" ], [ "variant", - "?50-last" + "?51-55" + ], + [ + "variant", + "?56-60" + ], + [ + "variant", + "?61-last" ] ], "timeout": "long" @@ -607213,11 +607980,19 @@ ], [ "variant", - "?45-50" + "?46-50" + ], + [ + "variant", + "?51-55" + ], + [ + "variant", + "?56-60" ], [ "variant", - "?50-last" + "?61-last" ] ], "timeout": "long" @@ -607285,11 +608060,19 @@ ], [ "variant", - "?45-50" + "?46-50" ], [ "variant", - "?50-last" + "?51-55" + ], + [ + "variant", + "?56-60" + ], + [ + "variant", + "?61-last" ] ], "timeout": "long" @@ -607357,11 +608140,19 @@ ], [ "variant", - "?45-50" + "?46-50" + ], + [ + "variant", + "?51-55" + ], + [ + "variant", + "?56-60" ], [ "variant", - "?50-last" + "?61-last" ] ], "timeout": "long" @@ -607429,11 +608220,19 @@ ], [ "variant", - "?45-50" + "?46-50" + ], + [ + "variant", + "?51-55" + ], + [ + "variant", + "?56-60" ], [ "variant", - "?50-last" + "?61-last" ] ], "timeout": "long" @@ -607501,18 +608300,26 @@ ], [ "variant", - "?45-50" + "?46-50" + ], + [ + "variant", + "?51-55" ], [ "variant", - "?50-last" + "?56-60" + ], + [ + "variant", + "?61-last" ] ], "timeout": "long" } ], [ - "fledge/tentative/auction-config.https.window.html?45-50", + "fledge/tentative/auction-config.https.window.html?46-50", { "script_metadata": [ [ @@ -607573,18 +608380,26 @@ ], [ "variant", - "?45-50" + "?46-50" + ], + [ + "variant", + "?51-55" ], [ "variant", - "?50-last" + "?56-60" + ], + [ + "variant", + "?61-last" ] ], "timeout": "long" } ], [ - "fledge/tentative/auction-config.https.window.html?50-last", + "fledge/tentative/auction-config.https.window.html?51-55", { "script_metadata": [ [ @@ -607645,11 +608460,99 @@ ], [ "variant", - "?45-50" + "?46-50" ], [ "variant", - "?50-last" + "?51-55" + ], + [ + "variant", + "?56-60" + ], + [ + "variant", + "?61-last" + ] + ], + "timeout": "long" + } + ], + [ + "fledge/tentative/auction-config.https.window.html?56-60", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.sub.js" + ], + [ + "script", + "/common/subset-tests.js" + ], + [ + "timeout", + "long" + ], + [ + "variant", + "?1-5" + ], + [ + "variant", + "?6-10" + ], + [ + "variant", + "?11-15" + ], + [ + "variant", + "?16-20" + ], + [ + "variant", + "?21-25" + ], + [ + "variant", + "?26-30" + ], + [ + "variant", + "?31-35" + ], + [ + "variant", + "?36-40" + ], + [ + "variant", + "?40-45" + ], + [ + "variant", + "?46-50" + ], + [ + "variant", + "?51-55" + ], + [ + "variant", + "?56-60" + ], + [ + "variant", + "?61-last" ] ], "timeout": "long" @@ -607717,11 +608620,99 @@ ], [ "variant", - "?45-50" + "?46-50" + ], + [ + "variant", + "?51-55" + ], + [ + "variant", + "?56-60" ], [ "variant", - "?50-last" + "?61-last" + ] + ], + "timeout": "long" + } + ], + [ + "fledge/tentative/auction-config.https.window.html?61-last", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.sub.js" + ], + [ + "script", + "/common/subset-tests.js" + ], + [ + "timeout", + "long" + ], + [ + "variant", + "?1-5" + ], + [ + "variant", + "?6-10" + ], + [ + "variant", + "?11-15" + ], + [ + "variant", + "?16-20" + ], + [ + "variant", + "?21-25" + ], + [ + "variant", + "?26-30" + ], + [ + "variant", + "?31-35" + ], + [ + "variant", + "?36-40" + ], + [ + "variant", + "?40-45" + ], + [ + "variant", + "?46-50" + ], + [ + "variant", + "?51-55" + ], + [ + "variant", + "?56-60" + ], + [ + "variant", + "?61-last" ] ], "timeout": "long" @@ -667524,6 +668515,15 @@ } ] ], + "interesttarget-svg-a-event-dispatch.tentative.html": [ + "7fb4b1c19d681901c9ab2ec72397970a9c5b5d1c", + [ + null, + { + "testdriver": true + } + ] + ], "invokeelement-interface.tentative.html": [ "5adacadabb4dcec47019db54b69efaa87f589968", [ @@ -668207,6 +669207,16 @@ {} ] ], + "popover-light-dismiss-scroll-within.html": [ + "2329aea201c4461cc7f27157bd3cd9b3f28a6357", + [ + null, + { + "testdriver": true, + "timeout": "long" + } + ] + ], "popover-light-dismiss-with-anchor.tentative.tentative.html": [ "c4e545c4fb97133cf6ad74ed73e2ade827c3721b", [ @@ -668218,7 +669228,7 @@ ] ], "popover-light-dismiss.html": [ - "1317b623c87ce6e13fadd47ea8a9705f94e3c46f", + "78b86745137d33f4938992724a5cdb94747b6fa8", [ null, { @@ -687692,7 +688702,7 @@ ] ], "MediaRecorder-canvas-media-source.https.html": [ - "e640714d5cf38d1250c7b07a476a360aee0e81b8", + "0680c218795b1e217376177bea6f14b0e1a11a40", [ "mediacapture-record/MediaRecorder-canvas-media-source.https.html?mimeType=''", { @@ -687701,6 +688711,13 @@ } ], [ + "mediacapture-record/MediaRecorder-canvas-media-source.https.html?mimeType=video/mp4", + { + "testdriver": true, + "timeout": "long" + } + ], + [ "mediacapture-record/MediaRecorder-canvas-media-source.https.html?mimeType=video/mp4;codecs=avc1,mp4a.40.2", { "testdriver": true, @@ -687708,6 +688725,13 @@ } ], [ + "mediacapture-record/MediaRecorder-canvas-media-source.https.html?mimeType=video/mp4;codecs=vp9,opus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ "mediacapture-record/MediaRecorder-canvas-media-source.https.html?mimeType=video/webm;codecs=av1,opus", { "testdriver": true, @@ -687769,7 +688793,7 @@ ] ], "MediaRecorder-events-and-exceptions.html": [ - "409e46c91da21805e238c4237be481385a25e79f", + "97ada2126634e550c8df7bd15807db0befa99a3f", [ "mediacapture-record/MediaRecorder-events-and-exceptions.html?mimeType=''", { @@ -687777,12 +688801,24 @@ } ], [ + "mediacapture-record/MediaRecorder-events-and-exceptions.html?mimeType=video/mp4", + { + "timeout": "long" + } + ], + [ "mediacapture-record/MediaRecorder-events-and-exceptions.html?mimeType=video/mp4;codecs=avc1,mp4a.40.2", { "timeout": "long" } ], [ + "mediacapture-record/MediaRecorder-events-and-exceptions.html?mimeType=video/mp4;codecs=vp9,opus", + { + "timeout": "long" + } + ], + [ "mediacapture-record/MediaRecorder-events-and-exceptions.html?mimeType=video/webm;codecs=av1,opus", { "timeout": "long" @@ -687802,14 +688838,14 @@ ] ], "MediaRecorder-mimetype.html": [ - "74248d65f4660a25742d7baa5d050e40ed4199bd", + "57baa1346f172ec766256969b17f8e44197d856f", [ null, {} ] ], "MediaRecorder-pause-resume.html": [ - "8dc231279a0233b19ef6b87b4318d1a98e23fb69", + "f584508a0d0d42d60ae332a42b3fe776bd3247a6", [ "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=''", { @@ -687817,12 +688853,36 @@ } ], [ + "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/mp4", + { + "timeout": "long" + } + ], + [ "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/mp4;codecs=avc1,mp4a.40.2", { "timeout": "long" } ], [ + "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/mp4;codecs=avc1,opus", + { + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/mp4;codecs=vp9,mp4a.40.2", + { + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/mp4;codecs=vp9,opus", + { + "timeout": "long" + } + ], + [ "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/webm;codecs=av1,opus", { "timeout": "long" @@ -687852,9 +688912,93 @@ ] ], "MediaRecorder-peerconnection.https.html": [ - "3fbc1f0f2d292e4fd5cd41d751c0994fb7d658ed", + "daae044fa8d9d7d1f0fe40026ac9a42e96e129b9", [ - null, + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=audio&mimeType=''", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=audio&mimeType=audio/mp4;codecs=opus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=audio&mimeType=audio/webm;codecs=opus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video&mimeType=''", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video&mimeType=video/mp4;codecs=vp9", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video&mimeType=video/webm;codecs=vp8", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video&mimeType=video/webm;codecs=vp9", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=''", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=video/mp4", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=video/mp4;codecs=avc1,mp4a.40.2", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=video/mp4;codecs=vp9,opus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=video/webm;codecs=vp8,opus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=video/webm;codecs=vp9,opus", { "testdriver": true, "timeout": "long" @@ -687869,16 +689013,24 @@ ] ], "MediaRecorder-stop.html": [ - "d6ce3707720a066b06fef71016e3e2b0366d3658", + "9ef5051638130f92f62753fb3aedf857bc8cbeba", [ "mediacapture-record/MediaRecorder-stop.html?mimeType=''", {} ], [ + "mediacapture-record/MediaRecorder-stop.html?mimeType=video/mp4", + {} + ], + [ "mediacapture-record/MediaRecorder-stop.html?mimeType=video/mp4;codecs=avc1,mp4a.40.2", {} ], [ + "mediacapture-record/MediaRecorder-stop.html?mimeType=video/mp4;codecs=vp9,opus", + {} + ], + [ "mediacapture-record/MediaRecorder-stop.html?mimeType=video/webm;codecs=av1,opus", {} ], @@ -715825,7 +716977,7 @@ ] ], "yield-priority-posttask.any.js": [ - "0700094dcf3679d18099204705c885005e070f74", + "5e40eba29b3295b8f7be17eaf9892cb265fc7034", [ "scheduler/tentative/yield/yield-priority-posttask.any.html", {} @@ -738335,7 +739487,7 @@ ] ], "default-policy-callback-arguments.html": [ - "a4a9c9e351289142b963ec8c56b4e4dbcbe0a639", + "4801b55387ca49867183e218105daa949d722668", [ null, {} @@ -814859,7 +816011,7 @@ ] ], "key_events.py": [ - "e93c132e0ac434e6c5f3cb2954d85da0e9c95551", + "275b542b11280792de1ad7ef1ea42270290a3130", [ null, { @@ -815906,7 +817058,7 @@ }, "add_cookie": { "add.py": [ - "24b71c52fddf529ab89e37ea74202d17cef1329c", + "60b67d051ba18cf5eba33c3672b78d9c8cc2fe5d", [ null, {} @@ -816081,7 +817233,7 @@ ] ], "navigate.py": [ - "7616c069632c899ba5771009a2733823d9ab7278", + "407d288a53e87f57612e70fe47e1114480538015", [ null, {} @@ -816684,7 +817836,7 @@ }, "get_named_cookie": { "get.py": [ - "41426532ef1ef54ccc31225b9c39e202c77ee6a9", + "78418dae93b4b71cbed1fc46c3869b26a691ae17", [ null, {} diff --git a/tests/wpt/meta/css/css-easing/linear-timing-functions-output.tentative.html.ini b/tests/wpt/meta/css/css-easing/linear-timing-functions-output.tentative.html.ini deleted file mode 100644 index ca90b52fe3e..00000000000 --- a/tests/wpt/meta/css/css-easing/linear-timing-functions-output.tentative.html.ini +++ /dev/null @@ -1,15 +0,0 @@ -[linear-timing-functions-output.tentative.html] - [linear function easing with output greater than 1] - expected: FAIL - - [linear function easing with output less than 1] - expected: FAIL - - [linear function easing, steps equivalent] - expected: FAIL - - [linear function easing, input value being unspecified in the first entry implies zero] - expected: FAIL - - [linear function easing, input value being unspecified in the last entry implies max input value] - expected: FAIL diff --git a/tests/wpt/meta/css/filter-effects/backdrop-filter-isolation.html.ini b/tests/wpt/meta/css/filter-effects/backdrop-filter-isolation.html.ini deleted file mode 100644 index ac98c983cc8..00000000000 --- a/tests/wpt/meta/css/filter-effects/backdrop-filter-isolation.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[backdrop-filter-isolation.html] - expected: FAIL diff --git a/tests/wpt/tests/.azure-pipelines.yml b/tests/wpt/tests/.azure-pipelines.yml index ae5c9c0bf1e..36e745a87f1 100644 --- a/tests/wpt/tests/.azure-pipelines.yml +++ b/tests/wpt/tests/.azure-pipelines.yml @@ -39,7 +39,7 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.11' + versionSpec: '3.12' - template: tools/ci/azure/affected_tests.yml parameters: artifactName: 'safari-preview-affected-tests' @@ -56,7 +56,7 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.11' + versionSpec: '3.12' - template: tools/ci/azure/affected_tests.yml parameters: checkoutCommit: 'HEAD^1' @@ -77,7 +77,7 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.11' + versionSpec: '3.12' - template: tools/ci/azure/checkout.yml - script: | set -eux -o pipefail @@ -98,7 +98,7 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.11' + versionSpec: '3.12' - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/install_fonts.yml - template: tools/ci/azure/install_certs.yml @@ -149,7 +149,7 @@ jobs: toxenv: py38 - job: tools_unittest_mac_py311 - displayName: 'tools/ unittests: macOS + Python 3.11' + displayName: 'tools/ unittests: macOS + Python 3.12' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.tools_unittest'] pool: @@ -157,7 +157,7 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.11' + versionSpec: '3.12' - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/tox_pytest.yml parameters: @@ -181,7 +181,7 @@ jobs: toxenv: py38 - job: wptrunner_unittest_mac_py311 - displayName: 'tools/wptrunner/ unittests: macOS + Python 3.11' + displayName: 'tools/wptrunner/ unittests: macOS + Python 3.12' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest'] pool: @@ -189,7 +189,7 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.11' + versionSpec: '3.12' - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/tox_pytest.yml parameters: @@ -217,7 +217,7 @@ jobs: toxenv: py38 - job: wpt_integration_mac_py311 - displayName: 'tools/wpt/ tests: macOS + Python 3.11' + displayName: 'tools/wpt/ tests: macOS + Python 3.12' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wpt_integration'] pool: @@ -226,7 +226,7 @@ jobs: # full checkout required - task: UsePythonVersion@0 inputs: - versionSpec: '3.11' + versionSpec: '3.12' - template: tools/ci/azure/install_chrome.yml - template: tools/ci/azure/install_firefox.yml - template: tools/ci/azure/update_hosts.yml @@ -256,7 +256,7 @@ jobs: toxenv: py38 - job: tools_unittest_win_py311 - displayName: 'tools/ unittests: Windows + Python 3.11' + displayName: 'tools/ unittests: Windows + Python 3.12' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.tools_unittest'] pool: @@ -264,7 +264,7 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.11' + versionSpec: '3.12' addToPath: false - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/tox_pytest.yml @@ -290,7 +290,7 @@ jobs: toxenv: py38 - job: wptrunner_unittest_win_py311 - displayName: 'tools/wptrunner/ unittests: Windows + Python 3.11' + displayName: 'tools/wptrunner/ unittests: Windows + Python 3.12' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest'] pool: @@ -298,7 +298,7 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.11' + versionSpec: '3.12' addToPath: false - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/tox_pytest.yml @@ -329,7 +329,7 @@ jobs: toxenv: py38 - job: wpt_integration_win_py311 - displayName: 'tools/wpt/ tests: Windows + Python 3.11' + displayName: 'tools/wpt/ tests: Windows + Python 3.12' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wpt_integration'] pool: @@ -338,7 +338,7 @@ jobs: # full checkout required - task: UsePythonVersion@0 inputs: - versionSpec: '3.11' + versionSpec: '3.12' # currently just using the outdated Chrome/Firefox on the VM rather than # figuring out how to install Chrome Dev channel on Windows # - template: tools/ci/azure/install_chrome.yml @@ -364,7 +364,7 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.11' + versionSpec: '3.12' - template: tools/ci/azure/system_info.yml - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/install_certs.yml @@ -373,7 +373,7 @@ jobs: channel: stable - template: tools/ci/azure/update_hosts.yml - template: tools/ci/azure/update_manifest.yml - - script: python ./wpt run --yes --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info --channel stable edgechromium + - script: python ./wpt run --yes --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info --channel stable edge displayName: 'Run tests (Edge Stable)' - task: PublishBuildArtifacts@1 displayName: 'Publish results' @@ -400,7 +400,7 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.11' + versionSpec: '3.12' - template: tools/ci/azure/system_info.yml - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/install_certs.yml @@ -409,7 +409,7 @@ jobs: channel: dev - template: tools/ci/azure/update_hosts.yml - template: tools/ci/azure/update_manifest.yml - - script: python ./wpt run --yes --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info --channel dev edgechromium + - script: python ./wpt run --yes --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info --channel dev edge displayName: 'Run tests (Edge Dev)' - task: PublishBuildArtifacts@1 displayName: 'Publish results' @@ -436,7 +436,7 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.11' + versionSpec: '3.12' - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/install_certs.yml - template: tools/ci/azure/install_edge.yml @@ -444,7 +444,7 @@ jobs: channel: canary - template: tools/ci/azure/update_hosts.yml - template: tools/ci/azure/update_manifest.yml - - script: python ./wpt run --yes --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info --channel canary edgechromium + - script: python ./wpt run --yes --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info --channel canary edge displayName: 'Run tests (Edge Canary)' - task: PublishBuildArtifacts@1 displayName: 'Publish results' @@ -471,7 +471,7 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.11' + versionSpec: '3.12' - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/install_certs.yml - template: tools/ci/azure/color_profile.yml @@ -511,7 +511,7 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.11' + versionSpec: '3.12' - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/install_certs.yml - template: tools/ci/azure/color_profile.yml @@ -548,7 +548,7 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.11' + versionSpec: '3.12' - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/install_certs.yml - template: tools/ci/azure/color_profile.yml diff --git a/tests/wpt/tests/.github/workflows/documentation.yml b/tests/wpt/tests/.github/workflows/documentation.yml index 0efa736adef..eecf8ea6369 100644 --- a/tests/wpt/tests/.github/workflows/documentation.yml +++ b/tests/wpt/tests/.github/workflows/documentation.yml @@ -19,7 +19,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.11' + python-version: '3.12' - name: Set up Node uses: actions/setup-node@v4 with: diff --git a/tests/wpt/tests/.github/workflows/manifest.yml b/tests/wpt/tests/.github/workflows/manifest.yml index 597259eb72e..aae43615a9e 100644 --- a/tests/wpt/tests/.github/workflows/manifest.yml +++ b/tests/wpt/tests/.github/workflows/manifest.yml @@ -13,7 +13,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.11' + python-version: '3.12' - name: Checkout uses: actions/checkout@v4 with: diff --git a/tests/wpt/tests/.github/workflows/regen_certs.yml b/tests/wpt/tests/.github/workflows/regen_certs.yml index 634ac202d5f..bb0cea9f396 100644 --- a/tests/wpt/tests/.github/workflows/regen_certs.yml +++ b/tests/wpt/tests/.github/workflows/regen_certs.yml @@ -12,7 +12,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.11' + python-version: '3.12' - name: Checkout uses: actions/checkout@v4 - name: Regenerate certs diff --git a/tests/wpt/tests/compute-pressure/compute_pressure_timestamp.https.any.js b/tests/wpt/tests/compute-pressure/compute_pressure_timestamp.https.any.js index 6000321be5b..18db1dac461 100644 --- a/tests/wpt/tests/compute-pressure/compute_pressure_timestamp.https.any.js +++ b/tests/wpt/tests/compute-pressure/compute_pressure_timestamp.https.any.js @@ -5,32 +5,73 @@ 'use strict'; pressure_test(async (t, mockPressureService) => { + const [change, timeOrigin] = await new Promise(resolve => { + const observer = new PressureObserver(change => { + resolve([change, performance.timeOrigin]); + }); + t.add_cleanup(() => observer.disconnect()); + observer.observe('cpu'); + mockPressureService.setPressureUpdate('cpu', 'critical'); + mockPressureService.startPlatformCollector(/*sampleInterval=*/ 200); + }); + assert_greater_than(change[0].time, timeOrigin); +}, 'Timestamp from update should be greater than timeOrigin'); + +pressure_test(async (t, mockPressureService) => { const readings = ['nominal', 'fair', 'serious', 'critical']; const sampleInterval = 250; - const pressureChanges = await new Promise(async resolve => { - const observerChanges = []; - const observer = new PressureObserver(changes => { - observerChanges.push(changes); - }); - observer.observe('cpu', {sampleInterval}); + const pressureChanges = []; + const observer = new PressureObserver(changes => { + pressureChanges.push(changes); + }); + observer.observe('cpu', {sampleInterval}); - mockPressureService.startPlatformCollector(sampleInterval / 2); - let i = 0; - // mockPressureService.updatesDelivered() does not necessarily match - // pressureChanges.length, as system load and browser optimizations can - // cause the actual timer used by mockPressureService to deliver readings - // to be a bit slower or faster than requested. - while (observerChanges.length < 4) { - mockPressureService.setPressureUpdate( - 'cpu', readings[i++ % readings.length]); - await t.step_wait( - () => mockPressureService.updatesDelivered() >= i, - `At least ${i} readings have been delivered`); - } - observer.disconnect(); - resolve(observerChanges); + mockPressureService.startPlatformCollector(sampleInterval / 2); + let i = 0; + // mockPressureService.updatesDelivered() does not necessarily match + // pressureChanges.length, as system load and browser optimizations can + // cause the actual timer used by mockPressureService to deliver readings + // to be a bit slower or faster than requested. + while (pressureChanges.length < 4) { + mockPressureService.setPressureUpdate( + 'cpu', readings[i++ % readings.length]); + await t.step_wait( + () => mockPressureService.updatesDelivered() >= i, + `At least ${i} readings have been delivered`); + } + observer.disconnect(); + + assert_equals(pressureChanges.length, 4); + assert_greater_than(pressureChanges[1][0].time, pressureChanges[0][0].time); + assert_greater_than(pressureChanges[2][0].time, pressureChanges[1][0].time); + assert_greater_than(pressureChanges[3][0].time, pressureChanges[2][0].time); +}, 'Timestamp difference between two changes should be continuously increasing'); + +pressure_test(async (t, mockPressureService) => { + const readings = ['nominal', 'fair', 'serious', 'critical']; + + const sampleInterval = 250; + const pressureChanges = []; + const observer = new PressureObserver(change => { + pressureChanges.push(change); }); + observer.observe('cpu', {sampleInterval}); + + mockPressureService.startPlatformCollector(sampleInterval / 2); + let i = 0; + // mockPressureService.updatesDelivered() does not necessarily match + // pressureChanges.length, as system load and browser optimizations can + // cause the actual timer used by mockPressureService to deliver readings + // to be a bit slower or faster than requested. + while (pressureChanges.length < 4) { + mockPressureService.setPressureUpdate( + 'cpu', readings[i++ % readings.length]); + await t.step_wait( + () => mockPressureService.updatesDelivered() >= i, + `At least ${i} readings have been delivered`); + } + observer.disconnect(); assert_equals(pressureChanges.length, 4); assert_greater_than_equal( @@ -71,5 +112,6 @@ pressure_test(async (t, mockPressureService) => { // should be deleted. So the second PressureRecord is not discarded even // though the time interval does not meet the requirement. assert_less_than( - pressureChanges[1][0].time - pressureChanges[0][0].time, sampleInterval); + (pressureChanges[1][0].time - pressureChanges[0][0].time), + sampleInterval); }, 'disconnect() should update [[LastRecordMap]]'); diff --git a/tests/wpt/tests/credential-management/digital-identity.https.html b/tests/wpt/tests/credential-management/digital-identity.https.html index b2f36d21eec..8ae9caa002d 100644 --- a/tests/wpt/tests/credential-management/digital-identity.https.html +++ b/tests/wpt/tests/credential-management/digital-identity.https.html @@ -17,31 +17,6 @@ const host = get_host_info(); const basePath = window.location.pathname.replace(/\/[^\/]*$/, '/'); const remoteBaseURL = host.HTTPS_REMOTE_ORIGIN + basePath; -// Builds valid digital identity request for navigator.credentials.get() API. -function buildValidNavigatorCredentialsRequest() { - return { - identity: { - providers: [{ - holder: { - selector: { - format: ['mdoc'], - doctype: 'org.iso.18013.5.1.mDL', - fields: [ - 'org.iso.18013.5.1.family_name', - 'org.iso.18013.5.1.portrait', - ] - }, - params: { - nonce: '1234', - readerPublicKey: 'test_reader_public_key', - extraParamAsNeededByDigitalCredentials: true, - }, - }, - }], - }, - }; -} - async function createIframeAndWaitForMessage(test, iframeUrl) { const messageWatcher = new EventWatcher(test, window, "message"); var iframe = document.createElement("iframe"); @@ -54,39 +29,6 @@ async function createIframeAndWaitForMessage(test, iframeUrl) { // Requires browser to have mode where OS-presented digital-identity-prompt is // bypassed in favour of returning "fake_test_token" directly. promise_test(async t => { - const {token} = await navigator.credentials.get(buildValidNavigatorCredentialsRequest()); - assert_equals("fake_test_token", token); -}, "navigator.credentials.get() API works in toplevel frame."); - -promise_test(async t => { - let request = buildValidNavigatorCredentialsRequest(); - request.identity.providers = undefined; - - await promise_rejects_js(t, TypeError, navigator.credentials.get(request)); -}, "navigator.credentials.get() API fails if IdentityCredentialRequestOptions::providers is not specified."); - -promise_test(async t => { - let request = buildValidNavigatorCredentialsRequest(); - request.identity.providers = []; - - await promise_rejects_js(t, TypeError, navigator.credentials.get(request)); -}, "navigator.credentials.get() API fails if there are no providers."); - -promise_test(async t => { - let request = buildValidNavigatorCredentialsRequest(); - let providerCopy = structuredClone(request.identity.providers[0]); - request.identity.providers.push(providerCopy); - await promise_rejects_js(t, TypeError, navigator.credentials.get(request)); -}, "navigator.credentials.get() API fails if there is more than one provider."); - -promise_test(async t => { - let request = buildValidNavigatorCredentialsRequest(); - request.identity.providers[0].holder = undefined; - - await promise_rejects_js(t, TypeError, navigator.credentials.get(request)); -}, "navigator.credentials.get() API fails if IdentityProviderConfig::holder is not specified."); - -promise_test(async t => { let request = buildValidNavigatorIdentityRequest(); let credential = await navigator.identity.get(request); assert_equals("urn:openid.net:oid4vp", credential.protocol); diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-overflow-hidden-ref.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-overflow-hidden-ref.html new file mode 100644 index 00000000000..b674998a5db --- /dev/null +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-overflow-hidden-ref.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<link rel="stylesheet" href="/fonts/ahem.css"> +<style> +body { + font: 20px/1 Ahem; + margin: 0; +} + +#placefiller-above-anchor { + height: 200px; +} + +#placefiller-before-anchor { + display: inline-block; + width: 50px; +} + +#inner-anchored { + color: green; + position: fixed; + left: 70px; + top: 180px; +} + +#outer-anchored { + color: yellow; + position: fixed; + left: 70px; + top: 220px; +} +</style> + +<div id="placefiller-above-anchor"></div> +<div id="placefiller-before-anchor"></div> +<span id="anchor">anchor</span> +<div id="inner-anchored">inner-anchored</div> +<div id="outer-anchored">outer-anchored</div> diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-overflow-hidden.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-overflow-hidden.html new file mode 100644 index 00000000000..b57e39956bb --- /dev/null +++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-overflow-hidden.html @@ -0,0 +1,67 @@ +<!DOCTYPE html> +<title>Basic of anchor positioned scrolling: anchored elements should be "pinned" to the anchor when anchor is scrolled in overflow:hidden</title> +<link rel="help" href="https://drafts.csswg.org/css-anchor-1/"> +<link rel="match" href="anchor-scroll-overflow-hidden-ref.html"> +<link rel="stylesheet" href="/fonts/ahem.css"> +<style> +body { + font: 20px/1 Ahem; + margin: 0; +} + +#scroll-container { + width: 400px; + height: 400px; + overflow: hidden; +} + +#scroll-contents { + width: 1000px; + height: 1000px; +} + +#placefiller-above-anchor { + height: 500px; +} + +#placefiller-before-anchor { + display: inline-block; + width: 500px; +} + +#anchor { + anchor-name: --anchor; +} + +#inner-anchored { + color: green; + position: absolute; + left: anchor(--anchor left); + bottom: anchor(--anchor top); + position-anchor: --anchor; +} + +#outer-anchored { + color: yellow; + position: absolute; + left: anchor(--anchor left); + top: anchor(--anchor bottom); + position-anchor: --anchor; +} +</style> + +<div id="scroll-container"> + <div id="scroll-contents"> + <div id="placefiller-above-anchor"></div> + <div id="placefiller-before-anchor"></div> + <span id="anchor">anchor</span> + <div id="inner-anchored">inner-anchored</div> + </div> +</div> +<div id="outer-anchored">outer-anchored</div> + +<script> +const scroller = document.getElementById('scroll-container'); +scroller.scrollTop = 300; +scroller.scrollLeft = 450; +</script> diff --git a/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081-print-ref.html b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081-print-ref.html new file mode 100644 index 00000000000..5eb4a311736 --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081-print-ref.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: block; + border: 0.25in solid black; +} +.flexbox > div > div { + display: inline-block; + box-sizing: border-box; + width: 50%; + border: 4px solid purple; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div> + <div>1</div><div>2</div> + </div> + <div style="break-before: page"> + <div>3</div><div>4</div> + </div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081a-print.html b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081a-print.html new file mode 100644 index 00000000000..d773768bf02 --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081a-print.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a row flex container, the break-before values on flex items are propagated to the flex line</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="multi-line-row-flex-fragmentation-081-print-ref.html"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: flex; + flex-wrap: wrap; + border: 0.25in solid black; +} +.flexbox > div { + box-sizing: border-box; + width: 50%; + border: 4px solid purple; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div>1</div><div>2</div> + <div style="break-before: page">3</div><div>4</div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081b-print.html b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081b-print.html new file mode 100644 index 00000000000..7c4eeb2083b --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081b-print.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a row flex container, the break-before values on flex items are propagated to the flex line</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="multi-line-row-flex-fragmentation-081-print-ref.html"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: flex; + flex-wrap: wrap; + border: 0.25in solid black; +} +.flexbox > div { + box-sizing: border-box; + width: 50%; + border: 4px solid purple; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div>1</div><div>2</div> + <div>3</div><div style="break-before: page">4</div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081c-print.html b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081c-print.html new file mode 100644 index 00000000000..2181bc56b05 --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081c-print.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a row flex container, the break-after values on flex items are propagated to the flex line</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="multi-line-row-flex-fragmentation-081-print-ref.html"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: flex; + flex-wrap: wrap; + border: 0.25in solid black; +} +.flexbox > div { + box-sizing: border-box; + width: 50%; + border: 4px solid purple; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div style="break-after: page">1</div><div>2</div> + <div>3</div><div>4</div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081d-print.html b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081d-print.html new file mode 100644 index 00000000000..b4d9f061420 --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081d-print.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a row flex container, the break-after values on flex items are propagated to the flex line</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="multi-line-row-flex-fragmentation-081-print-ref.html"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: flex; + flex-wrap: wrap; + border: 0.25in solid black; +} +.flexbox > div { + box-sizing: border-box; + width: 50%; + border: 4px solid purple; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div>1</div><div style="break-after: page">2</div> + <div>3</div><div>4</div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082-print-ref.html b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082-print-ref.html new file mode 100644 index 00000000000..e7314be63b8 --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082-print-ref.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: block; + border: 0.25in solid black; +} +.flexbox > div > div { + display: inline-block; + box-sizing: border-box; + width: 50%; + border: 4px solid purple; +} +.flexbox > .nested { + box-sizing: border-box; + width: 100%; + border: 4px solid gold; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div class="flexbox nested"> + <div>1</div><div>2</div> + <div>3</div><div>4</div> + </div> + <div class="flexbox nested" style="break-before: page"> + <div>5</div><div>6</div> + <div>7</div><div>8</div> + </div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082a-print.html b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082a-print.html new file mode 100644 index 00000000000..18c732d242e --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082a-print.html @@ -0,0 +1,44 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a row flex container, the break-before values on the flex item in the flex line are propagated to the flex container</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="multi-line-row-flex-fragmentation-082-print-ref.html"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: flex; + flex-wrap: wrap; + border: 0.25in solid black; +} +.flexbox > div { + box-sizing: border-box; + width: 50%; + border: 4px solid purple; +} +.flexbox > .nested { + box-sizing: border-box; + width: 100%; + border: 4px solid gold; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div class="flexbox nested"> + <div>1</div><div>2</div> + <div>3</div><div>4</div> + </div> + <div class="flexbox nested"> + <div style="break-before: page">5</div><div>6</div> + <div>7</div><div>8</div> + </div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082b-print.html b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082b-print.html new file mode 100644 index 00000000000..6f88af6cf68 --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082b-print.html @@ -0,0 +1,44 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a row flex container, the break-before values on the flex item in the flex line are propagated to the flex container</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="multi-line-row-flex-fragmentation-082-print-ref.html"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: flex; + flex-wrap: wrap; + border: 0.25in solid black; +} +.flexbox > div { + box-sizing: border-box; + width: 50%; + border: 4px solid purple; +} +.flexbox > .nested { + box-sizing: border-box; + width: 100%; + border: 4px solid gold; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div class="flexbox nested"> + <div>1</div><div>2</div> + <div>3</div><div>4</div> + </div> + <div class="flexbox nested"> + <div>5</div><div style="break-before: page">6</div> + <div>7</div><div>8</div> + </div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082c-print.html b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082c-print.html new file mode 100644 index 00000000000..116e8db2b33 --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082c-print.html @@ -0,0 +1,44 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a row flex container, the break-after values on the flex item in the flex line are propagated to the flex container</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="multi-line-row-flex-fragmentation-082-print-ref.html"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: flex; + flex-wrap: wrap; + border: 0.25in solid black; +} +.flexbox > div { + box-sizing: border-box; + width: 50%; + border: 4px solid purple; +} +.flexbox > .nested { + box-sizing: border-box; + width: 100%; + border: 4px solid gold; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div class="flexbox nested"> + <div>1</div><div>2</div> + <div style="break-after: page">3</div><div>4</div> + </div> + <div class="flexbox nested"> + <div>5</div><div>6</div> + <div>7</div><div>8</div> + </div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082d-print.html b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082d-print.html new file mode 100644 index 00000000000..e649304e7be --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082d-print.html @@ -0,0 +1,44 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a row flex container, the break-after values on the flex item in the flex line are propagated to the flex container</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="multi-line-row-flex-fragmentation-082-print-ref.html"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: flex; + flex-wrap: wrap; + border: 0.25in solid black; +} +.flexbox > div { + box-sizing: border-box; + width: 50%; + border: 4px solid purple; +} +.flexbox > .nested { + box-sizing: border-box; + width: 100%; + border: 4px solid gold; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div class="flexbox nested"> + <div>1</div><div>2</div> + <div>3</div><div style="break-after: page">4</div> + </div> + <div class="flexbox nested"> + <div>5</div><div>6</div> + <div>7</div><div>8</div> + </div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-083a.html b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-083a.html new file mode 100644 index 00000000000..efc64d5f4ab --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-083a.html @@ -0,0 +1,42 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a row flex container, the break-before values on flex items are propagated to the flex line</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html"> + +<style> +.multicol { + columns: 2; + column-fill: auto; + column-gap: 0; + width: 100px; + height: 300px; +} +.flexbox { + display: flex; + flex-wrap: wrap; +} +.item { + background: green; + width: 25px; + height: 100px; +} +</style> + +<p>Test passes if there is a filled green square.</p> + +<div class="multicol"> + <div class="flexbox"> + <div class="flexbox"> + <div class="item"></div> + <div class="item"></div> + </div> + <div class="flexbox" style="break-before: always; break-before: column"> + <div class="item"></div> + <div class="item"></div> + </div> + </div> +</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-083b.html b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-083b.html new file mode 100644 index 00000000000..9181fd5f011 --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-083b.html @@ -0,0 +1,42 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a row flex container, the break-before values on the flex item in the flex line are propagated to the flex container</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html"> + +<style> +.multicol { + columns: 2; + column-fill: auto; + column-gap: 0; + width: 100px; + height: 300px; +} +.flexbox { + display: flex; + flex-wrap: wrap; +} +.item { + background: green; + width: 25px; + height: 100px; +} +</style> + +<p>Test passes if there is a filled green square.</p> + +<div class="multicol"> + <div class="flexbox"> + <div class="flexbox"> + <div class="item"></div> + <div class="item"></div> + </div> + <div class="flexbox"> + <div class="item" style="break-before: always; break-before: column"></div> + <div class="item"></div> + </div> + </div> +</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-083c.html b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-083c.html new file mode 100644 index 00000000000..b54571898d3 --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-083c.html @@ -0,0 +1,42 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a row flex container, the break-after values on flex items are propagated to the flex line</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html"> + +<style> +.multicol { + columns: 2; + column-fill: auto; + column-gap: 0; + width: 100px; + height: 300px; +} +.flexbox { + display: flex; + flex-wrap: wrap; +} +.item { + background: green; + width: 25px; + height: 100px; +} +</style> + +<p>Test passes if there is a filled green square.</p> + +<div class="multicol"> + <div class="flexbox"> + <div class="flexbox" style="break-after: always; break-after: column"> + <div class="item"></div> + <div class="item"></div> + </div> + <div class="flexbox"> + <div class="item"></div> + <div class="item"></div> + </div> + </div> +</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-083d.html b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-083d.html new file mode 100644 index 00000000000..025fd674360 --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-083d.html @@ -0,0 +1,42 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a row flex container, the break-after values on the flex item in the flex line are propagated to the flex container</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html"> + +<style> +.multicol { + columns: 2; + column-fill: auto; + column-gap: 0; + width: 100px; + height: 300px; +} +.flexbox { + display: flex; + flex-wrap: wrap; +} +.item { + background: green; + width: 25px; + height: 100px; +} +</style> + +<p>Test passes if there is a filled green square.</p> + +<div class="multicol"> + <div class="flexbox"> + <div class="flexbox"> + <div class="item"></div> + <div class="item" style="break-after: always; break-after: column"></div> + </div> + <div class="flexbox"> + <div class="item"></div> + <div class="item"></div> + </div> + </div> +</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068-print-ref.html b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068-print-ref.html new file mode 100644 index 00000000000..feff86edf96 --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068-print-ref.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: block; + border: 0.25in solid black; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div>1</div> + <div>2</div> + <div style="break-before: page">3</div> + <div>4</div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068a-print.html b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068a-print.html new file mode 100644 index 00000000000..5eebf664325 --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068a-print.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a column flex container, the break-before values on flex items are honored</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="single-line-column-flex-fragmentation-068-print-ref.html"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: flex; + flex-direction: column; + border: 0.25in solid black; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div>1</div> + <div>2</div> + <div style="break-before: page">3</div> + <div>4</div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068b-print.html b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068b-print.html new file mode 100644 index 00000000000..64a495e01cd --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068b-print.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a column flex container, the break-after values on flex items are honored</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="single-line-column-flex-fragmentation-068-print-ref.html"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: flex; + flex-direction: column; + border: 0.25in solid black; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div>1</div> + <div style="break-after: page">2</div> + <div>3</div> + <div>4</div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068c-print.html b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068c-print.html new file mode 100644 index 00000000000..6c004f3d195 --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068c-print.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a column-reverse flex container, the break-before values on flex items are honored</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="single-line-column-flex-fragmentation-068-print-ref.html"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: flex; + flex-direction: column-reverse; + border: 0.25in solid black; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div>4</div> + <div style="break-before: page">3</div> + <div>2</div> + <div>1</div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068d-print.html b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068d-print.html new file mode 100644 index 00000000000..7ccf5e9f3ec --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068d-print.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a column-reverse flex container, the break-after values on flex items are honored</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="single-line-column-flex-fragmentation-068-print-ref.html"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: flex; + flex-direction: column-reverse; + border: 0.25in solid black; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div>4</div> + <div>3</div> + <div style="break-after: page">2</div> + <div>1</div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069-print-ref.html b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069-print-ref.html new file mode 100644 index 00000000000..7f37d32454e --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069-print-ref.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: block; + border: 0.25in solid black; +} +.flexbox > div { + border: 4px solid purple; +} +.flexbox > .nested { + border: 4px solid gold; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div class="flexbox nested"> + <div>1</div> + <div>2</div> + </div> + <div class="flexbox nested" style="break-before: page"> + <div>3</div> + <div>4</div> + </div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069a-print.html b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069a-print.html new file mode 100644 index 00000000000..1d18987036b --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069a-print.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a column flex container, the break-before values on flex items are honored</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="single-line-column-flex-fragmentation-069-print-ref.html"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: flex; + flex-direction: column; + border: 0.25in solid black; +} +.flexbox > div { + border: 4px solid purple; +} +.flexbox > .nested { + border: 4px solid gold; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div class="flexbox nested"> + <div>1</div> + <div>2</div> + </div> + <div class="flexbox nested" style="break-before: page"> + <div>3</div> + <div>4</div> + </div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069b-print.html b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069b-print.html new file mode 100644 index 00000000000..b5312837a7a --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069b-print.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a column flex container, the break-before values on the first item are propagated to the flex container</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="single-line-column-flex-fragmentation-069-print-ref.html"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: flex; + flex-direction: column; + border: 0.25in solid black; +} +.flexbox > div { + border: 4px solid purple; +} +.flexbox > .nested { + border: 4px solid gold; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div class="flexbox nested"> + <div>1</div> + <div>2</div> + </div> + <div class="flexbox nested"> + <div style="break-before: page">3</div> + <div>4</div> + </div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069c-print.html b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069c-print.html new file mode 100644 index 00000000000..76686cb481b --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069c-print.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a column flex container, the break-after values on flex items are honored</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="single-line-column-flex-fragmentation-069-print-ref.html"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: flex; + flex-direction: column; + border: 0.25in solid black; +} +.flexbox > div { + border: 4px solid purple; +} +.flexbox > .nested { + border: 4px solid gold; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div class="flexbox nested" style="break-after: page"> + <div>1</div> + <div>2</div> + </div> + <div class="flexbox nested"> + <div>3</div> + <div>4</div> + </div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069d-print.html b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069d-print.html new file mode 100644 index 00000000000..7a740c35f53 --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069d-print.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a column flex container, the break-after values on the first item are propagated to the flex container</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="single-line-column-flex-fragmentation-069-print-ref.html"> + +<style> +@page { size: 5in 3in; margin: 0.5in; } +body { + margin: 0; + font-size: 0.25in; +} +.flexbox { + display: flex; + flex-direction: column; + border: 0.25in solid black; +} +.flexbox > div { + border: 4px solid purple; +} +.flexbox > .nested { + border: 4px solid gold; +} +</style> + +<div>Before Flexbox</div> +<div class="flexbox"> + <div class="flexbox nested"> + <div>1</div> + <div style="break-after: page">2</div> + </div> + <div class="flexbox nested"> + <div>3</div> + <div>4</div> + </div> +</div> +<div>After Flexbox</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-070a.html b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-070a.html new file mode 100644 index 00000000000..aa9af6a290a --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-070a.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a column flex container, the break-before values on flex items are honored</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html"> + +<style> +.multicol { + columns: 2; + column-fill: auto; + column-gap: 0; + width: 100px; + height: 300px; +} +.flexbox { + display: flex; + flex-direction: column; +} +.item { + background: green; + height: 50px; +} +</style> + +<p>Test passes if there is a filled green square.</p> + +<div class="multicol"> + <div class="flexbox"> + <div class="flexbox"> + <div class="item"></div> + <div class="item"></div> + </div> + <div class="flexbox" style="break-before: always; break-before: column"> + <div class="item"></div> + <div class="item"></div> + </div> + </div> +</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-070b.html b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-070b.html new file mode 100644 index 00000000000..45a91d96cf6 --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-070b.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a column flex container, the break-before values on the first item are propagated to the flex container</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html"> + +<style> +.multicol { + columns: 2; + column-fill: auto; + column-gap: 0; + width: 100px; + height: 300px; +} +.flexbox { + display: flex; + flex-direction: column; +} +.item { + background: green; + height: 50px; +} +</style> + +<p>Test passes if there is a filled green square.</p> + +<div class="multicol"> + <div class="flexbox"> + <div class="flexbox"> + <div class="item"></div> + <div class="item"></div> + </div> + <div class="flexbox"> + <div class="item" style="break-before: always; break-before: column"></div> + <div class="item"></div> + </div> + </div> +</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-070c.html b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-070c.html new file mode 100644 index 00000000000..149ff6667cc --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-070c.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a column flex container, the break-after values on flex items are honored</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html"> + +<style> +.multicol { + columns: 2; + column-fill: auto; + column-gap: 0; + width: 100px; + height: 300px; +} +.flexbox { + display: flex; + flex-direction: column; +} +.item { + background: green; + height: 50px; +} +</style> + +<p>Test passes if there is a filled green square.</p> + +<div class="multicol"> + <div class="flexbox"> + <div class="flexbox" style="break-after: always; break-after: column"> + <div class="item"></div> + <div class="item"></div> + </div> + <div class="flexbox"> + <div class="item"></div> + <div class="item"></div> + </div> + </div> +</div> diff --git a/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-070d.html b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-070d.html new file mode 100644 index 00000000000..2265e71df69 --- /dev/null +++ b/tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-070d.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Test that in a column flex container, the break-after values on the first item are propagated to the flex container</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#pagination"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1890238"> +<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html"> + +<style> +.multicol { + columns: 2; + column-fill: auto; + column-gap: 0; + width: 100px; + height: 300px; +} +.flexbox { + display: flex; + flex-direction: column; +} +.item { + background: green; + height: 50px; +} +</style> + +<p>Test passes if there is a filled green square.</p> + +<div class="multicol"> + <div class="flexbox"> + <div class="flexbox"> + <div class="item"></div> + <div class="item" style="break-after: always; break-after: column"></div> + </div> + <div class="flexbox"> + <div class="item"></div> + <div class="item"></div> + </div> + </div> +</div> diff --git a/tests/wpt/tests/css/css-counter-styles/counter-style-at-rule/WEB_FEATURES.yml b/tests/wpt/tests/css/css-counter-styles/counter-style-at-rule/WEB_FEATURES.yml new file mode 100644 index 00000000000..fc866d5c124 --- /dev/null +++ b/tests/wpt/tests/css/css-counter-styles/counter-style-at-rule/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: counter-style + files: "**" diff --git a/tests/wpt/tests/css/css-counter-styles/cssom/WEB_FEATURES.yml b/tests/wpt/tests/css/css-counter-styles/cssom/WEB_FEATURES.yml new file mode 100644 index 00000000000..1efb03070d8 --- /dev/null +++ b/tests/wpt/tests/css/css-counter-styles/cssom/WEB_FEATURES.yml @@ -0,0 +1,26 @@ +# All of the tests in this directory are for CSSCounterStyleRule, but tests for +# other parts of CSS Counter Styles could potentially be added here, so list of +# the (current) tests to avoid matching tests from unrelated features added +# later. +features: +- name: counter-style + files: + - cssom-additive-symbols-setter-invalid.html + - cssom-additive-symbols-setter.html + - cssom-fallback-setter-invalid.html + - cssom-fallback-setter.html + - cssom-name-setter-invalid.html + - cssom-name-setter.html + - cssom-negative-setter-invalid.html + - cssom-negative-setter.html + - cssom-pad-setter-invalid.html + - cssom-pad-setter.html + - cssom-prefix-suffix-setter-invalid.html + - cssom-prefix-suffix-setter.html + - cssom-range-setter-invalid.html + - cssom-range-setter.html + - cssom-symbols-setter-invalid.html + - cssom-symbols-setter.html + - cssom-system-setter-1.html + - cssom-system-setter-2.html + - cssom-system-setter-invalid.html diff --git a/tests/wpt/tests/css/css-easing/WEB_FEATURES.yml b/tests/wpt/tests/css/css-easing/WEB_FEATURES.yml new file mode 100644 index 00000000000..c17b6206c55 --- /dev/null +++ b/tests/wpt/tests/css/css-easing/WEB_FEATURES.yml @@ -0,0 +1,4 @@ +features: +- name: linear-easing + files: + - linear-timing-* diff --git a/tests/wpt/tests/css/css-easing/linear-timing-functions-output.tentative.html b/tests/wpt/tests/css/css-easing/linear-timing-functions-output.html index 82ea4690529..ef157e2e285 100644 --- a/tests/wpt/tests/css/css-easing/linear-timing-functions-output.tentative.html +++ b/tests/wpt/tests/css/css-easing/linear-timing-functions-output.html @@ -2,7 +2,7 @@ <meta charset=utf-8> <meta name="assert" content="This test checks the output of linear timing functions" /> <title>Tests for the output of linear timing functions</title> -<link rel="help" href="https://github.com/w3c/csswg-drafts/pull/6533"> +<link rel="help" href="https://drafts.csswg.org/css-easing-2/#the-linear-easing-function"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="support/util.js"></script> diff --git a/tests/wpt/tests/css/css-easing/linear-timing-functions-syntax.tentative.html b/tests/wpt/tests/css/css-easing/linear-timing-functions-syntax.html index d2aa4f45b1a..2d1baea4ebb 100644 --- a/tests/wpt/tests/css/css-easing/linear-timing-functions-syntax.tentative.html +++ b/tests/wpt/tests/css/css-easing/linear-timing-functions-syntax.html @@ -3,7 +3,7 @@ <head> <meta charset="utf-8"> <title>CSS Easing: getComputedStyle().animationTimingFunction with linear(...)</title> -<link rel="help" href="https://github.com/w3c/csswg-drafts/pull/6533"> +<link rel="help" href="https://drafts.csswg.org/css-easing-2/#the-linear-easing-function"> <meta name="assert" content="animation-timing-function: linear(...) parsing tests"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> diff --git a/tests/wpt/tests/css/css-lists/WEB_FEATURES.yml b/tests/wpt/tests/css/css-lists/WEB_FEATURES.yml new file mode 100644 index 00000000000..89ef4a2521b --- /dev/null +++ b/tests/wpt/tests/css/css-lists/WEB_FEATURES.yml @@ -0,0 +1,4 @@ +features: +- name: counter-set + files: + - counter-set-* diff --git a/tests/wpt/tests/css/css-page/page-size-012-print-ref.html b/tests/wpt/tests/css/css-page/page-size-012-print-ref.html new file mode 100644 index 00000000000..e85e5f07850 --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-size-012-print-ref.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<style> + @page { + size: 600px 400px; + margin: 0; + } + body { margin: 0; } +</style> +<div style="margin-left:auto; margin-right:50px; writing-mode:vertical-rl; height:400px; background:yellow;"> + 50px to the left of page box right edge.<br> + Page widths larger than heights.<br> +</div> +<div style="break-before:page;"></div> +<div style="margin-left:auto; margin-top:50px; writing-mode:vertical-rl; height:350px; background:yellow;"> + 50px below the page box top edge.<br> +</div> diff --git a/tests/wpt/tests/css/css-page/page-size-012-print.html b/tests/wpt/tests/css/css-page/page-size-012-print.html new file mode 100644 index 00000000000..737b37cbc3d --- /dev/null +++ b/tests/wpt/tests/css/css-page/page-size-012-print.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<title>Test vertical writing mode with specified page size and logical margins.</title> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="help" href="https://www.w3.org/TR/css-page-3/#at-page-rule"> +<link rel="help" href="https://www.w3.org/TR/css-page-3/#typedef-page-size-page-size"> +<link rel="match" href="page-size-012-print-ref.html"> +<style> + @page { + size: 600px 400px; + margin: 0; + margin-inline-start: 50px; + } + @page :first { + margin-inline-start: 0; + margin-block-start: 50px; + } + html { + writing-mode: vertical-rl; + } + body { margin: 0; } +</style> +<div style="background:yellow;"> + 50px to the left of page box right edge.<br> + Page widths larger than heights.<br> +</div> +<div style="break-before:page; background:yellow;"> + 50px below the page box top edge.<br> +</div> diff --git a/tests/wpt/tests/css/css-position/sticky/position-sticky-margins-002.html b/tests/wpt/tests/css/css-position/sticky/position-sticky-margins-002.html new file mode 100644 index 00000000000..29833ccae08 --- /dev/null +++ b/tests/wpt/tests/css/css-position/sticky/position-sticky-margins-002.html @@ -0,0 +1,38 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Position Test: Test position:sticky element with auto margin in flex container</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-position/#staticpos-rect"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1488080"> +<link rel="match" href="../../reference/ref-filled-green-100px-square.xht"> +<meta name="assert" content="This test verifies that a position:sticky element aligning with 'auto' margin still honors the sticky positioning."> + +<style> +#container{ + width: 100px; + height: 100px; + overflow: hidden; + background: red; +} +.flex { + display: flex; + flex-direction: column; + height: 500px; +} +.child { + width: 100px; + height: 100px; + background: green; + position: sticky; + margin-top: auto; + bottom: 0; +} +</style> + +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div id="container"> + <div class="flex"> + <div class="child"></div> + </div> +</div> diff --git a/tests/wpt/tests/css/css-position/sticky/position-sticky-margins-003.html b/tests/wpt/tests/css/css-position/sticky/position-sticky-margins-003.html new file mode 100644 index 00000000000..2bc1a3ef255 --- /dev/null +++ b/tests/wpt/tests/css/css-position/sticky/position-sticky-margins-003.html @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Position Test: Test position:sticky element with auto margin in block container</title> +<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> +<link rel="author" title="Mozilla" href="https://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-position/#staticpos-rect"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1488080"> +<link rel="match" href="../../reference/ref-filled-green-100px-square.xht"> +<meta name="assert" content="This test verifies that a position:sticky element aligning with 'auto' margin still honors the sticky positioning."> + +<style> +#container{ + width: 100px; + height: 100px; + overflow: hidden; + background: red; +} +.block { + width: 500px; +} +.child { + width: 100px; + height: 100px; + background: green; + position: sticky; + margin-left: auto; + right: 0; +} +</style> + +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div id="container"> + <div class="block"> + <div class="child"> + </div> +</div> diff --git a/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/WEB_FEATURES.yml b/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/WEB_FEATURES.yml new file mode 100644 index 00000000000..5fc7189215c --- /dev/null +++ b/tests/wpt/tests/css/css-sizing/contain-intrinsic-size/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: contain-intrinsic-size + files: "**" diff --git a/tests/wpt/tests/css/css-syntax/custom-property-rule-ambiguity.html b/tests/wpt/tests/css/css-syntax/custom-property-rule-ambiguity.html index b1adce7f9eb..04f908acde2 100644 --- a/tests/wpt/tests/css/css-syntax/custom-property-rule-ambiguity.html +++ b/tests/wpt/tests/css/css-syntax/custom-property-rule-ambiguity.html @@ -47,7 +47,7 @@ assert_equals(rules[0].selectorText, 'div'); let div = rules[0]; let x = div.style.getPropertyValue('--x'); - assert_equals(x, 'hover { }\n .b { }'); + assert_equals(x.trim(), 'hover { }\n .b { }'); let childRules = div.cssRules; assert_equals(childRules.length, 1); assert_equals(childRules[0].selectorText, '& .a'); diff --git a/tests/wpt/tests/css/css-text/hyphens/WEB_FEATURES.yml b/tests/wpt/tests/css/css-text/hyphens/WEB_FEATURES.yml new file mode 100644 index 00000000000..c8270e62c60 --- /dev/null +++ b/tests/wpt/tests/css/css-text/hyphens/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: hyphens + files: "**" diff --git a/tests/wpt/tests/css/css-ui/webkit-appearance-auto-non-html-namespace-001.html b/tests/wpt/tests/css/css-ui/webkit-appearance-auto-non-html-namespace-001.html new file mode 100644 index 00000000000..27567497250 --- /dev/null +++ b/tests/wpt/tests/css/css-ui/webkit-appearance-auto-non-html-namespace-001.html @@ -0,0 +1,19 @@ +<!-- DO NOT EDIT THIS FILE. +Edit the appearance-* file instead and then run: + ./tools/appearance-build-webkit-reftests.py +--> +<!DOCTYPE html> +<title>CSS Basic User Interface Test: -webkit-appearance: auto on elements in non-HTML namespace</title> +<link rel="match" href="nothing-below-ref.html"> +<link rel="help" href="https://drafts.csswg.org/css-ui-4/#appearance-switching"> +<meta name="assert" content="-webkit-appearance: auto should have no effect on non-HTML elements."> +<style> + div * { -webkit-appearance: auto; display: inline-block; width: 1em; height: 1em; } +</style> +<p>There should be nothing below:</p> +<div id=div></div> +<script> +for (var tagName of ['button', 'input', 'meter', 'progress', 'select', 'textarea']) { + div.appendChild(document.createElementNS('not-html', tagName)); +} +</script> diff --git a/tests/wpt/tests/css/css-values/WEB_FEATURES.yml b/tests/wpt/tests/css/css-values/WEB_FEATURES.yml index ca3c0ff91b9..dc7331ab954 100644 --- a/tests/wpt/tests/css/css-values/WEB_FEATURES.yml +++ b/tests/wpt/tests/css/css-values/WEB_FEATURES.yml @@ -5,6 +5,10 @@ features: - name: cap files: - cap-* +- name: exp-functions + files: + - exp-log-* + - hypot-pow-sqrt-* - name: ic files: - ic-* diff --git a/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-new-main-new-iframe-ref.html b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-new-main-new-iframe-ref.html new file mode 100644 index 00000000000..86bc2a4a368 --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-new-main-new-iframe-ref.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<title>View transitions: iframe and main frame transition at the same time (ref)</title> +<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> +<link rel="author" href="mailto:khushalsagar@chromium.org"> +<style> +iframe { + position: fixed; + top: 0; + left: 0; + width: 50vw; + height: 50vh; +} + +body { + background: lightgreen; +} +</style> + +<iframe srcdoc=" +<style> +body { + background: lightblue; +} +</style> +"></iframe> + + diff --git a/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-new-main-new-iframe.html b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-new-main-new-iframe.html new file mode 100644 index 00000000000..89360c0dcca --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-new-main-new-iframe.html @@ -0,0 +1,68 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<title>View transitions: iframe and main frame transition at the same time</title> +<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> +<link rel="author" href="mailto:khushalsagar@chromium.org"> +<link rel="match" href="iframe-and-main-frame-transition-new-main-new-iframe-ref.html"> +<script src="/common/reftest-wait.js"></script> +<style> +iframe { + position: fixed; + top: 0; + left: 0; + width: 50vw; + height: 50vh; +} + +/* Keep showing the live state for the main frame so we can assert the state of + screenshots in the iframe */ +::view-transition-group(root) { + animation-duration: 300s; +} +::view-transition-old(root) { + animation: unset; + opacity: 0; +} +::view-transition-new(root) { + animation: unset; + opacity: 1; +} +</style> + +<iframe srcdoc=" +<style> + /* The iframe is showing new live DOM */ + ::view-transition-group(root) { + animation-duration: 300s; + } + ::view-transition-new(root) { + animation: unset; + opacity: 1; + } + ::view-transition-old(root) { + animation: unset; + opacity: 0; + } +</style> +<body></body> +"></iframe> +<script> + onload = runTest; + + async function startTransition(document, oldColor, newColor) { + document.documentElement.style.background = oldColor; + await document.startViewTransition(() => { + document.documentElement.style.background = newColor; + }).ready; + } + + async function runTest() { + await startTransition(document, "green", "lightgreen"); + + const iframeDocument = document.querySelector("iframe").contentDocument; + await startTransition(iframeDocument, "blue", "lightblue"); + + takeScreenshot(); + } +</script> + diff --git a/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-new-main-old-iframe-ref.html b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-new-main-old-iframe-ref.html new file mode 100644 index 00000000000..baafea3656a --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-new-main-old-iframe-ref.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<title>View transitions: iframe and main frame transition at the same time (ref)</title> +<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> +<link rel="author" href="mailto:khushalsagar@chromium.org"> +<style> +iframe { + position: fixed; + top: 0; + left: 0; + width: 50vw; + height: 50vh; +} + +body { + background: lightgreen; +} +</style> + +<iframe srcdoc=" +<style> +body { + background: blue; +} +</style> +"></iframe> + + diff --git a/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-new-main-old-iframe.html b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-new-main-old-iframe.html new file mode 100644 index 00000000000..7a9c53ffc16 --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-new-main-old-iframe.html @@ -0,0 +1,68 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<title>View transitions: iframe and main frame transition at the same time</title> +<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> +<link rel="author" href="mailto:khushalsagar@chromium.org"> +<link rel="match" href="iframe-and-main-frame-transition-new-main-old-iframe-ref.html"> +<script src="/common/reftest-wait.js"></script> +<style> +iframe { + position: fixed; + top: 0; + left: 0; + width: 50vw; + height: 50vh; +} + +/* Keep showing the live state for the main frame so we can assert the state of + screenshots in the iframe */ +::view-transition-group(root) { + animation-duration: 300s; +} +::view-transition-old(root) { + animation: unset; + opacity: 0; +} +::view-transition-new(root) { + animation: unset; + opacity: 1; +} +</style> + +<iframe srcdoc=" +<style> + /* The iframe is showing old screenshots */ + ::view-transition-group(root) { + animation-duration: 300s; + } + ::view-transition-old(root) { + animation: unset; + opacity: 1; + } + ::view-transition-new(root) { + animation: unset; + opacity: 0; + } +</style> +<body></body> +"></iframe> +<script> + onload = runTest; + + async function startTransition(document, oldColor, newColor) { + document.documentElement.style.background = oldColor; + await document.startViewTransition(() => { + document.documentElement.style.background = newColor; + }).ready; + } + + async function runTest() { + await startTransition(document, "green", "lightgreen"); + + const iframeDocument = document.querySelector("iframe").contentDocument; + await startTransition(iframeDocument, "blue", "lightblue"); + + takeScreenshot(); + } +</script> + diff --git a/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-new-iframe-ref.html b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-new-iframe-ref.html new file mode 100644 index 00000000000..7033cd9d21d --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-new-iframe-ref.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<title>View transitions: iframe and main frame transition at the same time (ref)</title> +<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> +<link rel="author" href="mailto:khushalsagar@chromium.org"> +<style> +iframe { + position: fixed; + top: 0; + left: 0; + width: 50vw; + height: 50vh; +} + +body { + background: green; +} +</style> + +<iframe srcdoc=" +<style> +body { + background: lightblue; +} +</style> +"></iframe> + + diff --git a/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-new-iframe.html b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-new-iframe.html new file mode 100644 index 00000000000..d3681aa4349 --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-new-iframe.html @@ -0,0 +1,67 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<title>View transitions: iframe and main frame transition at the same time</title> +<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> +<link rel="author" href="mailto:khushalsagar@chromium.org"> +<link rel="match" href="iframe-and-main-frame-transition-old-main-new-iframe-ref.html"> +<script src="/common/reftest-wait.js"></script> +<style> +iframe { + position: fixed; + top: 0; + left: 0; + width: 50vw; + height: 50vh; +} + +/* Keep showing the screenshot for the main frame */ +::view-transition-group(root) { + animation-duration: 300s; +} +::view-transition-old(root) { + animation: unset; + opacity: 1; +} +::view-transition-new(root) { + animation: unset; + opacity: 0; +} +</style> + +<iframe srcdoc=" +<style> + /* The iframe is showing live DOM */ + ::view-transition-group(root) { + animation-duration: 300s; + } + ::view-transition-new(root) { + animation: unset; + opacity: 1; + } + ::view-transition-old(root) { + animation: unset; + opacity: 0; + } +</style> +<body></body> +"></iframe> +<script> + onload = runTest; + + async function startTransition(document, oldColor, newColor) { + document.documentElement.style.background = oldColor; + await document.startViewTransition(() => { + document.documentElement.style.background = newColor; + }).ready; + } + + async function runTest() { + const iframeDocument = document.querySelector("iframe").contentDocument; + await startTransition(iframeDocument, "blue", "lightblue"); + + await startTransition(document, "green", "lightgreen"); + + takeScreenshot(); + } +</script> + diff --git a/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-old-iframe-ref.html b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-old-iframe-ref.html new file mode 100644 index 00000000000..2824884c4fe --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-old-iframe-ref.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<title>View transitions: iframe and main frame transition at the same time (ref)</title> +<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> +<link rel="author" href="mailto:khushalsagar@chromium.org"> +<style> +iframe { + position: fixed; + top: 0; + left: 0; + width: 50vw; + height: 50vh; +} + +body { + background: green; +} +</style> + +<iframe srcdoc=" +<style> +body { + background: blue; +} +</style> +"></iframe> + + diff --git a/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-old-iframe.html b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-old-iframe.html new file mode 100644 index 00000000000..bcdc566a260 --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-old-iframe.html @@ -0,0 +1,67 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<title>View transitions: iframe and main frame transition at the same time</title> +<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> +<link rel="author" href="mailto:khushalsagar@chromium.org"> +<link rel="match" href="iframe-and-main-frame-transition-old-main-old-iframe-ref.html"> +<script src="/common/reftest-wait.js"></script> +<style> +iframe { + position: fixed; + top: 0; + left: 0; + width: 50vw; + height: 50vh; +} + +/* Keep showing the screenshot for the main frame */ +::view-transition-group(root) { + animation-duration: 300s; +} +::view-transition-old(root) { + animation: unset; + opacity: 1; +} +::view-transition-new(root) { + animation: unset; + opacity: 0; +} +</style> + +<iframe srcdoc=" +<style> + /* The iframe is showing an old screenshot */ + ::view-transition-group(root) { + animation-duration: 300s; + } + ::view-transition-old(root) { + animation: unset; + opacity: 1; + } + ::view-transition-new(root) { + animation: unset; + opacity: 0; + } +</style> +<body></body> +"></iframe> +<script> + onload = runTest; + + async function startTransition(document, oldColor, newColor) { + document.documentElement.style.background = oldColor; + await document.startViewTransition(() => { + document.documentElement.style.background = newColor; + }).ready; + } + + async function runTest() { + const iframeDocument = document.querySelector("iframe").contentDocument; + await startTransition(iframeDocument, "blue", "lightblue"); + + await startTransition(document, "green", "lightgreen"); + + takeScreenshot(); + } +</script> + diff --git a/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-ref.html b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-ref.html new file mode 100644 index 00000000000..9253bb5f21c --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-ref.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<title>View transitions: iframe and main frame transition at the same time (ref)</title> +<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> +<link rel="author" href="mailto:khushalsagar@chromium.org"> +<style> +iframe { + position: fixed; + top: 0; + left: 0; + width: 50vw; + height: 50vh; +} + +body { + background: green; +} +</style> + +<iframe srcdoc=" +<style> +body { + background: orange; +} +</style> +"></iframe> + + diff --git a/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main.html b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main.html new file mode 100644 index 00000000000..bd58368645f --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main.html @@ -0,0 +1,60 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<title>View transitions: iframe and main frame transition at the same time</title> +<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> +<link rel="author" href="mailto:khushalsagar@chromium.org"> +<link rel="match" href="iframe-and-main-frame-transition-old-main-ref.html"> +<script src="/common/reftest-wait.js"></script> +<style> +iframe { + position: fixed; + top: 0; + left: 0; + width: 50vw; + height: 50vh; +} + +/* The main frame is showing the old screenshot */ +::view-transition-group(root) { + animation-duration: 300s; +} +::view-transition-new(root) { + animation: unset; + opacity: 0; +} +::view-transition-old(root) { + animation: unset; + opacity: 1; +} +</style> + +<iframe srcdoc=" +<style> + body { + background: orange; + } +</style> +<body></body>"></iframe> +<script> + onload = runTest; + + async function startTransition(document, oldColor, newColor) { + document.documentElement.style.background = oldColor; + await document.startViewTransition(() => { + document.documentElement.style.background = newColor; + }).ready; + } + + async function runTest() { + await startTransition(document, "green", "lightgreen"); + + // Start an iframe transition while the main frame transition is showing the + // old screenshot. This change shouldn't show up visually because the old + // screenshot on the main frame still has the iframe's old content. + const iframeDocument = document.querySelector("iframe").contentDocument; + await startTransition(iframeDocument, "blue", "lightblue"); + + takeScreenshot(); + } +</script> + diff --git a/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-with-name-on-iframe-ref.html b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-with-name-on-iframe-ref.html new file mode 100644 index 00000000000..94bd3bdac37 --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-with-name-on-iframe-ref.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<title>View transitions: iframe and main frame transition at the same time with name on iframe (ref)</title> +<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> +<link rel="author" href="mailto:khushalsagar@chromium.org"> +<style> +iframe { + position: fixed; + top: 0; + left: 0; + width: 50vw; + height: 50vh; + border: 1px solid orange; +} + +body { + background: green; +} +</style> + +<iframe srcdoc=" +<style> +body { + background: blue; +} +</style> +"></iframe> + + diff --git a/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-with-name-on-iframe.html b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-with-name-on-iframe.html new file mode 100644 index 00000000000..f948e89dc7d --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-with-name-on-iframe.html @@ -0,0 +1,93 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<title>View transitions: iframe and main frame transition at the same time with name on iframe</title> +<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> +<link rel="author" href="mailto:khushalsagar@chromium.org"> +<link rel="match" href="iframe-and-main-frame-transition-with-name-on-iframe-ref.html"> +<script src="/common/reftest-wait.js"></script> +<style> +iframe { + position: fixed; + top: 0; + left: 0; + width: 50vw; + height: 50vh; + view-transition-name: inner; +} + +.old { + border: 1px solid black; +} + +.new { + border: 1px solid orange; +} + +/* The main frame is showing the old screenshot for the root */ +::view-transition-group(root) { + animation-duration: 300s; +} +::view-transition-new(root) { + animation: unset; + opacity: 0; +} +::view-transition-old(root) { + animation: unset; + opacity: 1; +} + +/* The iframe is showing the live screenshot */ +::view-transition-new(inner) { + animation: unset; + opacity: 1; +} +::view-transition-old(inner) { + animation: unset; + opacity: 0; +} + +</style> + +<iframe id="inner" srcdoc=" +<style> + /* The iframe document itself is showing an old screenshot */ + ::view-transition-group(root) { + animation-duration: 300s; + } + ::view-transition-new(root) { + animation: unset; + opacity: 0; + } + ::view-transition-old(root) { + animation: unset; + opacity: 1; + } +</style> +<body></body>"></iframe> +<script> + onload = runTest; + + async function startTransition(document, oldColor, newColor, nestedFrame) { + document.documentElement.style.background = oldColor; + if (nestedFrame != null) + nestedFrame.classList.add("old"); + + await document.startViewTransition(() => { + document.documentElement.style.background = newColor; + if (nestedFrame != null) { + nestedFrame.classList.remove("old"); + nestedFrame.classList.add("new"); + } + }).ready; + } + + async function runTest() { + await startTransition(document, "green", "lightgreen", document.getElementById("inner")); + + const iframeDocument = document.querySelector("iframe").contentDocument; + await startTransition(iframeDocument, "blue", "lightblue", null); + + takeScreenshot(); + } +</script> + diff --git a/tests/wpt/tests/css/css-view-transitions/root-to-shared-animation-incoming-ref.html b/tests/wpt/tests/css/css-view-transitions/root-to-shared-animation-incoming-ref.html index df0ec1a9d8e..6044ba26361 100644 --- a/tests/wpt/tests/css/css-view-transitions/root-to-shared-animation-incoming-ref.html +++ b/tests/wpt/tests/css/css-view-transitions/root-to-shared-animation-incoming-ref.html @@ -10,4 +10,4 @@ body { padding: 0; margin: 0; } - +</style> diff --git a/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-backdrop-filter.html b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-backdrop-filter.html new file mode 100644 index 00000000000..6be85d5cf24 --- /dev/null +++ b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-backdrop-filter.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>backdrop-filter: The backdrop root concept</title> +<link rel="author" href="mailto:masonf@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-2/#BackdropRoot"> +<link rel=stylesheet href="resources/backdrop-filter-backdrop-root.css"> +<link rel="match" href="backdrop-filter-backdrop-root-ref.html"> + +<!-- A Backdrop Root is formed, anywhere in the document, by: + - An element with a backdrop-filter value other than "none". + - An element with a will-change value specifying any property that would create a Backdrop Root on non-initial value. --> +<div class=container> + <div class=testcase> + <div style="backdrop-filter: invert(0);"><div></div></div> + </div> + <div class=testcase> + <div style="will-change:backdrop-filter;"><div></div></div> + </div> +</div> diff --git a/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-clip-path-ref.html b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-clip-path-ref.html new file mode 100644 index 00000000000..08a2ad4fc52 --- /dev/null +++ b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-clip-path-ref.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel=stylesheet href="resources/backdrop-filter-backdrop-root.css"> + +<div class=container> + <div class=testcase style="clip-path: xywh(5px 5px 40px 40px);"> + <div></div> + <div class="box2" style="background: #00ffff;"></div> + </div> + <div class=testcase> + <div></div> + <div class="box2" style="background: #00ffff;"></div> + </div> +</div> + +<style> +.box2 { + top:-50px; + left: 50px; + border: 1px solid black; +} +</style> diff --git a/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-clip-path.html b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-clip-path.html new file mode 100644 index 00000000000..172d07be93e --- /dev/null +++ b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-clip-path.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>backdrop-filter: The backdrop root concept</title> +<link rel="author" href="mailto:masonf@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-2/#BackdropRoot"> +<link rel=stylesheet href="resources/backdrop-filter-backdrop-root.css"> +<link rel="match" href="backdrop-filter-backdrop-root-clip-path-ref.html"> + +<!-- A Backdrop Root is formed, anywhere in the document, by: + - An element with mask, mask-image, mask-border, or clip-path properties with values other than “none”. + - An element with a will-change value specifying any property that would create a Backdrop Root on non-initial value. --> +<div class=container> + <div class=testcase> + <div style="clip-path: inset(10%);"><div></div></div> + </div> + <div class=testcase> + <div style="will-change:clip-path;"><div></div></div> + </div> +</div> diff --git a/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-filter-ref.html b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-filter-ref.html new file mode 100644 index 00000000000..ffa4dfcf0e0 --- /dev/null +++ b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-filter-ref.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel=stylesheet href="resources/backdrop-filter-backdrop-root.css"> + +<div class=container> + <div class=testcase> + <div style="filter: invert(0.1)"></div> + <div class="box2" style="border-color: #1A1A1A; background: #00ffff;"></div> + </div> + <div class=testcase> + <div></div> + <div class="box2" style="background: #00ffff;"></div> + </div> +</div> + +<style> +.box2 { + top:-50px; + left: 50px; + border: 1px solid black; +} +</style> diff --git a/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-filter.html b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-filter.html new file mode 100644 index 00000000000..e988b479ced --- /dev/null +++ b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-filter.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>backdrop-filter: The backdrop root concept</title> +<link rel="author" href="mailto:masonf@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-2/#BackdropRoot"> +<link rel=stylesheet href="resources/backdrop-filter-backdrop-root.css"> +<link rel="match" href="backdrop-filter-backdrop-root-filter-ref.html"> +<meta name="fuzzy" content="maxDifference=0-5;totalPixels=0-500"> + +<!-- A Backdrop Root is formed, anywhere in the document, by: + - An element with a filter property other than "none". + - An element with a will-change value specifying any property that would create a Backdrop Root on non-initial value. --> +<div class=container> + <div class=testcase> + <div style="filter: invert(0.1);"><div></div></div> + </div> + <div class=testcase> + <div style="will-change:filter;"><div></div></div> + </div> +</div> diff --git a/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-mix-blend-mode.html b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-mix-blend-mode.html new file mode 100644 index 00000000000..2d77b61b849 --- /dev/null +++ b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-mix-blend-mode.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>backdrop-filter: The backdrop root concept</title> +<link rel="author" href="mailto:masonf@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-2/#BackdropRoot"> +<link rel=stylesheet href="resources/backdrop-filter-backdrop-root.css"> +<link rel="match" href="backdrop-filter-backdrop-root-ref.html"> + +<!-- A Backdrop Root is formed, anywhere in the document, by: + - An element with a mix-blend-mode value other than "normal". + - An element with a will-change value specifying any property that would create a Backdrop Root on non-initial value. --> +<div class=container> + <div class=testcase> + <div style="mix-blend-mode:darken;"><div></div></div> + </div> + <div class=testcase> + <div style="will-change:mix-blend-mode;"><div></div></div> + </div> +</div> diff --git a/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-opacity-ref.html b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-opacity-ref.html new file mode 100644 index 00000000000..76d4854df6c --- /dev/null +++ b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-opacity-ref.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel=stylesheet href="resources/backdrop-filter-backdrop-root.css"> + +<div class=container> + <div class=testcase> + <div style="opacity:0.9"></div> + <div class="box2" style="border-color: #021919; background: #00ffff;"></div> + </div> + <div class=testcase> + <div></div> + <div class="box2" style="background: #00ffff;"></div> + </div> +</div> + +<style> +.box2 { + top:-50px; + left: 50px; + border: 1px solid black; +} +</style> + diff --git a/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-opacity.html b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-opacity.html new file mode 100644 index 00000000000..b11d064cb3b --- /dev/null +++ b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-opacity.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>backdrop-filter: The backdrop root concept</title> +<link rel="author" href="mailto:masonf@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects-2/#BackdropRoot"> +<link rel=stylesheet href="resources/backdrop-filter-backdrop-root.css"> +<link rel="match" href="backdrop-filter-backdrop-root-opacity-ref.html"> +<meta name="fuzzy" content="maxDifference=0-5;totalPixels=0-500"> + +<!-- A Backdrop Root is formed, anywhere in the document, by: + - An element with an opacity value less than 1. + - An element with a will-change value specifying any property that would create a Backdrop Root on non-initial value. --> +<div class=container> + <div class=testcase> + <div style="opacity: 0.9;"><div></div></div> + </div> + <div class=testcase> + <div style="will-change:opacity;"><div></div></div> + </div> +</div> diff --git a/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-ref.html b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-ref.html new file mode 100644 index 00000000000..934e08acb9a --- /dev/null +++ b/tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-ref.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel=stylesheet href="resources/backdrop-filter-backdrop-root.css"> + +<div class=container> + <div class=testcase> + <div></div> + <div class="box2" style="background: #00ffff;"></div> + </div> + <div class=testcase> + <div></div> + <div class="box2" style="background: #00ffff;"></div> + </div> +</div> + +<style> +.box2 { + top:-50px; + left: 50px; + border: 1px solid black; +} +</style> + diff --git a/tests/wpt/tests/css/filter-effects/backdrop-filter-isolation-ref.html b/tests/wpt/tests/css/filter-effects/backdrop-filter-isolation-ref.html deleted file mode 100644 index fc2bccc36c1..00000000000 --- a/tests/wpt/tests/css/filter-effects/backdrop-filter-isolation-ref.html +++ /dev/null @@ -1,51 +0,0 @@ -<!DOCTYPE html> -<meta charset="utf-8"> -<title>backdrop-filter: Should not filter outside parent stacking context.</title> -<link rel="author" href="mailto:masonf@chromium.org"> - - - -<div> - <p>Expected: Two green boxes overlapped by a yellow box. The overlapped region<br> - of the right-hand box ONLY should be inverted (pink).</p> -</div> -<div class="box outside"> - <div class="box stacking-context"> - <div class="box filter"> - </div> - </div> -</div> -<div class="box overlay"></div> -<style> -.box { - position: absolute; - width: 100px; - height: 100px; - background: green; -} -.outside { - top: 110px; - left: 10px; -} -.stacking-context { - will-change: transform; - top: 0px; - left: 120px; -} -.filter { - width: 160px; - height: 160px; - top: 30px; - left: -90px; - will-change: transform; - background: #ff08; -} -.overlay { - background:#ffc377; - width:70px; - height:70px; - top:140px; - left:130px; -} -</style> - diff --git a/tests/wpt/tests/css/filter-effects/backdrop-filter-isolation.html b/tests/wpt/tests/css/filter-effects/backdrop-filter-isolation.html deleted file mode 100644 index 06791f73d2b..00000000000 --- a/tests/wpt/tests/css/filter-effects/backdrop-filter-isolation.html +++ /dev/null @@ -1,44 +0,0 @@ -<!DOCTYPE html> -<meta charset="utf-8"> -<title>backdrop-filter: Should not filter outside parent stacking context.</title> -<link rel="author" href="mailto:masonf@chromium.org"> -<link rel="help" href="https://drafts.fxtf.org/filter-effects-2/#BackdropFilterProperty"> -<link rel="match" href="backdrop-filter-isolation-ref.html"> - -<div> - <p>Expected: Two green boxes overlapped by a yellow box. The overlapped region<br> - of the right-hand box ONLY should be inverted (pink).</p> -</div> -<div class="box outside"> - <div class="box stacking-context"> - <div class="box filter"> - </div> - </div> -</div> - -<style> -.box { - position: absolute; - width: 100px; - height: 100px; - background: green; -} -.outside { - top: 110px; - left: 10px; -} -.stacking-context { - opacity: 0.9999; - top: 0px; - left: 120px; -} -.filter { - width: 160px; - height: 160px; - top: 30px; - left: -90px; - backdrop-filter: invert(1); - background: #ff08; -} -</style> - diff --git a/tests/wpt/tests/css/filter-effects/resources/backdrop-filter-backdrop-root.css b/tests/wpt/tests/css/filter-effects/resources/backdrop-filter-backdrop-root.css new file mode 100644 index 00000000000..635e497cdfc --- /dev/null +++ b/tests/wpt/tests/css/filter-effects/resources/backdrop-filter-backdrop-root.css @@ -0,0 +1,30 @@ +.container { + display: flex; + flex-direction: row; + flex-wrap: wrap; + width: 250px; + height: 100px; + align-content: flex-start; + background:#00ffff; +} +.testcase { + width: 100px; + height: 50px; +} +.testcase div { + width: 50px; + height: 50px; + position: relative; +} +.testcase>div { + background: green; +} +.testcase>div>div { + left: 50px; + backdrop-filter: invert(1); + background: transparent; + border: 1px solid black; +} +* { + box-sizing: border-box; +} diff --git a/tests/wpt/tests/deprecation-reporting/__dir__.ini b/tests/wpt/tests/deprecation-reporting/__dir__.ini new file mode 100644 index 00000000000..79ef6f271a7 --- /dev/null +++ b/tests/wpt/tests/deprecation-reporting/__dir__.ini @@ -0,0 +1 @@ +implementation-status: not-implementing
\ No newline at end of file diff --git a/tests/wpt/tests/fetch/metadata/tools/fetch-metadata.conf.yml b/tests/wpt/tests/fetch/metadata/tools/fetch-metadata.conf.yml index 11e61403436..b96bd2fd7b4 100644 --- a/tests/wpt/tests/fetch/metadata/tools/fetch-metadata.conf.yml +++ b/tests/wpt/tests/fetch/metadata/tools/fetch-metadata.conf.yml @@ -43,8 +43,8 @@ cases: origins: [httpCrossSite] description: Not sent to non-trustworthy cross-site destination template_axes: - # The `audioWorklet` interface is only available in secure contexts - # https://webaudio.github.io/web-audio-api/#BaseAudioContext + # The `AudioWorklet` interface is only available in secure contexts + # https://webaudio.github.io/web-audio-api/#AudioWorklet audioworklet.https.sub.html: [] # Service workers are only available in secure context fetch-via-serviceworker.https.sub.html: [] @@ -112,7 +112,6 @@ cases: template_axes: # All the templates in this block are unused with the exception of # `worker-dedicated-constructor` - appcache-manifest.sub.https.html: [] audioworklet.https.sub.html: [] fetch-via-serviceworker.https.sub.html: [] serviceworker.https.sub.html: [] @@ -230,8 +229,8 @@ cases: expected: cross-site template_axes: # Unused - # The `audioWorklet` interface is only available in secure contexts - # https://webaudio.github.io/web-audio-api/#BaseAudioContext + # The `AudioWorklet` interface is only available in secure contexts + # https://webaudio.github.io/web-audio-api/#AudioWorklet audioworklet.https.sub.html: [] # Service workers are only available in secure context fetch-via-serviceworker.https.sub.html: [] diff --git a/tests/wpt/tests/fledge/tentative/auction-config.https.window.js b/tests/wpt/tests/fledge/tentative/auction-config.https.window.js index 28ed1470718..057b4d7f785 100644 --- a/tests/wpt/tests/fledge/tentative/auction-config.https.window.js +++ b/tests/wpt/tests/fledge/tentative/auction-config.https.window.js @@ -12,8 +12,10 @@ // META: variant=?31-35 // META: variant=?36-40 // META: variant=?40-45 -// META: variant=?45-50 -// META: variant=?50-last +// META: variant=?46-50 +// META: variant=?51-55 +// META: variant=?56-60 +// META: variant=?61-last "use strict;" @@ -502,6 +504,60 @@ makeTest({ {width: '200furlongs', height: '200'}]} }); +makeTest({ + name: 'sellerRealTimeReportingConfig has default local reporting type', + expect: EXPECT_WINNER, + auctionConfigOverrides: {sellerRealTimeReportingConfig: + {type: 'default-local-reporting'}} +}); + +makeTest({ + name: 'sellerRealTimeReportingConfig has no type', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: {sellerRealTimeReportingConfig: + {notType: 'default-local-reporting'}} +}); + +makeTest({ + name: 'sellerRealTimeReportingConfig has unknown type', + expect: EXPECT_WINNER, + auctionConfigOverrides: {sellerRealTimeReportingConfig: {type: 'unknown type'}} +}); + +makeTest({ + name: 'perBuyerRealTimeReportingConfig', + expect: EXPECT_WINNER, + auctionConfigOverrides: {perBuyerRealTimeReportingConfig: + {"https://example.com": {type: 'default-local-reporting'}}} +}); + +makeTest({ + name: 'perBuyerRealTimeReportingConfig has no entry', + expect: EXPECT_WINNER, + auctionConfigOverrides: {perBuyerRealTimeReportingConfig: {}} +}); + +makeTest({ + name: 'perBuyerRealTimeReportingConfig has invalid buyer', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: {perBuyerRealTimeReportingConfig: + {"http://example.com": {type: 'default-local-reporting'}}} +}); + +makeTest({ + name: 'perBuyerRealTimeReportingConfig has no type', + expect: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: {perBuyerRealTimeReportingConfig: + {"https://example.com": {notType: 'default-local-reporting'}}} +}); + +makeTest({ + name: 'perBuyerRealTimeReportingConfig has unknown type', + expect: EXPECT_WINNER, + auctionConfigOverrides: {perBuyerRealTimeReportingConfig: + {"https://example.com": {type: 'unknown type'}}} +}); + subsetTest(promise_test, async test => { const uuid = generateUuid(test); diff --git a/tests/wpt/tests/html/dom/WEB_FEATURES.yml b/tests/wpt/tests/html/dom/WEB_FEATURES.yml new file mode 100644 index 00000000000..5c9e27d2974 --- /dev/null +++ b/tests/wpt/tests/html/dom/WEB_FEATURES.yml @@ -0,0 +1,4 @@ +features: +- name: aria-attribute-reflection + files: + - aria-attribute-reflection.html diff --git a/tests/wpt/tests/html/semantics/embedded-content/media-elements/WEB_FEATURES.yml b/tests/wpt/tests/html/semantics/embedded-content/media-elements/WEB_FEATURES.yml new file mode 100644 index 00000000000..5730fe4715a --- /dev/null +++ b/tests/wpt/tests/html/semantics/embedded-content/media-elements/WEB_FEATURES.yml @@ -0,0 +1,4 @@ +features: +- name: preserves-pitch + files: + - preserves-pitch.html diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/resources/stylable-select-styles.css b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/resources/stylable-select-styles.css index ed572669a4f..5ee317d61a9 100644 --- a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/resources/stylable-select-styles.css +++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/resources/stylable-select-styles.css @@ -11,7 +11,8 @@ overflow: auto; border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 0.25em; - padding: 0.25em 0; + padding-block: 0.25em; + padding-inline: 0; background-color: Field; margin: 0; inset: auto; @@ -32,3 +33,46 @@ padding: 0px 2px 1px; white-space: nowrap; } + +.stylable-select-button { + color: FieldText; + background-color: Field; + appearance: none; + padding: 0.25em; + border: 1px solid ButtonBorder; + cursor: default; + text-align: inherit; + display: inline-flex; + flex-grow: 1; + flex-shrink: 1; + align-items: center; + overflow-x: hidden; + overflow-y: hidden; +} + +.stylable-select-button-icon { + background-image: url(data:image/svg+xml,%3Csvg%20width%3D%2220%22%20height%3D%2214%22%20viewBox%3D%220%200%2020%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M4%206%20L10%2012%20L%2016%206%22%20stroke%3D%22WindowText%22%20stroke-width%3D%223%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E); + background-origin: content-box; + background-repeat: no-repeat; + background-size: contain; + opacity: 1; + outline: none; + margin-inline-start: 0.25em; + padding-block: 2px; + padding-inline: 3px; + block-size: 1.0em; + inline-size: 1.2em; + min-inline-size: 1.2em; + max-inline-size: 1.2em; + display: block; +} + +.stylable-select-selectedoption { + color: inherit; + min-inline-size: 0px; + max-block-size: 100%; + flex-grow: 1; + flex-shrink: 1; + overflow: hidden; + display: inline; +} diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-custom-datalist-ref.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-custom-button-no-datalist-ref.html index 8e5eadaf57b..10c966a107b 100644 --- a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-custom-datalist-ref.html +++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-custom-button-no-datalist-ref.html @@ -2,7 +2,7 @@ <link rel=stylesheet href="resources/stylable-select-styles.css"> <div id=container class=stylable-select-container> - <button popovertarget=popover id=button>one</button> + <button>one</button> <div id=popover popover=auto anchor=container class=stylable-select-datalist> <div class=stylable-select-option>one</div> <div class=stylable-select-option>two</div> diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-custom-button-no-datalist.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-custom-button-no-datalist.tentative.html index 94d7fd53b34..aaceabcf051 100644 --- a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-custom-button-no-datalist.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-custom-button-no-datalist.tentative.html @@ -2,8 +2,7 @@ <html class=reftest-wait> <link rel=author href="mailto:jarhar@chromium.org"> <link rel=help href="https://github.com/whatwg/html/issues/9799"> -<link rel=match href="select-appearance-no-button-custom-datalist-ref.html"> -<link rel=stylesheet href="resources/select-reset-non-interoperable-styles.css"> +<link rel=match href="select-appearance-custom-button-no-datalist-ref.html"> <script src="/resources/testdriver.js"></script> <script src="/resources/testdriver-vendor.js"></script> diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-custom-datalist.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-custom-datalist.tentative.html index 87425cf7a32..cc8a4c60bd7 100644 --- a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-custom-datalist.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-custom-datalist.tentative.html @@ -2,8 +2,7 @@ <html class=reftest-wait> <link rel=author href="mailto:jarhar@chromium.org"> <link rel=help href="https://github.com/whatwg/html/issues/9799"> -<link rel=match href="select-appearance-no-button-custom-datalist-ref.html"> -<link rel=stylesheet href="resources/select-reset-non-interoperable-styles.css"> +<link rel=match href="select-appearance-no-button-no-datalist-ref.html"> <script src="/resources/testdriver.js"></script> <script src="/resources/testdriver-vendor.js"></script> diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-no-datalist-ref.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-no-datalist-ref.html new file mode 100644 index 00000000000..3c6e9416b06 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-no-datalist-ref.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<link rel=stylesheet href="resources/stylable-select-styles.css"> + +<div id=container class=stylable-select-container> + <button class=stylable-select-button popovertarget=popover id=button> + <span class=stylable-select-selectedoption>one</span> + <div class=stylable-select-button-icon></div> + </button> + <div id=popover popover=auto anchor=container class=stylable-select-datalist> + <div class=stylable-select-option>one</div> + <div class=stylable-select-option>two</div> + </div> +</div> + +<script> +document.getElementById('popover').showPopover(); +</script> diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-no-datalist.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-no-datalist.tentative.html index b2a6b5a6d39..29261b7f255 100644 --- a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-no-datalist.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-no-datalist.tentative.html @@ -2,8 +2,7 @@ <html class=reftest-wait> <link rel=author href="mailto:jarhar@chromium.org"> <link rel=help href="https://github.com/whatwg/html/issues/9799"> -<link rel=match href="select-appearance-no-button-custom-datalist-ref.html"> -<link rel=stylesheet href="resources/select-reset-non-interoperable-styles.css"> +<link rel=match href="select-appearance-no-button-no-datalist-ref.html"> <script src="/resources/testdriver.js"></script> <script src="/resources/testdriver-vendor.js"></script> diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-lr-ref.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-lr-ref.html new file mode 100644 index 00000000000..8b7e6402fb8 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-lr-ref.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<link rel=stylesheet href="resources/stylable-select-styles.css"> + +<style> +html { + writing-mode: vertical-lr; +} +</style> + +<div id=container class=stylable-select-container> + <button class=stylable-select-button popovertarget=popover id=button> + <span class=stylable-select-selectedoption>one</span> + <div class=stylable-select-button-icon></div> + </button> + <div id=popover popover=auto anchor=container class=stylable-select-datalist> + <div class=stylable-select-option>one</div> + <div class=stylable-select-option>two</div> + </div> +</div> + +<script> +document.getElementById('popover').showPopover(); +</script> diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-lr.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-lr.tentative.html new file mode 100644 index 00000000000..2f8a6aa886e --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-lr.tentative.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel=author href="mailto:jarhar@chromium.org"> +<link rel=help href="https://github.com/whatwg/html/issues/9799"> +<link rel=match href="select-appearance-writing-mode-vertical-lr-ref.html"> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> + +<style> +html { + writing-mode: vertical-lr; +} +select { + appearance: base-select; +} +</style> + +<select> + <option>one</option> + <option>two</option> +</select> + +<script> +(async () => { + await test_driver.bless(); + document.querySelector('select').showPicker(); + document.documentElement.classList.remove('reftest-wait'); +})(); +</script> diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-rl-ref.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-rl-ref.html new file mode 100644 index 00000000000..158807ba58f --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-rl-ref.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<link rel=stylesheet href="resources/stylable-select-styles.css"> + +<style> +html { + writing-mode: vertical-rl; +} +</style> + +<div id=container class=stylable-select-container> + <button class=stylable-select-button popovertarget=popover id=button> + <span class=stylable-select-selectedoption>one</span> + <div class=stylable-select-button-icon></div> + </button> + <div id=popover popover=auto anchor=container class=stylable-select-datalist> + <div class=stylable-select-option>one</div> + <div class=stylable-select-option>two</div> + </div> +</div> + +<script> +document.getElementById('popover').showPopover(); +</script> diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-rl.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-rl.tentative.html new file mode 100644 index 00000000000..c2ea647be95 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-rl.tentative.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html class=reftest-wait> +<link rel=author href="mailto:jarhar@chromium.org"> +<link rel=help href="https://github.com/whatwg/html/issues/9799"> +<link rel=match href="select-appearance-writing-mode-vertical-rl-ref.html"> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> + +<style> +html { + writing-mode: vertical-rl; +} +select { + appearance: base-select; +} +</style> + +<select> + <option>one</option> + <option>two</option> +</select> + +<script> +(async () => { + await test_driver.bless(); + document.querySelector('select').showPicker(); + document.documentElement.classList.remove('reftest-wait'); +})(); +</script> diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-option-arbitrary-content-displayed.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-option-arbitrary-content-displayed.tentative.html index 2d51002fb2e..8c620baccad 100644 --- a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-option-arbitrary-content-displayed.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-option-arbitrary-content-displayed.tentative.html @@ -3,6 +3,8 @@ <title>HTMLSelectListElement Test: option arbitrary content displayed</title> <link rel="author" title="Ionel Popescu" href="mailto:iopopesc@microsoft.com"> <link rel=match href="selectlist-option-arbitrary-content-displayed-ref.tentative.html"> +<!-- Tolerate slight differences in the shadow gradient. --> +<meta name=fuzzy content="maxDifference=0-1;totalPixels=0-200"> <link rel="stylesheet" href="/fonts/ahem.css"> <script src="/resources/testdriver.js"></script> <script src="/resources/testdriver-actions.js"></script> diff --git a/tests/wpt/tests/html/semantics/invokers/interesttarget-svg-a-event-dispatch.tentative.html b/tests/wpt/tests/html/semantics/invokers/interesttarget-svg-a-event-dispatch.tentative.html new file mode 100644 index 00000000000..7fb4b1c19d6 --- /dev/null +++ b/tests/wpt/tests/html/semantics/invokers/interesttarget-svg-a-event-dispatch.tentative.html @@ -0,0 +1,51 @@ +<!doctype html> +<meta charset="utf-8" /> +<meta name="author" title="Keith Cirkel" href="mailto:keithamus@github.com" /> +<meta name="author" title="Luke Warlow" href="mailto:lwarlow@igalia.com" /> +<link rel="help" href="https://open-ui.org/components/invokers.explainer/" /> +<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> +<script src="resources/invoker-utils.js"></script> + +<div id="interestee"></div> +<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> + <a href="/" id="interestsvga" interesttarget="interestee"> + <text x="50" y="90">SVG A</text> + </a> +</svg> +<button id="otherbutton">Other Button</button> + +<script> + promise_test(async function (t) { + t.add_cleanup(() => otherbutton.focus()); + let event = null; + interestee.addEventListener("interest", (e) => (event = e), { once: true }); + interestsvga.focus(); + assert_true(event instanceof InterestEvent, "event is InterestEvent"); + assert_equals(event.type, "interest", "type"); + assert_equals(event.bubbles, false, "bubbles"); + assert_equals(event.composed, true, "composed"); + assert_equals(event.isTrusted, true, "isTrusted"); + assert_equals(event.action, "", "action"); + assert_equals(event.target, interestee, "target"); + assert_equals(event.invoker, interestsvga, "invoker"); + }, "InterestEvent dispatches on svg a focus"); + + promise_test(async function (t) { + t.add_cleanup(() => otherbutton.focus()); + let event = null; + interestee.addEventListener("interest", (e) => (event = e), { once: true }); + await hoverOver(interestsvga); + assert_true(event instanceof InterestEvent, "event is InterestEvent"); + assert_equals(event.type, "interest", "type"); + assert_equals(event.bubbles, false, "bubbles"); + assert_equals(event.composed, true, "composed"); + assert_equals(event.isTrusted, true, "isTrusted"); + assert_equals(event.action, "", "action"); + assert_equals(event.target, interestee, "target"); + assert_equals(event.invoker, interestsvga, "invoker"); + }, "InterestEvent dispatches on svg a hover"); +</script> diff --git a/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss-scroll-within.html b/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss-scroll-within.html new file mode 100644 index 00000000000..2329aea201c --- /dev/null +++ b/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss-scroll-within.html @@ -0,0 +1,52 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title>Popover light dismiss behavior when scrolled within</title> +<meta name="timeout" content="long"> +<link rel="author" href="mailto:masonf@chromium.org"> +<link rel=help href="https://open-ui.org/components/popover.research.explainer"> +<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> +<script src="resources/popover-utils.js"></script> + +<style> + [popover] { + /* Position most popovers at the bottom-right, out of the way */ + inset:auto; + bottom:0; + right:0; + } + [popover]::backdrop { + /* This should *not* affect anything: */ + pointer-events: auto; + } +</style> + +<div popover id=p>Inside popover + <div style="height:2000px;background:lightgreen"></div> + Bottom of popover6 +</div> +<button popovertarget=p>Popover</button> +<style> + #p6 { + width: 300px; + height: 300px; + overflow-y: scroll; + } +</style> +<script> + const popover = document.querySelector('#p'); + promise_test(async () => { + popover.showPopover(); + assert_equals(popover.scrollTop,0,'popover should start non-scrolled'); + await new test_driver.Actions() + .scroll(0, 0, 0, 50, {origin: popover}) + .send(); + await waitForRender(); + assert_true(popover.matches(':popover-open'),'popover should stay open'); + assert_equals(popover.scrollTop,50,'popover should be scrolled'); + popover.hidePopover(); + },'Scrolling within a popover should not close the popover'); +</script> diff --git a/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss.html b/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss.html index 1317b623c87..78b86745137 100644 --- a/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss.html +++ b/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss.html @@ -303,33 +303,6 @@ },'An invoking element that was not used to invoke the popover is not part of the ancestor chain'); </script> -<div popover id=p6>Inside popover 6 - <div style="height:2000px;background:lightgreen"></div> - Bottom of popover6 -</div> -<button popovertarget=p6>Popover 6</button> -<style> - #p6 { - width: 300px; - height: 300px; - overflow-y: scroll; - } -</style> -<script> - const popover6 = document.querySelector('#p6'); - promise_test(async () => { - popover6.showPopover(); - assert_equals(popover6.scrollTop,0,'popover6 should start non-scrolled'); - await new test_driver.Actions() - .scroll(0, 0, 0, 50, {origin: popover6}) - .send(); - await waitForRender(); - assert_true(popover6.matches(':popover-open'),'popover6 should stay open'); - assert_equals(popover6.scrollTop,50,'popover6 should be scrolled'); - popover6.hidePopover(); - },'Scrolling within a popover should not close the popover'); -</script> - <my-element id="myElement"> <template shadowrootmode="open"> <button id=b7 popovertarget=p7 popovertargetaction=show tabindex="0">Popover7</button> diff --git a/tests/wpt/tests/html/user-activation/WEB_FEATURES.yml b/tests/wpt/tests/html/user-activation/WEB_FEATURES.yml new file mode 100644 index 00000000000..4104016b756 --- /dev/null +++ b/tests/wpt/tests/html/user-activation/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: user-activation + files: "**" diff --git a/tests/wpt/tests/interfaces/DOM-Parsing.idl b/tests/wpt/tests/interfaces/DOM-Parsing.idl index 676753bf0fc..af262607936 100644 --- a/tests/wpt/tests/interfaces/DOM-Parsing.idl +++ b/tests/wpt/tests/interfaces/DOM-Parsing.idl @@ -8,7 +8,3 @@ interface XMLSerializer { constructor(); DOMString serializeToString(Node root); }; - -partial interface Range { - [CEReactions, NewObject] DocumentFragment createContextualFragment(HTMLString fragment); -}; diff --git a/tests/wpt/tests/interfaces/compute-pressure.idl b/tests/wpt/tests/interfaces/compute-pressure.idl index 77537feb106..a90febffc3b 100644 --- a/tests/wpt/tests/interfaces/compute-pressure.idl +++ b/tests/wpt/tests/interfaces/compute-pressure.idl @@ -21,7 +21,7 @@ interface PressureObserver { undefined disconnect(); sequence<PressureRecord> takeRecords(); - [SameObject] static readonly attribute FrozenArray<PressureSource> knownSources; + [SameObject] static readonly attribute FrozenArray<PressureSource> supportedSources; }; [Exposed=(DedicatedWorker,SharedWorker,Window), SecureContext] diff --git a/tests/wpt/tests/interfaces/css-properties-values-api.idl b/tests/wpt/tests/interfaces/css-properties-values-api.idl index eb7d7b027e7..418e78375be 100644 --- a/tests/wpt/tests/interfaces/css-properties-values-api.idl +++ b/tests/wpt/tests/interfaces/css-properties-values-api.idl @@ -16,8 +16,8 @@ partial namespace CSS { [Exposed=Window] interface CSSPropertyRule : CSSRule { - readonly attribute CSSOMString name; - readonly attribute CSSOMString syntax; - readonly attribute boolean inherits; - readonly attribute CSSOMString? initialValue; + readonly attribute CSSOMString name; + readonly attribute CSSOMString syntax; + readonly attribute boolean inherits; + readonly attribute CSSOMString? initialValue; }; diff --git a/tests/wpt/tests/interfaces/geolocation.idl b/tests/wpt/tests/interfaces/geolocation.idl index 4b971f097ba..8c0acfc6cc1 100644 --- a/tests/wpt/tests/interfaces/geolocation.idl +++ b/tests/wpt/tests/interfaces/geolocation.idl @@ -42,6 +42,7 @@ dictionary PositionOptions { interface GeolocationPosition { readonly attribute GeolocationCoordinates coords; readonly attribute EpochTimeStamp timestamp; + [Default] object toJSON(); }; [Exposed=Window, SecureContext] @@ -53,6 +54,7 @@ interface GeolocationCoordinates { readonly attribute double? altitudeAccuracy; readonly attribute double? heading; readonly attribute double? speed; + [Default] object toJSON(); }; [Exposed=Window] diff --git a/tests/wpt/tests/interfaces/html.idl b/tests/wpt/tests/interfaces/html.idl index e9598a1bbb6..aad8994b87d 100644 --- a/tests/wpt/tests/interfaces/html.idl +++ b/tests/wpt/tests/interfaces/html.idl @@ -2328,6 +2328,10 @@ enum DOMParserSupportedType { "image/svg+xml" }; +partial interface Range { + [CEReactions, NewObject] DocumentFragment createContextualFragment(HTMLString string); +}; + [Exposed=Window] interface Navigator { // objects implementing this interface also implement the interfaces given below diff --git a/tests/wpt/tests/interfaces/webcodecs.idl b/tests/wpt/tests/interfaces/webcodecs.idl index 19964c51e45..c754b2b036c 100644 --- a/tests/wpt/tests/interfaces/webcodecs.idl +++ b/tests/wpt/tests/interfaces/webcodecs.idl @@ -382,6 +382,8 @@ dictionary VideoFrameMetadata { dictionary VideoFrameCopyToOptions { DOMRectInit rect; sequence<PlaneLayout> layout; + VideoPixelFormat format; + PredefinedColorSpace colorSpace; }; dictionary PlaneLayout { diff --git a/tests/wpt/tests/interfaces/webgl1.idl b/tests/wpt/tests/interfaces/webgl1.idl index 1b711e1a4ce..655c294fc1e 100644 --- a/tests/wpt/tests/interfaces/webgl1.idl +++ b/tests/wpt/tests/interfaces/webgl1.idl @@ -37,6 +37,7 @@ dictionary WebGLContextAttributes { [Exposed=(Window,Worker)] interface WebGLObject { + attribute USVString label; }; [Exposed=(Window,Worker)] diff --git a/tests/wpt/tests/interfaces/webnn.idl b/tests/wpt/tests/interfaces/webnn.idl index 9beb8858d10..9af2879214e 100644 --- a/tests/wpt/tests/interfaces/webnn.idl +++ b/tests/wpt/tests/interfaces/webnn.idl @@ -515,17 +515,13 @@ partial interface MLGraphBuilder { }; partial interface MLGraphBuilder { - MLOperand softmax(MLOperand input); - MLActivation softmax(); -}; - -dictionary MLSoftplusOptions { - float steepness = 1; + MLOperand softmax(MLOperand input, unsigned long axis); + MLActivation softmax(unsigned long axis); }; partial interface MLGraphBuilder { - MLOperand softplus(MLOperand input, optional MLSoftplusOptions options = {}); - MLActivation softplus(optional MLSoftplusOptions options = {}); + MLOperand softplus(MLOperand input); + MLActivation softplus(); }; partial interface MLGraphBuilder { diff --git a/tests/wpt/tests/mediacapture-record/MediaRecorder-canvas-media-source.https.html b/tests/wpt/tests/mediacapture-record/MediaRecorder-canvas-media-source.https.html index e640714d5cf..0680c218795 100644 --- a/tests/wpt/tests/mediacapture-record/MediaRecorder-canvas-media-source.https.html +++ b/tests/wpt/tests/mediacapture-record/MediaRecorder-canvas-media-source.https.html @@ -9,6 +9,8 @@ <meta name=variant content="?mimeType=video/webm;codecs=vp9,opus"> <meta name=variant content="?mimeType=video/webm;codecs=av1,opus"> <meta name=variant content="?mimeType=video/mp4;codecs=avc1,mp4a.40.2"> + <meta name=variant content="?mimeType=video/mp4;codecs=vp9,opus"> + <meta name=variant content="?mimeType=video/mp4"> <link rel="help" href="https://w3c.github.io/mediacapture-record/MediaRecorder.html#dom-mediarecorder-mimeType"> <script src="/resources/testharness.js"></script> @@ -84,9 +86,9 @@ async_test(test => { const params = new URLSearchParams(window.location.search); const mimeType = params.get('mimeType'); - if (mimeType) { - assert_implements_optional(MediaRecorder.isTypeSupported(mimeType), - `"${mimeType}" for MediaRecorder is not supported`); + if (mimeType && !MediaRecorder.isTypeSupported(mimeType)) { + test.done(); + return; } const canvas = document.querySelector("canvas"); diff --git a/tests/wpt/tests/mediacapture-record/MediaRecorder-events-and-exceptions.html b/tests/wpt/tests/mediacapture-record/MediaRecorder-events-and-exceptions.html index 409e46c91da..97ada212663 100644 --- a/tests/wpt/tests/mediacapture-record/MediaRecorder-events-and-exceptions.html +++ b/tests/wpt/tests/mediacapture-record/MediaRecorder-events-and-exceptions.html @@ -8,6 +8,8 @@ <meta name=variant content="?mimeType=video/webm;codecs=vp9,opus"> <meta name=variant content="?mimeType=video/webm;codecs=av1,opus"> <meta name=variant content="?mimeType=video/mp4;codecs=avc1,mp4a.40.2"> + <meta name=variant content="?mimeType=video/mp4;codecs=vp9,opus"> + <meta name=variant content="?mimeType=video/mp4"> <link rel="help" href="https://w3c.github.io/mediacapture-record/MediaRecorder.html#mediarecorder"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> @@ -81,9 +83,9 @@ const params = new URLSearchParams(window.location.search); const mimeType = params.get('mimeType'); - if (mimeType) { - assert_implements_optional(MediaRecorder.isTypeSupported(mimeType), - `"${mimeType}" for MediaRecorder is not supported`); + if (mimeType && !MediaRecorder.isTypeSupported(mimeType)) { + test.done(); + return; } const recorder = new MediaRecorder(new MediaStream(), { mimeType }); diff --git a/tests/wpt/tests/mediacapture-record/MediaRecorder-mimetype.html b/tests/wpt/tests/mediacapture-record/MediaRecorder-mimetype.html index 74248d65f46..57baa1346f1 100644 --- a/tests/wpt/tests/mediacapture-record/MediaRecorder-mimetype.html +++ b/tests/wpt/tests/mediacapture-record/MediaRecorder-mimetype.html @@ -21,6 +21,7 @@ const AUDIO_CODECS_MIME_TYPES = [ 'audio/webm; codecs="vorbis"', 'audio/webm; codecs="opus"', 'audio/mp4: codecs="mp4a.40.2"', + 'audio/mp4: codecs="opus"', ]; const VIDEO_ONLY_MIME_TYPES = [ @@ -33,6 +34,7 @@ const VIDEO_CODECS_MIME_TYPES = [ 'video/webm; codecs="vp9"', 'video/webm; codecs="av1"', 'video/mp4: codecs="avc1"', + 'video/mp4: codecs="vp9"', ]; const AUDIO_VIDEO_MIME_TYPES = [ @@ -42,6 +44,7 @@ const AUDIO_VIDEO_MIME_TYPES = [ 'video/webm; codecs="vp9, opus"', 'video/webm; codecs="av1, opus"', 'video/mp4: codecs="avc1, mp4a.40.2"', + 'video/mp4; codecs="vp9, opus"', ]; const AUDIO_MIME_TYPES = [ diff --git a/tests/wpt/tests/mediacapture-record/MediaRecorder-pause-resume.html b/tests/wpt/tests/mediacapture-record/MediaRecorder-pause-resume.html index 8dc231279a0..f584508a0d0 100644 --- a/tests/wpt/tests/mediacapture-record/MediaRecorder-pause-resume.html +++ b/tests/wpt/tests/mediacapture-record/MediaRecorder-pause-resume.html @@ -8,6 +8,10 @@ <meta name=variant content="?mimeType=video/webm;codecs=vp9,opus"> <meta name=variant content="?mimeType=video/webm;codecs=av1,opus"> <meta name=variant content="?mimeType=video/mp4;codecs=avc1,mp4a.40.2"> + <meta name=variant content="?mimeType=video/mp4;codecs=avc1,opus"> + <meta name=variant content="?mimeType=video/mp4;codecs=vp9,opus"> + <meta name=variant content="?mimeType=video/mp4;codecs=vp9,mp4a.40.2"> + <meta name=variant content="?mimeType=video/mp4"> <link rel="help" href="https://w3c.github.io/mediacapture-record/MediaRecorder.html#mediarecorder"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> diff --git a/tests/wpt/tests/mediacapture-record/MediaRecorder-peerconnection.https.html b/tests/wpt/tests/mediacapture-record/MediaRecorder-peerconnection.https.html index 3fbc1f0f2d2..daae044fa8d 100644 --- a/tests/wpt/tests/mediacapture-record/MediaRecorder-peerconnection.https.html +++ b/tests/wpt/tests/mediacapture-record/MediaRecorder-peerconnection.https.html @@ -4,6 +4,20 @@ <head> <title>MediaRecorder peer connection</title> + <meta name=variant content="?kinds=video&mimeType=''"> + <meta name=variant content="?kinds=audio&mimeType=''"> + <meta name=variant content="?kinds=video,audio&mimeType=''"> + <meta name=variant content="?kinds=audio&mimeType=audio/webm;codecs=opus"> + <meta name=variant content="?kinds=video&mimeType=video/webm;codecs=vp8"> + <meta name=variant content="?kinds=video,audio&mimeType=video/webm;codecs=vp8,opus"> + <meta name=variant content="?kinds=video&mimeType=video/webm;codecs=vp9"> + <meta name=variant content="?kinds=video,audio&mimeType=video/webm;codecs=vp9,opus"> + <meta name=variant content="?kinds=video,audio&mimeType=video/mp4;codecs=avc1,mp4a.40.2"> + <meta name=variant content="?kinds=video&mimeType=video/mp4;codecs=vp9"> + <meta name=variant content="?kinds=audio&mimeType=audio/mp4;codecs=opus"> + <meta name=variant content="?kinds=video,audio&mimeType=video/mp4;codecs=vp9,opus"> + <meta name=variant content="?kinds=video,audio&mimeType=video/mp4"> + <link rel="help" href="https://w3c.github.io/mediacapture-record/MediaRecorder.html#dom-mediarecorder-mimeType"> <script src="/resources/testharness.js"></script> @@ -15,74 +29,83 @@ </head> <body> - <video id="remote" autoplay width="240"></video> - <script> +<video id="remote" autoplay width="240"></video> + +<script> + const params = new URLSearchParams(window.location.search); + const mimeType = params.get('mimeType'); + const kinds = params.get('kinds'); + const tag = `kinds "${kinds} "mimeType "${mimeType}"`; + let stream; + let pc; -promise_setup(async () => { - const t = {add_cleanup: add_completion_callback}; - const [, pc, stream] = await startConnection(t, true, true); - const [audio] = stream.getAudioTracks(); - const [video] = stream.getVideoTracks(); + promise_setup(async () => { + const t = {add_cleanup: add_completion_callback}; + const [, connection_pc, connection_stream] = await startConnection(t, true, true); + pc = connection_pc; + + let video = null; + if (kinds.indexOf('video') != -1) { + video = connection_stream.getVideoTracks()[0]; + } - // Needed for the tests to get exercised in Chrome (bug) - document.getElementById('remote').srcObject = stream; + let audio = null; + if (kinds.indexOf('audio') != -1) { + audio = connection_stream.getAudioTracks()[0]; + } - for (const {kinds, mimeType} of [ - { kinds: { video }, mimeType: "" }, - { kinds: { audio }, mimeType: "" }, - { kinds: { video, audio }, mimeType: "" }, - { kinds: { audio }, mimeType: "audio/webm;codecs=opus" }, - { kinds: { video }, mimeType: "video/webm;codecs=vp8" }, - { kinds: { video, audio }, mimeType: "video/webm;codecs=vp8,opus" }, - { kinds: { video }, mimeType: "video/webm;codecs=vp9" }, - { kinds: { video, audio }, mimeType: "video/webm;codecs=vp9,opus" }, - { kinds: { audio }, mimeType: "audio/mp4;codecs=mp4a.40.2" }, - { kinds: { video, audio }, mimeType: "video/mp4;codecs=avc1,mp4a.40.2" } - ]) { - const tag = `${JSON.stringify(kinds)} mimeType "${mimeType}"`; - const stream = new MediaStream([kinds.audio, kinds.video].filter(n => n)); + // Needed for the tests to get exercised in Chrome (bug) + document.getElementById('remote').srcObject = connection_stream; + stream = new MediaStream([audio, video].filter(n => n)); + }); + promise_test(async t => { // Spec doesn't mandate codecs, so if not supported, test failure instead. if (mimeType && !MediaRecorder.isTypeSupported(mimeType)) { promise_test(async t => { assert_throws_dom('NotSupportedError', () => new MediaRecorder(stream, { mimeType })); - }, `MediaRecorder constructor throws on no support, ${tag}`); - continue; + }, `MediaRecorder constructor throws on no support 1, ${tag}`); + return; } - promise_test(async t => { - const recorder = new MediaRecorder(stream, { mimeType }); - recorder.start(200); - await new Promise(r => recorder.onstart = r); - let combinedSize = 0; - // Wait for a small amount of data to appear. Kept small for mobile tests - while (combinedSize < 2000) { - const {data} = await new Promise(r => recorder.ondataavailable = r); - combinedSize += data.size; - } - recorder.stop(); - }, `PeerConnection MediaRecorder receives data after onstart, ${tag}`); + const recorder = new MediaRecorder(stream, { mimeType }); + recorder.start(200); + await new Promise(r => recorder.onstart = r); + let combinedSize = 0; + // Wait for a small amount of data to appear. Kept small for mobile tests + while (combinedSize < 2000) { + const {data} = await new Promise(r => recorder.ondataavailable = r); + combinedSize += data.size; + } + recorder.stop(); + }, `PeerConnection MediaRecorder receives data after onstart, ${tag}`); - promise_test(async t => { - const clone = stream.clone(); - const recorder = new MediaRecorder(clone, { mimeType }); - recorder.start(); - await new Promise(r => recorder.onstart = r); - await waitForReceivedFramesOrPackets(t, pc, kinds.audio, kinds.video, 10); - for (const track of clone.getTracks()) { - track.stop(); - } - // As the tracks ended, expect data from the recorder. - await Promise.all([ - new Promise(r => recorder.onstop = r), - new Promise(r => recorder.ondataavailable = r) - ]); - }, `PeerConnection MediaRecorder gets ondata on stopping tracks, ${tag}`); - } -}); + promise_test(async t => { + // Spec doesn't mandate codecs, so if not supported, test failure instead. + if (mimeType && !MediaRecorder.isTypeSupported(mimeType)) { + promise_test(async t => { + assert_throws_dom('NotSupportedError', + () => new MediaRecorder(stream, { mimeType })); + }, `MediaRecorder constructor throws on no support 2, ${tag}`); + return; + } + + const clone = stream.clone(); + const recorder = new MediaRecorder(clone, { mimeType }); + recorder.start(); + await new Promise(r => recorder.onstart = r); + await waitForReceivedFramesOrPackets(t, pc, kinds.audio, kinds.video, 10); + for (const track of clone.getTracks()) { + track.stop(); + } + // As the tracks ended, expect data from the recorder. + await Promise.all([ + new Promise(r => recorder.onstop = r), + new Promise(r => recorder.ondataavailable = r) + ]); + }, `PeerConnection MediaRecorder gets ondata on stopping tracks, ${tag}`); </script> </body> - </html> diff --git a/tests/wpt/tests/mediacapture-record/MediaRecorder-stop.html b/tests/wpt/tests/mediacapture-record/MediaRecorder-stop.html index d6ce3707720..9ef50516381 100644 --- a/tests/wpt/tests/mediacapture-record/MediaRecorder-stop.html +++ b/tests/wpt/tests/mediacapture-record/MediaRecorder-stop.html @@ -7,6 +7,8 @@ <meta name=variant content="?mimeType=video/webm;codecs=vp9,opus"> <meta name=variant content="?mimeType=video/webm;codecs=av1,opus"> <meta name=variant content="?mimeType=video/mp4;codecs=avc1,mp4a.40.2"> + <meta name=variant content="?mimeType=video/mp4;codecs=vp9,opus"> + <meta name=variant content="?mimeType=video/mp4"> <link rel="help" href="https://w3c.github.io/mediacapture-record/MediaRecorder.html#mediarecorder"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> @@ -38,18 +40,21 @@ return true; } - function doneWithUnsupportedType(mimeType) { - if (mimeType) { - assert_implements_optional(MediaRecorder.isTypeSupported(mimeType), - `"${mimeType}" for MediaRecorder is not supported`); + function isMimetypeSupported(mimeType, t) { + if (mimeType && !MediaRecorder.isTypeSupported(mimeType)) { + t.done(); + return false; } + return true; } const params = new URLSearchParams(window.location.search); const mimeType = params.get('mimeType'); const tag = `mimeType "${mimeType}"`; promise_test(async t => { - doneWithUnsupportedType(mimeType); + if (!isMimetypeSupported(mimeType, t)) { + return; + } const {stream: video} = createVideoStream(t); const recorder = new MediaRecorder(video, {mimeType}); @@ -73,7 +78,9 @@ }, "MediaRecorder will stop recording and fire a stop event when all tracks are ended"); promise_test(async t => { - doneWithUnsupportedType(mimeType); + if (!isMimetypeSupported(mimeType, t)) { + return; + } const {stream: video} = createVideoStream(t); const recorder = new MediaRecorder(video, {mimeType}); @@ -96,7 +103,9 @@ }, "MediaRecorder will stop recording and fire a stop event when stop() is called"); promise_test(async t => { - doneWithUnsupportedType(mimeType); + if (!isMimetypeSupported(mimeType, t)) { + return; + } const recorder = new MediaRecorder(createVideoStream(t).stream, {mimeType}); recorder.stop(); @@ -107,7 +116,9 @@ }, "MediaRecorder will not fire an exception when stopped after creation"); promise_test(async t => { - doneWithUnsupportedType(mimeType); + if (!isMimetypeSupported(mimeType, t)) { + return; + } const recorder = new MediaRecorder(createVideoStream(t).stream, {mimeType}); recorder.start(); @@ -121,7 +132,9 @@ }, "MediaRecorder will not fire an exception when stopped after having just been stopped"); promise_test(async t => { - doneWithUnsupportedType(mimeType); + if (!isMimetypeSupported(mimeType, t)) { + return; + } const {stream} = createVideoStream(t); const recorder = new MediaRecorder(stream, {mimeType}); @@ -136,7 +149,9 @@ }, "MediaRecorder will not fire an exception when stopped after having just been spontaneously stopped"); promise_test(async t => { - doneWithUnsupportedType(mimeType); + if (!isMimetypeSupported(mimeType, t)) { + return; + } const {stream} = createAudioVideoStream(t); const recorder = new MediaRecorder(stream, {mimeType}); @@ -155,7 +170,9 @@ }, "MediaRecorder will fire start event even if stopped synchronously"); promise_test(async t => { - doneWithUnsupportedType(mimeType); + if (!isMimetypeSupported(mimeType, t)) { + return; + } const {stream} = createAudioVideoStream(t); const recorder = new MediaRecorder(stream, {mimeType}); @@ -178,7 +195,9 @@ }, "MediaRecorder will fire start event even if a track is removed synchronously"); promise_test(async t => { - doneWithUnsupportedType(mimeType); + if (!isMimetypeSupported(mimeType, t)) { + return; + } const {stream} = createFlowingAudioVideoStream(t); const recorder = new MediaRecorder(stream, {mimeType}); diff --git a/tests/wpt/tests/orientation-event/WEB_FEATURES.yml b/tests/wpt/tests/orientation-event/WEB_FEATURES.yml new file mode 100644 index 00000000000..414dbe7478f --- /dev/null +++ b/tests/wpt/tests/orientation-event/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: device-orientation-events + files: "**" diff --git a/tests/wpt/tests/resources/chromium/mock-pressure-service.js b/tests/wpt/tests/resources/chromium/mock-pressure-service.js index bd0e32c5673..016c6d97e73 100644 --- a/tests/wpt/tests/resources/chromium/mock-pressure-service.js +++ b/tests/wpt/tests/resources/chromium/mock-pressure-service.js @@ -65,26 +65,20 @@ class MockPressureService { if (this.pressureServiceReadingTimerId_ != null) this.stopPlatformCollector(); - // The following code for calculating the timestamp was taken from - // https://source.chromium.org/chromium/chromium/src/+/main:third_party/ - // blink/web_tests/http/tests/resources/ - // geolocation-mock.js;l=131;drc=37a9b6c03b9bda9fcd62fc0e5e8016c278abd31f - - // The new Date().getTime() returns the number of milliseconds since the - // UNIX epoch (1970-01-01 00::00:00 UTC), while |internalValue| of the - // device.mojom.PressureUpdate represents the value of microseconds since - // the Windows FILETIME epoch (1601-01-01 00:00:00 UTC). So add the delta - // when sets the |internalValue|. See more info in //base/time/time.h. - const windowsEpoch = Date.UTC(1601, 0, 1, 0, 0, 0, 0); - const unixEpoch = Date.UTC(1970, 0, 1, 0, 0, 0, 0); - // |epochDeltaInMs| equals to base::Time::kTimeTToMicrosecondsOffset. - const epochDeltaInMs = unixEpoch - windowsEpoch; - this.pressureServiceReadingTimerId_ = self.setInterval(() => { if (this.pressureUpdate_ === null || this.observers_.length === 0) return; + + // Because we cannot retrieve directly the timeOrigin internal in + // TimeTicks from Chromium, we need to create a timestamp that + // would help to test basic functionality. + // by multiplying performance.timeOrigin by 10 we make sure that the + // origin is higher than the internal time origin in TimeTicks. + // performance.now() allows us to have an increase matching the TimeTicks + // that would be read from the platform collector. this.pressureUpdate_.timestamp = { - internalValue: BigInt((new Date().getTime() + epochDeltaInMs) * 1000) + internalValue: + Math.round((performance.timeOrigin * 10) + performance.now()) * 1000 }; for (let observer of this.observers_) observer.onPressureUpdated(this.pressureUpdate_); diff --git a/tests/wpt/tests/scheduler/tentative/yield/yield-priority-posttask.any.js b/tests/wpt/tests/scheduler/tentative/yield/yield-priority-posttask.any.js index 0700094dcf3..5e40eba29b3 100644 --- a/tests/wpt/tests/scheduler/tentative/yield/yield-priority-posttask.any.js +++ b/tests/wpt/tests/scheduler/tentative/yield/yield-priority-posttask.any.js @@ -103,6 +103,15 @@ promise_test(async t => { }, 'yield() with postTask tasks (inherit signal)'); promise_test(async t => { + for (const config of signalConfigs) { + const {tasks, ids} = + postTestTasks(config.options, {}); + await Promise.all(tasks); + assert_equals(ids.join(), config.expected); + } +}, 'yield() with postTask tasks (inherit signal by default)'); + +promise_test(async t => { const expected = 'y0,ub1,ub2,uv1,uv2,y1,y2,y3,bg1,bg2'; const {tasks, ids} = postTestTasks( {priority: 'user-blocking'}, {priority: 'background'}); @@ -171,10 +180,10 @@ promise_test(async t => { subtasks.push(scheduler.postTask(() => { ids.push('ub1'); }, {priority: 'user-blocking'})); subtasks.push(scheduler.postTask(() => { ids.push('uv1'); })); - // Ignore inherited signal (user-visible continuations). - await scheduler.yield(); + // Ignore inherited signal. + await scheduler.yield({priority: 'user-visible'}); ids.push('y1'); - await scheduler.yield(); + await scheduler.yield({priority: 'user-visible'}); ids.push('y2'); subtasks.push(scheduler.postTask(() => { ids.push('ub2'); }, {priority: 'user-blocking'})); diff --git a/tests/wpt/tests/service-workers/service-worker/resources/range-request-with-synth-head-worker.js b/tests/wpt/tests/service-workers/service-worker/resources/range-request-with-synth-head-worker.js index 6025d91b1a2..6b6395aecae 100644 --- a/tests/wpt/tests/service-workers/service-worker/resources/range-request-with-synth-head-worker.js +++ b/tests/wpt/tests/service-workers/service-worker/resources/range-request-with-synth-head-worker.js @@ -24,7 +24,7 @@ self.addEventListener('fetch', e => { headers: { "Accept-Ranges": "bytes", "Content-Type": "video/webm", - "Content-Range": "bytes 0-1/44447", + "Content-Range": "bytes 0-1/*", "Content-Length": "2", }, }; diff --git a/tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/router-rules.js b/tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/router-rules.js index dd7b3f55020..fdc1c9e0637 100644 --- a/tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/router-rules.js +++ b/tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/router-rules.js @@ -1,5 +1,7 @@ const TEST_CACHE_NAME = 'v1'; -const MAX_CONDITION_DEPTH = 10; +// The value is coming from: +// https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/public/common/service_worker/service_worker_router_rule.h;l=28;drc=6f3f85b321146cfc0f9eb81a74c7c2257821461e +const CONDITION_MAX_RECURSION_DEPTH = 10; const routerRules = { 'condition-urlpattern-constructed-source-network': [{ @@ -59,27 +61,26 @@ const routerRules = { source: 'network' }], 'condition-invalid-or-condition-depth': (() => { - const addOrCondition = (obj, depth) => { - if (depth > MAX_CONDITION_DEPTH) { - return obj; + const addOrCondition = (depth) => { + if (depth > CONDITION_MAX_RECURSION_DEPTH) { + return {urlPattern: '/foo'}; } return { - urlPattern: `/foo-${depth}`, - or: [addOrCondition(obj, depth + 1)] + or: [addOrCondition(depth + 1)] }; }; - return {condition: addOrCondition({}, 0), source: 'network'}; + return {condition: addOrCondition(1), source: 'network'}; })(), 'condition-invalid-not-condition-depth': (() => { const generateNotCondition = (depth) => { - if (depth > MAX_CONDITION_DEPTH) { + if (depth > CONDITION_MAX_RECURSION_DEPTH) { return { urlPattern: '/**/example.txt', }; } return {not: generateNotCondition(depth + 1)}; }; - return {condition: generateNotCondition(0), source: 'network'}; + return {condition: generateNotCondition(1), source: 'network'}; })(), 'condition-invalid-router-size': [...Array(512)].map((val, i) => { return { diff --git a/tests/wpt/tests/svg/layout/svg-embed-intrinsic-size-min-size.html b/tests/wpt/tests/svg/layout/svg-embed-intrinsic-size-min-size.html new file mode 100644 index 00000000000..79dfb07b42b --- /dev/null +++ b/tests/wpt/tests/svg/layout/svg-embed-intrinsic-size-min-size.html @@ -0,0 +1,16 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez"> +<link rel="author" href="https://mozilla.org" title="Mozilla"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1894363"> +<link rel="match" href="svg-intrinsic-size-min-size-ref.html"> +<style> + embed { + width: auto; + height: auto; + vertical-align: top; + } +</style> +<div style="width: min-content; background-color: green"> + <embed src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='56' height='56' viewBox='0 0 56 56'></svg>"> +</div> diff --git a/tests/wpt/tests/svg/layout/svg-intrinsic-size-min-size-ref.html b/tests/wpt/tests/svg/layout/svg-intrinsic-size-min-size-ref.html new file mode 100644 index 00000000000..f9ae2910d86 --- /dev/null +++ b/tests/wpt/tests/svg/layout/svg-intrinsic-size-min-size-ref.html @@ -0,0 +1,3 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<div style="width: 56px; height: 56px; background-color: green"></div> diff --git a/tests/wpt/tests/svg/layout/svg-intrinsic-size-min-size.html b/tests/wpt/tests/svg/layout/svg-intrinsic-size-min-size.html new file mode 100644 index 00000000000..41c68e56e1e --- /dev/null +++ b/tests/wpt/tests/svg/layout/svg-intrinsic-size-min-size.html @@ -0,0 +1,16 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez"> +<link rel="author" href="https://mozilla.org" title="Mozilla"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1894363"> +<link rel="match" href="svg-intrinsic-size-min-size-ref.html"> +<style> + svg { + width: auto; + height: auto; + vertical-align: top; + } +</style> +<div style="width: min-content; background-color: green"> + <svg width="56" height="56" viewBox="0 0 56 56"></svg> +</div> diff --git a/tests/wpt/tests/tools/ci/jobs.py b/tests/wpt/tests/tools/ci/jobs.py index 44de9fe1ad0..fe8eaae069e 100644 --- a/tests/wpt/tests/tools/ci/jobs.py +++ b/tests/wpt/tests/tools/ci/jobs.py @@ -23,7 +23,7 @@ EXCLUDES = [ ] # Rules are just regex on the path, with a leading ! indicating a regex that must not -# match for the job. Paths should be kept in sync with update-built-tests.sh. +# match for the job. Paths should be kept in sync with scripts in update_built.py. job_path_map = { "affected_tests": [".*/.*", "!resources/(?!idlharness.js)"] + EXCLUDES, "stability": [".*/.*", "!resources/.*"] + EXCLUDES, @@ -32,10 +32,11 @@ job_path_map = { "resources_unittest": ["resources/", "tools/"], "tools_unittest": ["tools/"], "wptrunner_unittest": ["tools/"], - "update_built": ["update-built-tests\\.sh", - "conformance-checkers/", + "update_built": ["conformance-checkers/", + "css/css-images/", "css/css-ui/", "css/css-writing-modes/", + "fetch/metadata/", "html/", "infrastructure/", "mimesniff/"], diff --git a/tests/wpt/tests/tools/ci/tc/tasks/test.yml b/tests/wpt/tests/tools/ci/tc/tasks/test.yml index 86d8a965ff3..a9ca07c6ceb 100644 --- a/tests/wpt/tests/tools/ci/tc/tasks/test.yml +++ b/tests/wpt/tests/tools/ci/tc/tasks/test.yml @@ -125,15 +125,14 @@ components: - python3.8-dev - python3.8-venv - tox-python3_11: + tox-python3_12: env: - TOXENV: py311 + TOXENV: py312 PY_COLORS: "0" install: - - python3.11 - - python3.11-distutils - - python3.11-dev - - python3.11-venv + - python3.12 + - python3.12-dev + - python3.12-venv tests-affected: options: browser: @@ -452,13 +451,13 @@ tasks: run-job: - tools_unittest - - tools/ unittests (Python 3.11): + - tools/ unittests (Python 3.12): description: >- - Unit tests for tools running under Python 3.11, excluding wptrunner + Unit tests for tools running under Python 3.12, excluding wptrunner use: - wpt-base - trigger-pr - - tox-python3_11 + - tox-python3_12 command: ./tools/ci/ci_tools_unittest.sh env: HYPOTHESIS_PROFILE: ci @@ -488,13 +487,13 @@ tasks: run-job: - wpt_integration - - tools/ integration tests (Python 3.11): + - tools/ integration tests (Python 3.12): description: >- - Integration tests for tools running under Python 3.11 + Integration tests for tools running under Python 3.12 use: - wpt-base - trigger-pr - - tox-python3_11 + - tox-python3_12 command: ./tools/ci/ci_tools_integration_test.sh install: - libnss3-tools @@ -529,13 +528,13 @@ tasks: run-job: - resources_unittest - - resources/ tests (Python 3.11): + - resources/ tests (Python 3.12): description: >- - Tests for testharness.js and other files in resources/ under Python 3.11 + Tests for testharness.js and other files in resources/ under Python 3.12 use: - wpt-base - trigger-pr - - tox-python3_11 + - tox-python3_12 command: ./tools/ci/ci_resources_unittest.sh install: - libnss3-tools diff --git a/tests/wpt/tests/tools/ci/tc/tests/test_valid.py b/tests/wpt/tests/tools/ci/tc/tests/test_valid.py index fc67d67eb8d..dd8d7326542 100644 --- a/tests/wpt/tests/tools/ci/tc/tests/test_valid.py +++ b/tests/wpt/tests/tools/ci/tc/tests/test_valid.py @@ -203,11 +203,11 @@ def test_verify_payload(): ("pr_event.json", True, {".taskcluster.yml", ".travis.yml", "tools/ci/start.sh"}, ['lint', 'tools/ unittests (Python 3.8)', - 'tools/ unittests (Python 3.11)', + 'tools/ unittests (Python 3.12)', 'tools/ integration tests (Python 3.8)', - 'tools/ integration tests (Python 3.11)', + 'tools/ integration tests (Python 3.12)', 'resources/ tests (Python 3.8)', - 'resources/ tests (Python 3.11)', + 'resources/ tests (Python 3.12)', 'download-firefox-nightly', 'infrastructure/ tests', 'sink-task']), @@ -225,7 +225,7 @@ def test_verify_payload(): ("pr_event_tests_affected.json", True, {"resources/testharness.js"}, ['lint', 'resources/ tests (Python 3.8)', - 'resources/ tests (Python 3.11)', + 'resources/ tests (Python 3.12)', 'download-firefox-nightly', 'infrastructure/ tests', 'sink-task']), diff --git a/tests/wpt/tests/tools/ci/update_built.py b/tests/wpt/tests/tools/ci/update_built.py index 8e0f18589de..929b09f9fe4 100644 --- a/tests/wpt/tests/tools/ci/update_built.py +++ b/tests/wpt/tests/tools/ci/update_built.py @@ -9,6 +9,7 @@ logger = logging.getLogger() wpt_root = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir)) +# These paths should be kept in sync with job_path_map in jobs.py. scripts = { "canvas": ["html/canvas/tools/gentest.py"], "conformance-checkers": ["conformance-checkers/tools/dl.py", diff --git a/tests/wpt/tests/tools/manifest/requirements.txt b/tests/wpt/tests/tools/manifest/requirements.txt index d7c173723ed..70ad0df0e95 100644 --- a/tests/wpt/tests/tools/manifest/requirements.txt +++ b/tests/wpt/tests/tools/manifest/requirements.txt @@ -1 +1 @@ -zstandard==0.21.0 +zstandard==0.22.0 diff --git a/tests/wpt/tests/tools/pytest.ini b/tests/wpt/tests/tools/pytest.ini index 81666e01db9..650d07caf3a 100644 --- a/tests/wpt/tests/tools/pytest.ini +++ b/tests/wpt/tests/tools/pytest.ini @@ -15,7 +15,7 @@ filterwarnings = # ignore mozinfo deprecation warnings ignore:distutils Version classes are deprecated\. Use packaging\.version instead\.:DeprecationWarning:mozinfo # ingore mozinfo's dependency on distro - ignore:distro\.linux_distribution\(\) is deprecated\. It should only be used as a compatibility shim with Python's platform\.linux_distribution\(\)\. Please use distro\.id\(\), distro\.version\(\) and distro\.name\(\) instead\.:DeprecationWarning + ignore:distro\.linux_distribution\(\) is deprecated\. It should only be used as a compatibility shim with Python\'s platform\.linux_distribution\(\)\. Please use distro\.id\(\), distro\.version\(\) and distro\.name\(\) instead\.:DeprecationWarning # ignore mozversion deprecation warnings ignore:This method will be removed in .*\.\s+Use 'parser\.read_file\(\)' instead\.:DeprecationWarning:mozversion # ignore mozversion not cleanly closing .ini files @@ -32,3 +32,8 @@ filterwarnings = always:the imp module is deprecated in favour of importlib:DeprecationWarning # https://github.com/web-platform-tests/wpt/issues/39827 always:pkg_resources is deprecated as an API:DeprecationWarning + # taskcluster and jsone use datetime.utcnow() + ignore:datetime\.datetime\.utcnow\(\) is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC:DeprecationWarning:jsone + ignore:datetime\.datetime\.utcnow\(\) is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC:DeprecationWarning:taskcluster + # mozfile not yet updated to pass a filter argument to tarfile.extract + ignore:Python 3\.14 will, by default, filter extracted tar archives and reject files or modify their metadata\. Use the filter argument to control this behavior\.:DeprecationWarning diff --git a/tests/wpt/tests/tools/requirements_tests.txt b/tests/wpt/tests/tools/requirements_tests.txt index 2613def3da4..24785f35313 100644 --- a/tests/wpt/tests/tools/requirements_tests.txt +++ b/tests/wpt/tests/tools/requirements_tests.txt @@ -1,5 +1,5 @@ httpx[http2]==0.27.0 -json-e==4.5.3 +json-e==4.7.0 jsonschema==4.17.3 pyyaml==6.0.1 taskcluster==64.2.7 diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/websocket_server.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/websocket_server.py index e7485ecbef0..dab2f079fff 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/websocket_server.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/websocket_server.py @@ -157,12 +157,13 @@ class WebSocketServer(socketserver.ThreadingMixIn, BaseHTTPServer.HTTPServer): client_cert_ = ssl.CERT_REQUIRED else: client_cert_ = ssl.CERT_NONE - socket_ = ssl.wrap_socket( - socket_, - keyfile=server_options.private_key, - certfile=server_options.certificate, - ca_certs=server_options.tls_client_ca, - cert_reqs=client_cert_) + ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) + ssl_context.verify_mode = client_cert_ + ssl_context.load_cert_chain(keyfile=server_options.private_key, + certfile=server_options.certificate) + if client_cert_ != ssl.CERT_NONE: + ssl_context.load_verify_locations(cafile=server_options.tls_client_ca) + socket_ = ssl_context.wrap_socket(socket_, server_side=True) self._sockets.append((socket_, addrinfo)) def server_bind(self): diff --git a/tests/wpt/tests/tools/third_party_modified/mozlog/mozlog/formatters/html/html.py b/tests/wpt/tests/tools/third_party_modified/mozlog/mozlog/formatters/html/html.py index 040de1ae538..87fa4a638a7 100644 --- a/tests/wpt/tests/tools/third_party_modified/mozlog/mozlog/formatters/html/html.py +++ b/tests/wpt/tests/tools/third_party_modified/mozlog/mozlog/formatters/html/html.py @@ -6,7 +6,7 @@ import base64 import json import os from collections import defaultdict -from datetime import datetime +from datetime import datetime, timezone from .. import base @@ -242,7 +242,7 @@ class HTMLFormatter(base.BaseFormatter): ) def generate_html(self): - generated = datetime.utcnow() + generated = datetime.now(timezone.utc) with open(os.path.join(base_path, "main.js")) as main_f: doc = html.html( self.head, diff --git a/tests/wpt/tests/tools/tox.ini b/tests/wpt/tests/tools/tox.ini index a4ed2cb05e5..61442932f35 100644 --- a/tests/wpt/tests/tools/tox.ini +++ b/tests/wpt/tests/tools/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38,py39,py310,py311,{py38,py39,py310,py311}-{flake8,mypy} +envlist = py38,py39,py310,py311,py312,{py38,py39,py310,py311,py312}-{flake8,mypy} skipsdist=True skip_missing_interpreters=False diff --git a/tests/wpt/tests/tools/wave/tox.ini b/tests/wpt/tests/tools/wave/tox.ini index 28cecdebb5a..88c76096f45 100644 --- a/tests/wpt/tests/tools/wave/tox.ini +++ b/tests/wpt/tests/tools/wave/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38,py39,py310,py311 +envlist = py38,py39,py310,py311,py312 skipsdist=True skip_missing_interpreters = False diff --git a/tests/wpt/tests/tools/wpt/browser.py b/tests/wpt/tests/tools/wpt/browser.py index a228cfa888e..4c42ffa4e82 100644 --- a/tests/wpt/tests/tools/wpt/browser.py +++ b/tests/wpt/tests/tools/wpt/browser.py @@ -1452,7 +1452,7 @@ class ChromeAndroidBase(Browser): if browser_binary is None: browser_binary = self.find_binary(channel) chrome = Chrome(self.logger) - return chrome.install_webdriver_by_version(self.version(browser_binary), dest) + return chrome.install_webdriver_by_version(self.version(browser_binary), dest, channel) def version(self, binary=None, webdriver_binary=None): if not binary: @@ -1642,10 +1642,10 @@ class Opera(Browser): return m.group(0) -class EdgeChromium(Browser): +class Edge(Browser): """Microsoft Edge Chromium Browser class.""" - product = "edgechromium" + product = "edge" requirements = "requirements_chromium.txt" platform = { "Linux": "linux", diff --git a/tests/wpt/tests/tools/wpt/install.py b/tests/wpt/tests/tools/wpt/install.py index fd1653772b0..1e6408b0be6 100644 --- a/tests/wpt/tests/tools/wpt/install.py +++ b/tests/wpt/tests/tools/wpt/install.py @@ -10,7 +10,7 @@ latest_channels = { 'chrome': 'canary', 'chrome_android': 'dev', 'chromium': 'nightly', - 'edgechromium': 'dev', + 'edge': 'dev', 'safari': 'preview', 'servo': 'nightly', 'webkitgtk_minibrowser': 'nightly', diff --git a/tests/wpt/tests/tools/wpt/run.py b/tests/wpt/tests/tools/wpt/run.py index 2277bb24439..2fb7f97f498 100644 --- a/tests/wpt/tests/tools/wpt/run.py +++ b/tests/wpt/tests/tools/wpt/run.py @@ -112,7 +112,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", "chrome_ios", - "content_shell", "edgechromium", "firefox", "firefox_android", + "content_shell", "edge", "firefox", "firefox_android", "ladybird", "servo", "wktr"): config_builder = serve.build_config(os.path.join(wpt_root, "config.json")) # Override the ports to avoid looking for free ports @@ -651,9 +651,9 @@ class Opera(BrowserSetup): raise WptrunError("Unable to locate or install operadriver binary") -class EdgeChromium(BrowserSetup): +class Edge(BrowserSetup): name = "MicrosoftEdge" - browser_cls = browser.EdgeChromium + browser_cls = browser.Edge experimental_channels: ClassVar[Tuple[str, ...]] = ("dev", "canary") def setup_kwargs(self, kwargs): @@ -868,7 +868,7 @@ product_setup = { "chrome_ios": ChromeiOS, "chromium": Chromium, "content_shell": ContentShell, - "edgechromium": EdgeChromium, + "edge": Edge, "safari": Safari, "servo": Servo, "servodriver": ServoWebDriver, @@ -911,6 +911,9 @@ def setup_wptrunner(venv, **kwargs): args_general(kwargs) if kwargs["product"] not in product_setup: + if kwargs["product"] == "edgechromium": + raise WptrunError("edgechromium has been renamed to edge.") + raise WptrunError("Unsupported product %s" % kwargs["product"]) setup_cls = product_setup[kwargs["product"]](venv, kwargs["prompt"]) diff --git a/tests/wpt/tests/tools/wpt/tests/test_browser.py b/tests/wpt/tests/tools/wpt/tests/test_browser.py index 95094e376db..3a45dab16e2 100644 --- a/tests/wpt/tests/tools/wpt/tests/test_browser.py +++ b/tests/wpt/tests/tools/wpt/tests/test_browser.py @@ -30,33 +30,33 @@ def test_all_browser_abc(): assert not inspect.isabstract(cls), "%s is abstract" % name -def test_edgechromium_webdriver_supports_browser(): +def test_edge_webdriver_supports_browser(): # MSEdgeDriver binary cannot be called. - edge = browser.EdgeChromium(logger) + edge = browser.Edge(logger) edge.webdriver_version = mock.MagicMock(return_value=None) assert not edge.webdriver_supports_browser('/usr/bin/edgedriver', '/usr/bin/edge', 'stable') # Browser binary cannot be called. - edge = browser.EdgeChromium(logger) + edge = browser.Edge(logger) edge.webdriver_version = mock.MagicMock(return_value='70.0.1') edge.version = mock.MagicMock(return_value=None) assert edge.webdriver_supports_browser('/usr/bin/edgedriver', '/usr/bin/edge', 'stable') # Browser version matches. - edge = browser.EdgeChromium(logger) + edge = browser.Edge(logger) # Versions should be an exact match to be compatible. edge.webdriver_version = mock.MagicMock(return_value='70.1.5') edge.version = mock.MagicMock(return_value='70.1.5') assert edge.webdriver_supports_browser('/usr/bin/edgedriver', '/usr/bin/edge', 'stable') # Browser version doesn't match. - edge = browser.EdgeChromium(logger) + edge = browser.Edge(logger) edge.webdriver_version = mock.MagicMock(return_value='70.0.1') edge.version = mock.MagicMock(return_value='69.0.1') assert not edge.webdriver_supports_browser('/usr/bin/edgedriver', '/usr/bin/edge', 'stable') # MSEdgeDriver version should match for MAJOR.MINOR.BUILD version. - edge = browser.EdgeChromium(logger) + edge = browser.Edge(logger) edge.webdriver_version = mock.MagicMock(return_value='70.0.1.0') edge.version = mock.MagicMock(return_value='70.0.1.1 dev') assert edge.webdriver_supports_browser('/usr/bin/edgedriver', '/usr/bin/edge', 'dev') @@ -68,8 +68,8 @@ def test_edgechromium_webdriver_supports_browser(): # logic to test there. @pytest.mark.skipif(sys.platform.startswith('win'), reason='just uses _get_fileversion on Windows') @mock.patch('tools.wpt.browser.call') -def test_edgechromium_webdriver_version(mocked_call): - edge = browser.EdgeChromium(logger) +def test_edge_webdriver_version(mocked_call): + edge = browser.Edge(logger) webdriver_binary = '/usr/bin/edgedriver' # Working cases. diff --git a/tests/wpt/tests/tools/wpt/tox.ini b/tests/wpt/tests/tools/wpt/tox.ini index 5bae81e9536..b6e3dab2317 100644 --- a/tests/wpt/tests/tools/wpt/tox.ini +++ b/tests/wpt/tests/tools/wpt/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38,py39,py310,py311 +envlist = py38,py39,py310,py311,py312 skipsdist=True skip_missing_interpreters = False diff --git a/tests/wpt/tests/tools/wpt/utils.py b/tests/wpt/tests/tools/wpt/utils.py index 5899dc3f3a9..51bb3f55dc9 100644 --- a/tests/wpt/tests/tools/wpt/utils.py +++ b/tests/wpt/tests/tools/wpt/utils.py @@ -46,8 +46,11 @@ def untar(fileobj, dest="."): """Extract tar archive.""" logger.debug("untar") fileobj = seekable(fileobj) + kwargs = {} + if sys.version_info.major >= 3 and sys.version_info.minor >= 12: + kwargs["filter"] = "tar" with tarfile.open(fileobj=fileobj) as tar_data: - tar_data.extractall(path=dest) + tar_data.extractall(path=dest, **kwargs) def unzip(fileobj, dest=None, limit=None): diff --git a/tests/wpt/tests/tools/wptrunner/docs/expectation.rst b/tests/wpt/tests/tools/wptrunner/docs/expectation.rst index fea676565ba..76f088dd8fb 100644 --- a/tests/wpt/tests/tools/wptrunner/docs/expectation.rst +++ b/tests/wpt/tests/tools/wptrunner/docs/expectation.rst @@ -153,7 +153,7 @@ When used for expectation data, metadata files have the following format: :implementation-status: One of the values ``implementing``, - ``not-implementing`` or ``default``. This is used in conjunction + ``not-implementing`` or ``backlog``. This is used in conjunction with the ``--skip-implementation-status`` command line argument to ``wptrunner`` to ignore certain features where running the test is low value. diff --git a/tests/wpt/tests/tools/wptrunner/requirements.txt b/tests/wpt/tests/tools/wptrunner/requirements.txt index cda06eba5d0..fba8e42ebe2 100644 --- a/tests/wpt/tests/tools/wptrunner/requirements.txt +++ b/tests/wpt/tests/tools/wptrunner/requirements.txt @@ -4,7 +4,7 @@ mozinfo==1.2.3 # https://bugzilla.mozilla.org/show_bug.cgi?id=1621226 mozlog==8.0.0 mozprocess==1.3.1 packaging==24.0 -pillow==9.5.0 +pillow==10.3.0 requests==2.31.0 six==1.16.0 urllib3==2.2.1 diff --git a/tests/wpt/tests/tools/wptrunner/requirements_firefox.txt b/tests/wpt/tests/tools/wptrunner/requirements_firefox.txt index 17fed6fab47..ed377b9c95a 100644 --- a/tests/wpt/tests/tools/wptrunner/requirements_firefox.txt +++ b/tests/wpt/tests/tools/wptrunner/requirements_firefox.txt @@ -1,6 +1,6 @@ marionette_driver==3.4.0 mozcrash==2.2.0 -mozdevice==4.1.1 +mozdevice==4.1.2 mozinstall==2.1.0 mozleak==0.2 mozprofile==3.0.0 diff --git a/tests/wpt/tests/tools/wptrunner/tox.ini b/tests/wpt/tests/tools/wptrunner/tox.ini index cd7021a7643..c380be12527 100644 --- a/tests/wpt/tests/tools/wptrunner/tox.ini +++ b/tests/wpt/tests/tools/wptrunner/tox.ini @@ -2,7 +2,7 @@ xfail_strict=true [tox] -envlist = py311-{base,chrome,firefox,opera,safari,sauce,servo,webkit,webkitgtk_minibrowser,epiphany},{py38,py39,py310}-base +envlist = py312-{base,chrome,firefox,opera,safari,sauce,servo,webkit,webkitgtk_minibrowser,epiphany},{py38,py39,py310,py311}-base skip_missing_interpreters = False [testenv] diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/__init__.py b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/__init__.py index 7d045e961fe..d54a9be9430 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/__init__.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/__init__.py @@ -28,7 +28,7 @@ product_list = ["android_webview", "chrome_ios", "chromium", "content_shell", - "edgechromium", + "edge", "firefox", "firefox_android", "safari", diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py index 95a51451a32..c0a176743de 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py @@ -53,13 +53,13 @@ def browser_kwargs(logger, test_type, run_info_data, config, **kwargs): "webdriver_args": kwargs.get("webdriver_args")} -def executor_kwargs(logger, test_type, test_environment, run_info_data, +def executor_kwargs(logger, test_type, test_environment, run_info_data, subsuite, **kwargs): sanitizer_enabled = kwargs.get("sanitizer_enabled") if sanitizer_enabled: test_type = "crashtest" executor_kwargs = base_executor_kwargs(test_type, test_environment, run_info_data, - **kwargs) + subsuite, **kwargs) executor_kwargs["close_after_done"] = True executor_kwargs["sanitizer_enabled"] = sanitizer_enabled executor_kwargs["reuse_window"] = kwargs.get("reuse_window", False) @@ -159,6 +159,10 @@ def executor_kwargs(logger, test_type, test_environment, run_info_data, if arg not in chrome_options["args"]: chrome_options["args"].append(arg) + for arg in subsuite.config.get("binary_args", []): + if arg not in chrome_options["args"]: + chrome_options["args"].append(arg) + # Pass the --headless=new flag to Chrome if WPT's own --headless flag was # set. '--headless' should always mean the new headless mode, as the old # headless mode is not used anyway. diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/edgechromium.py b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/edge.py index 4f5bffa06c4..82597c9312a 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/edgechromium.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/edge.py @@ -6,18 +6,18 @@ from .chrome import executor_kwargs as chrome_executor_kwargs from ..executors.executorwebdriver import WebDriverCrashtestExecutor # noqa: F401 from ..executors.base import WdspecExecutor # noqa: F401 from ..executors.executoredge import ( # noqa: F401 - EdgeChromiumDriverPrintRefTestExecutor, - EdgeChromiumDriverRefTestExecutor, - EdgeChromiumDriverTestharnessExecutor, + EdgeDriverPrintRefTestExecutor, + EdgeDriverRefTestExecutor, + EdgeDriverTestharnessExecutor, ) -__wptrunner__ = {"product": "edgechromium", +__wptrunner__ = {"product": "edge", "check_args": "check_args", - "browser": "EdgeChromiumBrowser", - "executor": {"testharness": "EdgeChromiumDriverTestharnessExecutor", - "reftest": "EdgeChromiumDriverRefTestExecutor", - "print-reftest": "EdgeChromiumDriverPrintRefTestExecutor", + "browser": "EdgeBrowser", + "executor": {"testharness": "EdgeDriverTestharnessExecutor", + "reftest": "EdgeDriverRefTestExecutor", + "print-reftest": "EdgeDriverPrintRefTestExecutor", "wdspec": "WdspecExecutor", "crashtest": "WebDriverCrashtestExecutor"}, "browser_kwargs": "browser_kwargs", @@ -58,9 +58,9 @@ def update_properties(): return (["debug", "os", "processor"], {"os": ["version"], "processor": ["bits"]}) -class EdgeChromiumBrowser(WebDriverBrowser): +class EdgeBrowser(WebDriverBrowser): """MicrosoftEdge is backed by MSEdgeDriver, which is supplied through - ``wptrunner.webdriver.EdgeChromiumDriverServer``. + ``wptrunner.webdriver.EdgeDriverServer``. """ def make_command(self): diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executoredge.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executoredge.py index cbe5eadf9a6..3b62cb7477b 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executoredge.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executoredge.py @@ -20,42 +20,42 @@ here = os.path.dirname(__file__) _SanitizerMixin = make_sanitizer_mixin(WebDriverCrashtestExecutor)
-class EdgeChromiumDriverTestharnessProtocolPart(ChromeDriverTestharnessProtocolPart):
+class EdgeDriverTestharnessProtocolPart(ChromeDriverTestharnessProtocolPart):
def setup(self):
super().setup()
self.cdp_company_prefix = "ms"
-class EdgeChromiumDriverPrintProtocolPart(ChromeDriverPrintProtocolPart):
+class EdgeDriverPrintProtocolPart(ChromeDriverPrintProtocolPart):
def setup(self):
super().setup()
self.cdp_company_prefix = "ms"
-class EdgeChromiumDriverProtocol(WebDriverProtocol):
+class EdgeDriverProtocol(WebDriverProtocol):
implements = [
- EdgeChromiumDriverPrintProtocolPart,
- EdgeChromiumDriverTestharnessProtocolPart,
+ EdgeDriverPrintProtocolPart,
+ EdgeDriverTestharnessProtocolPart,
*(part for part in WebDriverProtocol.implements
- if part.name != EdgeChromiumDriverTestharnessProtocolPart.name)
+ if part.name != EdgeDriverTestharnessProtocolPart.name)
]
reuse_window = False
-class EdgeChromiumDriverRefTestExecutor(WebDriverRefTestExecutor, _SanitizerMixin): # type: ignore
- protocol_cls = EdgeChromiumDriverProtocol
+class EdgeDriverRefTestExecutor(WebDriverRefTestExecutor, _SanitizerMixin): # type: ignore
+ protocol_cls = EdgeDriverProtocol
-class EdgeChromiumDriverTestharnessExecutor(WebDriverTestharnessExecutor, _SanitizerMixin): # type: ignore
- protocol_cls = EdgeChromiumDriverProtocol
+class EdgeDriverTestharnessExecutor(WebDriverTestharnessExecutor, _SanitizerMixin): # type: ignore
+ protocol_cls = EdgeDriverProtocol
def __init__(self, *args, reuse_window=False, **kwargs):
super().__init__(*args, **kwargs)
self.protocol.reuse_window = reuse_window
-class EdgeChromiumDriverPrintRefTestExecutor(EdgeChromiumDriverRefTestExecutor):
- protocol_cls = EdgeChromiumDriverProtocol
+class EdgeDriverPrintRefTestExecutor(EdgeDriverRefTestExecutor):
+ protocol_cls = EdgeDriverProtocol
def setup(self, runner):
super().setup(runner)
diff --git a/tests/wpt/tests/tools/wptserve/wptserve/response.py b/tests/wpt/tests/tools/wptserve/wptserve/response.py index a6ece62dab1..8d0e01bbddf 100644 --- a/tests/wpt/tests/tools/wptserve/wptserve/response.py +++ b/tests/wpt/tests/tools/wptserve/wptserve/response.py @@ -4,7 +4,7 @@ import json import uuid import traceback from collections import OrderedDict -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone from io import BytesIO from hpack.struct import HeaderTuple @@ -135,7 +135,7 @@ class Response: "oct", "nov", "dec"])} if isinstance(expires, timedelta): - expires = datetime.utcnow() + expires + expires = datetime.now(timezone.utc) + expires if expires is not None: expires_str = expires.strftime("%d %%s %Y %H:%M:%S GMT") diff --git a/tests/wpt/tests/tools/wptserve/wptserve/sslutils/openssl.py b/tests/wpt/tests/tools/wptserve/wptserve/sslutils/openssl.py index 5a16097e374..25f86e019ec 100644 --- a/tests/wpt/tests/tools/wptserve/wptserve/sslutils/openssl.py +++ b/tests/wpt/tests/tools/wptserve/wptserve/sslutils/openssl.py @@ -6,7 +6,7 @@ import random import shutil import subprocess import tempfile -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone # Amount of time beyond the present to consider certificates "expired." This # allows certificates to be proactively re-generated in the "buffer" period @@ -316,7 +316,7 @@ class OpenSSLEnvironment: # Because `strptime` does not account for time zone offsets, it is # always in terms of UTC, so the current time should be calculated # accordingly. - if end_date < datetime.utcnow() + time_buffer: + if end_date < datetime.now(timezone.utc) + time_buffer: return False #TODO: check the key actually signed the cert. diff --git a/tests/wpt/tests/trusted-types/default-policy-callback-arguments.html b/tests/wpt/tests/trusted-types/default-policy-callback-arguments.html index a4a9c9e3512..4801b55387c 100644 --- a/tests/wpt/tests/trusted-types/default-policy-callback-arguments.html +++ b/tests/wpt/tests/trusted-types/default-policy-callback-arguments.html @@ -31,7 +31,7 @@ const cases = [ [ "abc", "TrustedHTML", "Element innerHTML", _ => div.innerHTML = "abc" ], - [ "2+2", "TrustedScript", "Node textContent", + [ "2+2", "TrustedScript", "HTMLScriptElement textContent", _ => script.textContent = "2+2" ], [ "about:blank", "TrustedScriptURL", "HTMLScriptElement src", _ => script.src = "about:blank" ], diff --git a/tests/wpt/tests/url/WEB_FEATURES.yml b/tests/wpt/tests/url/WEB_FEATURES.yml new file mode 100644 index 00000000000..4711efc1faf --- /dev/null +++ b/tests/wpt/tests/url/WEB_FEATURES.yml @@ -0,0 +1,4 @@ +features: +- name: url-canparse + files: + - url-statics-canparse.* diff --git a/tests/wpt/tests/web-locks/WEB_FEATURES.yml b/tests/wpt/tests/web-locks/WEB_FEATURES.yml new file mode 100644 index 00000000000..dac5b1ba752 --- /dev/null +++ b/tests/wpt/tests/web-locks/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: web-locks + files: "**" diff --git a/tests/wpt/tests/webauthn/WEB_FEATURES.yml b/tests/wpt/tests/webauthn/WEB_FEATURES.yml new file mode 100644 index 00000000000..8b273de80b5 --- /dev/null +++ b/tests/wpt/tests/webauthn/WEB_FEATURES.yml @@ -0,0 +1,4 @@ +features: +- name: webauthn-public-key-easy + files: + - createcredential-getpublickey.https.html diff --git a/tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/key_events.py b/tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/key_events.py index e93c132e0ac..275b542b112 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/key_events.py +++ b/tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/key_events.py @@ -23,7 +23,7 @@ pytestmark = pytest.mark.asyncio ) async def test_non_printable_key_sends_events( - bidi_session, top_context, key, event + bidi_session, top_context, setup_key_test, key, event ): code = ALL_EVENTS[event]["code"] value = ALL_EVENTS[event]["key"] @@ -142,7 +142,7 @@ async def test_key_printable_key( @pytest.mark.parametrize("use_keyup", [True, False]) -async def test_key_printable_sequence(bidi_session, top_context, use_keyup): +async def test_key_printable_sequence(bidi_session, top_context, setup_key_test, use_keyup): actions = Actions() actions.add_key() if use_keyup: @@ -229,7 +229,7 @@ async def test_key_special_key_sends_keydown( assert len(keys_value) == 0 -async def test_key_space(bidi_session, top_context): +async def test_key_space(bidi_session, top_context, setup_key_test): actions = Actions() ( actions.add_key() @@ -254,7 +254,7 @@ async def test_key_space(bidi_session, top_context): assert events[0] == events[1] -async def test_keyup_only_sends_no_events(bidi_session, top_context): +async def test_keyup_only_sends_no_events(bidi_session, top_context, setup_key_test): actions = Actions() actions.add_key().key_up("a") await bidi_session.input.perform_actions( diff --git a/tests/wpt/tests/webdriver/tests/bidi/storage/__init__.py b/tests/wpt/tests/webdriver/tests/bidi/storage/__init__.py index 4ca0f7bdd7e..56ea5399143 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/storage/__init__.py +++ b/tests/wpt/tests/webdriver/tests/bidi/storage/__init__.py @@ -78,7 +78,7 @@ def create_cookie( def generate_expiry_date(day_diff=1): return ( - (datetime.utcnow() + timedelta(days=day_diff)) + (datetime.now(timezone.utc) + timedelta(days=day_diff)) .replace(microsecond=0) .replace(tzinfo=timezone.utc) ) diff --git a/tests/wpt/tests/webdriver/tests/classic/add_cookie/add.py b/tests/wpt/tests/webdriver/tests/classic/add_cookie/add.py index 24b71c52fdd..60b67d051ba 100644 --- a/tests/wpt/tests/webdriver/tests/classic/add_cookie/add.py +++ b/tests/wpt/tests/webdriver/tests/classic/add_cookie/add.py @@ -1,6 +1,6 @@ import pytest -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone from webdriver.transport import Response @@ -154,7 +154,7 @@ def test_add_cookie_for_ip(session, server_config): def test_add_non_session_cookie(session, url): a_day_from_now = int( - (datetime.utcnow() + timedelta(days=1) - datetime.utcfromtimestamp(0)).total_seconds()) + (datetime.now(timezone.utc) + timedelta(days=1) - datetime.fromtimestamp(0, timezone.utc)).total_seconds()) new_cookie = { "name": "hello", diff --git a/tests/wpt/tests/webdriver/tests/classic/element_click/navigate.py b/tests/wpt/tests/webdriver/tests/classic/element_click/navigate.py index 7616c069632..407d288a53e 100644 --- a/tests/wpt/tests/webdriver/tests/classic/element_click/navigate.py +++ b/tests/wpt/tests/webdriver/tests/classic/element_click/navigate.py @@ -37,14 +37,14 @@ def test_multi_line_link(session, inline, url): assert session.url == url(link) -def test_link_unload_event(session, url, server_config, inline): +def test_navigation_retains_input_state(session, url, server_config, inline): link = "/webdriver/tests/classic/element_click/support/input.html" session.url = inline(f""" - <body onunload="checkUnload()"> + <body onpagehide="checkPageHide()"> <a href="{link}">click here</a> <input type="checkbox"> <script> - function checkUnload() {{ + function checkPageHide() {{ document.getElementsByTagName("input")[0].checked = true; }} </script> diff --git a/tests/wpt/tests/webdriver/tests/classic/get_named_cookie/get.py b/tests/wpt/tests/webdriver/tests/classic/get_named_cookie/get.py index 41426532ef1..78418dae93b 100644 --- a/tests/wpt/tests/webdriver/tests/classic/get_named_cookie/get.py +++ b/tests/wpt/tests/webdriver/tests/classic/get_named_cookie/get.py @@ -1,6 +1,6 @@ import pytest -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone from tests.support.asserts import assert_error, assert_success @@ -62,7 +62,7 @@ def test_get_named_cookie(session, url): # same formatting as Date.toUTCString() in javascript utc_string_format = "%a, %d %b %Y %H:%M:%S" - a_day_from_now = (datetime.utcnow() + timedelta(days=1)).strftime(utc_string_format) + a_day_from_now = (datetime.now(timezone.utc) + timedelta(days=1)).strftime(utc_string_format) session.execute_script("document.cookie = 'foo=bar;expires=%s'" % a_day_from_now) result = get_named_cookie(session, "foo") |