aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorServo WPT Sync <josh+wptsync@joshmatthews.net>2024-05-05 05:12:21 +0000
committerWPT Sync Bot <josh+wptsync@joshmatthews.net>2024-05-05 05:13:02 +0000
commit0763a2206f247d8f5a3c02e2f54fc25c3d9582ae (patch)
tree401a66536b54cbecfa60ae76d811693a9f66dbce
parentff3cd1494ea5c333d8f53450ccd50fe3a287e2a1 (diff)
downloadservo-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
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-easing/linear-timing-functions-output.html.ini (renamed from tests/wpt/meta-legacy-layout/css/css-easing/linear-timing-functions-output.tentative.html.ini)2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-margins-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-ui/webkit-appearance-auto-non-html-namespace-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/backdrop-filter-isolation.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/fetch/fetch-later/new-window.tentative.https.window.js.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/dom/documents/dom-tree-accessors/Document.currentScript.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-lr.tentative.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-rl.tentative.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/performance-timeline/not-restored-reasons/performance-navigation-timing-iframes-without-attributes.tentative.window.js.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/webgl/idlharness.any.js.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/webmessaging/with-ports/017.html.ini4
-rw-r--r--tests/wpt/meta/MANIFEST.json1394
-rw-r--r--tests/wpt/meta/css/css-easing/linear-timing-functions-output.tentative.html.ini15
-rw-r--r--tests/wpt/meta/css/filter-effects/backdrop-filter-isolation.html.ini2
-rw-r--r--tests/wpt/tests/.azure-pipelines.yml50
-rw-r--r--tests/wpt/tests/.github/workflows/documentation.yml2
-rw-r--r--tests/wpt/tests/.github/workflows/manifest.yml2
-rw-r--r--tests/wpt/tests/.github/workflows/regen_certs.yml2
-rw-r--r--tests/wpt/tests/compute-pressure/compute_pressure_timestamp.https.any.js86
-rw-r--r--tests/wpt/tests/credential-management/digital-identity.https.html58
-rw-r--r--tests/wpt/tests/css/css-anchor-position/anchor-scroll-overflow-hidden-ref.html37
-rw-r--r--tests/wpt/tests/css/css-anchor-position/anchor-scroll-overflow-hidden.html67
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081-print-ref.html33
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081a-print.html33
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081b-print.html33
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081c-print.html33
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-081d-print.html33
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082-print-ref.html40
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082a-print.html44
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082b-print.html44
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082c-print.html44
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-082d-print.html44
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-083a.html42
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-083b.html42
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-083c.html42
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/multi-line-row-flex-fragmentation-083d.html42
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068-print-ref.html25
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068a-print.html30
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068b-print.html30
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068c-print.html30
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-068d-print.html30
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069-print-ref.html35
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069a-print.html40
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069b-print.html40
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069c-print.html40
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-069d-print.html40
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-070a.html41
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-070b.html41
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-070c.html41
-rw-r--r--tests/wpt/tests/css/css-break/flexbox/single-line-column-flex-fragmentation-070d.html41
-rw-r--r--tests/wpt/tests/css/css-counter-styles/counter-style-at-rule/WEB_FEATURES.yml3
-rw-r--r--tests/wpt/tests/css/css-counter-styles/cssom/WEB_FEATURES.yml26
-rw-r--r--tests/wpt/tests/css/css-easing/WEB_FEATURES.yml4
-rw-r--r--tests/wpt/tests/css/css-easing/linear-timing-functions-output.html (renamed from tests/wpt/tests/css/css-easing/linear-timing-functions-output.tentative.html)2
-rw-r--r--tests/wpt/tests/css/css-easing/linear-timing-functions-syntax.html (renamed from tests/wpt/tests/css/css-easing/linear-timing-functions-syntax.tentative.html)2
-rw-r--r--tests/wpt/tests/css/css-lists/WEB_FEATURES.yml4
-rw-r--r--tests/wpt/tests/css/css-page/page-size-012-print-ref.html17
-rw-r--r--tests/wpt/tests/css/css-page/page-size-012-print.html28
-rw-r--r--tests/wpt/tests/css/css-position/sticky/position-sticky-margins-002.html38
-rw-r--r--tests/wpt/tests/css/css-position/sticky/position-sticky-margins-003.html36
-rw-r--r--tests/wpt/tests/css/css-sizing/contain-intrinsic-size/WEB_FEATURES.yml3
-rw-r--r--tests/wpt/tests/css/css-syntax/custom-property-rule-ambiguity.html2
-rw-r--r--tests/wpt/tests/css/css-text/hyphens/WEB_FEATURES.yml3
-rw-r--r--tests/wpt/tests/css/css-ui/webkit-appearance-auto-non-html-namespace-001.html19
-rw-r--r--tests/wpt/tests/css/css-values/WEB_FEATURES.yml4
-rw-r--r--tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-new-main-new-iframe-ref.html27
-rw-r--r--tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-new-main-new-iframe.html68
-rw-r--r--tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-new-main-old-iframe-ref.html27
-rw-r--r--tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-new-main-old-iframe.html68
-rw-r--r--tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-new-iframe-ref.html27
-rw-r--r--tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-new-iframe.html67
-rw-r--r--tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-old-iframe-ref.html27
-rw-r--r--tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-old-iframe.html67
-rw-r--r--tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main-ref.html27
-rw-r--r--tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-old-main.html60
-rw-r--r--tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-with-name-on-iframe-ref.html28
-rw-r--r--tests/wpt/tests/css/css-view-transitions/iframe-and-main-frame-transition-with-name-on-iframe.html93
-rw-r--r--tests/wpt/tests/css/css-view-transitions/root-to-shared-animation-incoming-ref.html2
-rw-r--r--tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-backdrop-filter.html19
-rw-r--r--tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-clip-path-ref.html22
-rw-r--r--tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-clip-path.html19
-rw-r--r--tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-filter-ref.html22
-rw-r--r--tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-filter.html20
-rw-r--r--tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-mix-blend-mode.html19
-rw-r--r--tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-opacity-ref.html23
-rw-r--r--tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-opacity.html20
-rw-r--r--tests/wpt/tests/css/filter-effects/backdrop-filter-backdrop-root-ref.html23
-rw-r--r--tests/wpt/tests/css/filter-effects/backdrop-filter-isolation-ref.html51
-rw-r--r--tests/wpt/tests/css/filter-effects/backdrop-filter-isolation.html44
-rw-r--r--tests/wpt/tests/css/filter-effects/resources/backdrop-filter-backdrop-root.css30
-rw-r--r--tests/wpt/tests/deprecation-reporting/__dir__.ini1
-rw-r--r--tests/wpt/tests/fetch/metadata/tools/fetch-metadata.conf.yml9
-rw-r--r--tests/wpt/tests/fledge/tentative/auction-config.https.window.js60
-rw-r--r--tests/wpt/tests/html/dom/WEB_FEATURES.yml4
-rw-r--r--tests/wpt/tests/html/semantics/embedded-content/media-elements/WEB_FEATURES.yml4
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/resources/stylable-select-styles.css46
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-custom-button-no-datalist-ref.html (renamed from tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-custom-datalist-ref.html)2
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-custom-button-no-datalist.tentative.html3
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-custom-datalist.tentative.html3
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-no-datalist-ref.html17
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-no-button-no-datalist.tentative.html3
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-lr-ref.html23
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-lr.tentative.html29
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-rl-ref.html23
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-appearance-writing-mode-vertical-rl.tentative.html29
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-option-arbitrary-content-displayed.tentative.html2
-rw-r--r--tests/wpt/tests/html/semantics/invokers/interesttarget-svg-a-event-dispatch.tentative.html51
-rw-r--r--tests/wpt/tests/html/semantics/popovers/popover-light-dismiss-scroll-within.html52
-rw-r--r--tests/wpt/tests/html/semantics/popovers/popover-light-dismiss.html27
-rw-r--r--tests/wpt/tests/html/user-activation/WEB_FEATURES.yml3
-rw-r--r--tests/wpt/tests/interfaces/DOM-Parsing.idl4
-rw-r--r--tests/wpt/tests/interfaces/compute-pressure.idl2
-rw-r--r--tests/wpt/tests/interfaces/css-properties-values-api.idl8
-rw-r--r--tests/wpt/tests/interfaces/geolocation.idl2
-rw-r--r--tests/wpt/tests/interfaces/html.idl4
-rw-r--r--tests/wpt/tests/interfaces/webcodecs.idl2
-rw-r--r--tests/wpt/tests/interfaces/webgl1.idl1
-rw-r--r--tests/wpt/tests/interfaces/webnn.idl12
-rw-r--r--tests/wpt/tests/mediacapture-record/MediaRecorder-canvas-media-source.https.html8
-rw-r--r--tests/wpt/tests/mediacapture-record/MediaRecorder-events-and-exceptions.html8
-rw-r--r--tests/wpt/tests/mediacapture-record/MediaRecorder-mimetype.html3
-rw-r--r--tests/wpt/tests/mediacapture-record/MediaRecorder-pause-resume.html4
-rw-r--r--tests/wpt/tests/mediacapture-record/MediaRecorder-peerconnection.https.html133
-rw-r--r--tests/wpt/tests/mediacapture-record/MediaRecorder-stop.html43
-rw-r--r--tests/wpt/tests/orientation-event/WEB_FEATURES.yml3
-rw-r--r--tests/wpt/tests/resources/chromium/mock-pressure-service.js26
-rw-r--r--tests/wpt/tests/scheduler/tentative/yield/yield-priority-posttask.any.js15
-rw-r--r--tests/wpt/tests/service-workers/service-worker/resources/range-request-with-synth-head-worker.js2
-rw-r--r--tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/router-rules.js19
-rw-r--r--tests/wpt/tests/svg/layout/svg-embed-intrinsic-size-min-size.html16
-rw-r--r--tests/wpt/tests/svg/layout/svg-intrinsic-size-min-size-ref.html3
-rw-r--r--tests/wpt/tests/svg/layout/svg-intrinsic-size-min-size.html16
-rw-r--r--tests/wpt/tests/tools/ci/jobs.py7
-rw-r--r--tests/wpt/tests/tools/ci/tc/tasks/test.yml29
-rw-r--r--tests/wpt/tests/tools/ci/tc/tests/test_valid.py8
-rw-r--r--tests/wpt/tests/tools/ci/update_built.py1
-rw-r--r--tests/wpt/tests/tools/manifest/requirements.txt2
-rw-r--r--tests/wpt/tests/tools/pytest.ini7
-rw-r--r--tests/wpt/tests/tools/requirements_tests.txt2
-rw-r--r--tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/websocket_server.py13
-rw-r--r--tests/wpt/tests/tools/third_party_modified/mozlog/mozlog/formatters/html/html.py4
-rw-r--r--tests/wpt/tests/tools/tox.ini2
-rw-r--r--tests/wpt/tests/tools/wave/tox.ini2
-rw-r--r--tests/wpt/tests/tools/wpt/browser.py6
-rw-r--r--tests/wpt/tests/tools/wpt/install.py2
-rw-r--r--tests/wpt/tests/tools/wpt/run.py11
-rw-r--r--tests/wpt/tests/tools/wpt/tests/test_browser.py16
-rw-r--r--tests/wpt/tests/tools/wpt/tox.ini2
-rw-r--r--tests/wpt/tests/tools/wpt/utils.py5
-rw-r--r--tests/wpt/tests/tools/wptrunner/docs/expectation.rst2
-rw-r--r--tests/wpt/tests/tools/wptrunner/requirements.txt2
-rw-r--r--tests/wpt/tests/tools/wptrunner/requirements_firefox.txt2
-rw-r--r--tests/wpt/tests/tools/wptrunner/tox.ini2
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/browsers/__init__.py2
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py8
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/browsers/edge.py (renamed from tests/wpt/tests/tools/wptrunner/wptrunner/browsers/edgechromium.py)20
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/executors/executoredge.py24
-rw-r--r--tests/wpt/tests/tools/wptserve/wptserve/response.py4
-rw-r--r--tests/wpt/tests/tools/wptserve/wptserve/sslutils/openssl.py4
-rw-r--r--tests/wpt/tests/trusted-types/default-policy-callback-arguments.html2
-rw-r--r--tests/wpt/tests/url/WEB_FEATURES.yml4
-rw-r--r--tests/wpt/tests/web-locks/WEB_FEATURES.yml3
-rw-r--r--tests/wpt/tests/webauthn/WEB_FEATURES.yml4
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/key_events.py8
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/storage/__init__.py2
-rw-r--r--tests/wpt/tests/webdriver/tests/classic/add_cookie/add.py4
-rw-r--r--tests/wpt/tests/webdriver/tests/classic/element_click/navigate.py6
-rw-r--r--tests/wpt/tests/webdriver/tests/classic/get_named_cookie/get.py4
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")