aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2019-08-28 12:38:43 -0400
committerGitHub <noreply@github.com>2019-08-28 12:38:43 -0400
commit2a8cd0f0064392f7ba3ecfd6925d83db2b552024 (patch)
treed87b5f75c58a0536d90d435b6cb1811a3744d5dd
parent0636f51c1475db8665d777076784317924519b23 (diff)
parentd18b651358c3c7496c900e558468494ae36edb69 (diff)
downloadservo-2a8cd0f0064392f7ba3ecfd6925d83db2b552024.tar.gz
servo-2a8cd0f0064392f7ba3ecfd6925d83db2b552024.zip
Auto merge of #24078 - servo-wpt-sync:wpt_update_28-08-2019, r=servo-wpt-sync
Sync WPT with upstream (28-08-2019) Automated downstream sync of changes from upstream as of 28-08-2019. [no-wpt-sync] <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/24078) <!-- Reviewable:end -->
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini3
-rw-r--r--tests/wpt/metadata/MANIFEST.json661
-rw-r--r--tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini2
-rw-r--r--tests/wpt/metadata/dom/idlharness.any.js.ini131
-rw-r--r--tests/wpt/metadata/dom/idlharness.window.js.ini543
-rw-r--r--tests/wpt/metadata/dom/nodes/aria-element-reflection.tentative.html.ini28
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini12
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini5
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini34
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini34
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini2
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini4
-rw-r--r--tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini3
-rw-r--r--tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini3
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini1
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini6
-rw-r--r--tests/wpt/metadata/webdriver/tests/take_element_screenshot/iframe.py.ini7
-rw-r--r--tests/wpt/metadata/webdriver/tests/take_screenshot/iframe.py.ini4
-rw-r--r--tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/.azure-pipelines.yml2
-rw-r--r--tests/wpt/web-platform-tests/audio-output/idlharness.https.window.js29
-rw-r--r--tests/wpt/web-platform-tests/beacon/idlharness.any.js21
-rw-r--r--tests/wpt/web-platform-tests/css/css-font-loading/font-face-reject.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-computed.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-invalid.html31
-rw-r--r--tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-valid.html31
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/animation/column-count-interpolation.html68
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/animation/column-rule-color-interpolation.html77
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/animation/column-rule-width.html101
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/animation/column-width-interpolation.html91
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-005-ref.html100
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-005.html70
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-nobackground-005-ref.html86
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-nobackground-005.html68
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-computed.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-computed.html (renamed from tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-inline-computed.html)18
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-invalid.html (renamed from tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-inline-invalid.html)22
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-valid.html (renamed from tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-inline-valid.html)17
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-invalid.html32
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-valid.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-computed.html48
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-computed.html (renamed from tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-computed.html)32
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid.html54
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-valid.html (renamed from tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-valid.html)29
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-invalid.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-valid.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-invalid.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-invalid.html8
-rw-r--r--tests/wpt/web-platform-tests/css/css-shapes/animation/shape-image-threshold-interpolation.html87
-rw-r--r--tests/wpt/web-platform-tests/css/css-shapes/animation/shape-margin-interpolation.html87
-rw-r--r--tests/wpt/web-platform-tests/css/css-shapes/animation/shape-outside-interpolation.html137
-rw-r--r--tests/wpt/web-platform-tests/docs/running-tests/android_webview.md36
-rw-r--r--tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md1
-rw-r--r--tests/wpt/web-platform-tests/dom/idlharness.any.js25
-rw-r--r--tests/wpt/web-platform-tests/dom/idlharness.window.js47
-rw-r--r--tests/wpt/web-platform-tests/dom/interfaces.html63
-rw-r--r--tests/wpt/web-platform-tests/dom/nodes/aria-element-reflection.tentative.html266
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html19
-rw-r--r--tests/wpt/web-platform-tests/event-timing/bufferbeforeonload.html99
-rw-r--r--tests/wpt/web-platform-tests/event-timing/click-timing.html64
-rw-r--r--tests/wpt/web-platform-tests/event-timing/observethenonload.html97
-rw-r--r--tests/wpt/web-platform-tests/event-timing/onloadthenobserve-firstInput.html66
-rw-r--r--tests/wpt/web-platform-tests/event-timing/onloadthenobserve.html80
-rw-r--r--tests/wpt/web-platform-tests/geolocation-API/idlharness.window.js25
-rw-r--r--tests/wpt/web-platform-tests/html/dom/interfaces.worker.js1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html10
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html10
-rw-r--r--tests/wpt/web-platform-tests/inert/inert-retargeting-iframe.tentative.html4
-rw-r--r--tests/wpt/web-platform-tests/inert/inert-retargeting.tentative.html4
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html.ini (renamed from tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html)0
-rw-r--r--tests/wpt/web-platform-tests/interfaces/IndexedDB.idl9
-rw-r--r--tests/wpt/web-platform-tests/interfaces/dedicated-workers.idl133
-rw-r--r--tests/wpt/web-platform-tests/interfaces/input-events.idl2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/requestidlecallback.idl2
-rw-r--r--tests/wpt/web-platform-tests/lint.whitelist3
-rw-r--r--tests/wpt/web-platform-tests/media-source/idlharness.window.js3
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-depth/idlharness.html18
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-streams/idlharness.https.window.js84
-rw-r--r--tests/wpt/web-platform-tests/orientation-event/idlharness.https.window.js27
-rw-r--r--tests/wpt/web-platform-tests/permissions/interfaces.any.js54
-rw-r--r--tests/wpt/web-platform-tests/requestidlecallback/idlharness.window.js42
-rw-r--r--tests/wpt/web-platform-tests/server-timing/idlharness.https.any.js23
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html2
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js5
-rw-r--r--tests/wpt/web-platform-tests/streams/writable-streams/aborting.any.js3
-rw-r--r--tests/wpt/web-platform-tests/streams/writable-streams/brand-checks.any.js6
-rw-r--r--tests/wpt/web-platform-tests/streams/writable-streams/close.any.js59
-rw-r--r--tests/wpt/web-platform-tests/streams/writable-streams/properties.any.js4
-rw-r--r--tests/wpt/web-platform-tests/svg/animations/spaces-at-end-of-path-data.html29
-rw-r--r--tests/wpt/web-platform-tests/svg/pservers/parsing/stop-color-invalid.svg24
-rw-r--r--tests/wpt/web-platform-tests/svg/pservers/parsing/stop-color-valid.svg24
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py18
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/webdriver_server.py1
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py12
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/iframe.py54
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py7
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py11
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/iframe.py45
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/screenshot.py4
-rw-r--r--tests/wpt/web-platform-tests/webgpu/framework/version.js2
-rw-r--r--tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/basic.spec.js2
-rw-r--r--tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/rendering.spec.js2
-rw-r--r--tests/wpt/web-platform-tests/workers/README.md3
-rw-r--r--tests/wpt/web-platform-tests/workers/interfaces.worker.js20
120 files changed, 3584 insertions, 1358 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
index 3b874fc1748..947e223fb28 100644
--- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
@@ -34,6 +34,3 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
- [Revoke blob URL after calling fetch, fetch should succeed]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 7d50948f31a..de5217e8a5c 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -131659,6 +131659,18 @@
{}
]
],
+ "css/css-multicol/multicol-breaking-005.html": [
+ [
+ "css/css-multicol/multicol-breaking-005.html",
+ [
+ [
+ "/css/css-multicol/multicol-breaking-005-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-multicol/multicol-breaking-nobackground-000.html": [
[
"css/css-multicol/multicol-breaking-nobackground-000.html",
@@ -131719,6 +131731,18 @@
{}
]
],
+ "css/css-multicol/multicol-breaking-nobackground-005.html": [
+ [
+ "css/css-multicol/multicol-breaking-nobackground-005.html",
+ [
+ [
+ "/css/css-multicol/multicol-breaking-nobackground-005-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-multicol/multicol-clip-001.xht": [
[
"css/css-multicol/multicol-clip-001.xht",
@@ -252929,6 +252953,9 @@
"css/css-multicol/multicol-breaking-004-ref.html": [
[]
],
+ "css/css-multicol/multicol-breaking-005-ref.html": [
+ []
+ ],
"css/css-multicol/multicol-breaking-nobackground-000-ref.html": [
[]
],
@@ -252944,6 +252971,9 @@
"css/css-multicol/multicol-breaking-nobackground-004-ref.html": [
[]
],
+ "css/css-multicol/multicol-breaking-nobackground-005-ref.html": [
+ []
+ ],
"css/css-multicol/multicol-clip-001-ref.xht": [
[]
],
@@ -265412,6 +265442,9 @@
"docs/reviewing-tests/reverting.md": [
[]
],
+ "docs/running-tests/android_webview.md": [
+ []
+ ],
"docs/running-tests/chrome.md": [
[]
],
@@ -275180,7 +275213,7 @@
"infrastructure/metadata/infrastructure/reftest/reftest_cycle_fail.html.ini": [
[]
],
- "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html": [
+ "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html.ini": [
[]
],
"infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_full.html.ini": [
@@ -275426,9 +275459,6 @@
"interfaces/cssom.idl": [
[]
],
- "interfaces/dedicated-workers.idl": [
- []
- ],
"interfaces/dom.idl": [
[]
],
@@ -317356,6 +317386,12 @@
{}
]
],
+ "css/css-font-loading/font-face-reject.html": [
+ [
+ "css/css-font-loading/font-face-reject.html",
+ {}
+ ]
+ ],
"css/css-font-loading/fontfacesetloadevent-constructor.html": [
[
"css/css-font-loading/fontfacesetloadevent-constructor.html",
@@ -320078,6 +320114,24 @@
{}
]
],
+ "css/css-inline/parsing/vertical-align-computed.html": [
+ [
+ "css/css-inline/parsing/vertical-align-computed.html",
+ {}
+ ]
+ ],
+ "css/css-inline/parsing/vertical-align-invalid.html": [
+ [
+ "css/css-inline/parsing/vertical-align-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-inline/parsing/vertical-align-valid.html": [
+ [
+ "css/css-inline/parsing/vertical-align-valid.html",
+ {}
+ ]
+ ],
"css/css-layout-api/at-supports-rule.https.html": [
[
"css/css-layout-api/at-supports-rule.https.html",
@@ -320828,6 +320882,30 @@
{}
]
],
+ "css/css-multicol/animation/column-count-interpolation.html": [
+ [
+ "css/css-multicol/animation/column-count-interpolation.html",
+ {}
+ ]
+ ],
+ "css/css-multicol/animation/column-rule-color-interpolation.html": [
+ [
+ "css/css-multicol/animation/column-rule-color-interpolation.html",
+ {}
+ ]
+ ],
+ "css/css-multicol/animation/column-rule-width.html": [
+ [
+ "css/css-multicol/animation/column-rule-width.html",
+ {}
+ ]
+ ],
+ "css/css-multicol/animation/column-width-interpolation.html": [
+ [
+ "css/css-multicol/animation/column-width-interpolation.html",
+ {}
+ ]
+ ],
"css/css-multicol/balance-table-with-fractional-height-row.html": [
[
"css/css-multicol/balance-table-with-fractional-height-row.html",
@@ -322286,21 +322364,21 @@
{}
]
],
- "css/css-scroll-snap/parsing/scroll-margin-block-computed.html": [
+ "css/css-scroll-snap/parsing/scroll-margin-block-inline-computed.html": [
[
- "css/css-scroll-snap/parsing/scroll-margin-block-computed.html",
+ "css/css-scroll-snap/parsing/scroll-margin-block-inline-computed.html",
{}
]
],
- "css/css-scroll-snap/parsing/scroll-margin-block-invalid.html": [
+ "css/css-scroll-snap/parsing/scroll-margin-block-inline-invalid.html": [
[
- "css/css-scroll-snap/parsing/scroll-margin-block-invalid.html",
+ "css/css-scroll-snap/parsing/scroll-margin-block-inline-invalid.html",
{}
]
],
- "css/css-scroll-snap/parsing/scroll-margin-block-valid.html": [
+ "css/css-scroll-snap/parsing/scroll-margin-block-inline-valid.html": [
[
- "css/css-scroll-snap/parsing/scroll-margin-block-valid.html",
+ "css/css-scroll-snap/parsing/scroll-margin-block-inline-valid.html",
{}
]
],
@@ -322310,24 +322388,6 @@
{}
]
],
- "css/css-scroll-snap/parsing/scroll-margin-inline-computed.html": [
- [
- "css/css-scroll-snap/parsing/scroll-margin-inline-computed.html",
- {}
- ]
- ],
- "css/css-scroll-snap/parsing/scroll-margin-inline-invalid.html": [
- [
- "css/css-scroll-snap/parsing/scroll-margin-inline-invalid.html",
- {}
- ]
- ],
- "css/css-scroll-snap/parsing/scroll-margin-inline-valid.html": [
- [
- "css/css-scroll-snap/parsing/scroll-margin-inline-valid.html",
- {}
- ]
- ],
"css/css-scroll-snap/parsing/scroll-margin-invalid.html": [
[
"css/css-scroll-snap/parsing/scroll-margin-invalid.html",
@@ -322340,21 +322400,21 @@
{}
]
],
- "css/css-scroll-snap/parsing/scroll-padding-block-computed.html": [
+ "css/css-scroll-snap/parsing/scroll-padding-block-inline-computed.html": [
[
- "css/css-scroll-snap/parsing/scroll-padding-block-computed.html",
+ "css/css-scroll-snap/parsing/scroll-padding-block-inline-computed.html",
{}
]
],
- "css/css-scroll-snap/parsing/scroll-padding-block-invalid.html": [
+ "css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid.html": [
[
- "css/css-scroll-snap/parsing/scroll-padding-block-invalid.html",
+ "css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid.html",
{}
]
],
- "css/css-scroll-snap/parsing/scroll-padding-block-valid.html": [
+ "css/css-scroll-snap/parsing/scroll-padding-block-inline-valid.html": [
[
- "css/css-scroll-snap/parsing/scroll-padding-block-valid.html",
+ "css/css-scroll-snap/parsing/scroll-padding-block-inline-valid.html",
{}
]
],
@@ -322364,24 +322424,6 @@
{}
]
],
- "css/css-scroll-snap/parsing/scroll-padding-inline-computed.html": [
- [
- "css/css-scroll-snap/parsing/scroll-padding-inline-computed.html",
- {}
- ]
- ],
- "css/css-scroll-snap/parsing/scroll-padding-inline-invalid.html": [
- [
- "css/css-scroll-snap/parsing/scroll-padding-inline-invalid.html",
- {}
- ]
- ],
- "css/css-scroll-snap/parsing/scroll-padding-inline-valid.html": [
- [
- "css/css-scroll-snap/parsing/scroll-padding-inline-valid.html",
- {}
- ]
- ],
"css/css-scroll-snap/parsing/scroll-padding-invalid.html": [
[
"css/css-scroll-snap/parsing/scroll-padding-invalid.html",
@@ -322670,6 +322712,24 @@
{}
]
],
+ "css/css-shapes/animation/shape-image-threshold-interpolation.html": [
+ [
+ "css/css-shapes/animation/shape-image-threshold-interpolation.html",
+ {}
+ ]
+ ],
+ "css/css-shapes/animation/shape-margin-interpolation.html": [
+ [
+ "css/css-shapes/animation/shape-margin-interpolation.html",
+ {}
+ ]
+ ],
+ "css/css-shapes/animation/shape-outside-interpolation.html": [
+ [
+ "css/css-shapes/animation/shape-outside-interpolation.html",
+ {}
+ ]
+ ],
"css/css-shapes/basic-shape-circle-ellipse-serialization.html": [
[
"css/css-shapes/basic-shape-circle-ellipse-serialization.html",
@@ -333661,26 +333721,152 @@
{}
]
],
- "dom/interface-objects.html": [
+ "dom/idlharness.any.js": [
[
- "dom/interface-objects.html",
- {}
+ "dom/idlharness.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!window,worker"
+ ],
+ [
+ "script",
+ "/resources/WebIDLParser.js"
+ ],
+ [
+ "script",
+ "/resources/idlharness.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "dom/idlharness.any.sharedworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!window,worker"
+ ],
+ [
+ "script",
+ "/resources/WebIDLParser.js"
+ ],
+ [
+ "script",
+ "/resources/idlharness.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "dom/idlharness.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!window,worker"
+ ],
+ [
+ "script",
+ "/resources/WebIDLParser.js"
+ ],
+ [
+ "script",
+ "/resources/idlharness.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
]
],
- "dom/interfaces.html": [
+ "dom/idlharness.window.js": [
[
- "dom/interfaces.html?exclude=Node",
+ "dom/idlharness.window.html?exclude=Node",
{
+ "script_metadata": [
+ [
+ "script",
+ "/resources/WebIDLParser.js"
+ ],
+ [
+ "script",
+ "/resources/idlharness.js"
+ ],
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "variant",
+ "?include=Node"
+ ],
+ [
+ "variant",
+ "?exclude=Node"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
"timeout": "long"
}
],
[
- "dom/interfaces.html?include=Node",
+ "dom/idlharness.window.html?include=Node",
{
+ "script_metadata": [
+ [
+ "script",
+ "/resources/WebIDLParser.js"
+ ],
+ [
+ "script",
+ "/resources/idlharness.js"
+ ],
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "variant",
+ "?include=Node"
+ ],
+ [
+ "variant",
+ "?exclude=Node"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
"timeout": "long"
}
]
],
+ "dom/interface-objects.html": [
+ [
+ "dom/interface-objects.html",
+ {}
+ ]
+ ],
"dom/lists/DOMTokenList-Iterable.html": [
[
"dom/lists/DOMTokenList-Iterable.html",
@@ -334635,6 +334821,12 @@
{}
]
],
+ "dom/nodes/aria-element-reflection.tentative.html": [
+ [
+ "dom/nodes/aria-element-reflection.tentative.html",
+ {}
+ ]
+ ],
"dom/nodes/attributes.html": [
[
"dom/nodes/attributes.html",
@@ -345758,18 +345950,17 @@
{}
]
],
- "event-timing/bufferbeforeonload.html": [
+ "event-timing/buffered-flag.html": [
[
- "event-timing/bufferbeforeonload.html",
+ "event-timing/buffered-flag.html",
{
- "testdriver": true,
- "timeout": "long"
+ "testdriver": true
}
]
],
- "event-timing/buffered-flag.html": [
+ "event-timing/click-timing.html": [
[
- "event-timing/buffered-flag.html",
+ "event-timing/click-timing.html",
{
"testdriver": true
}
@@ -345862,33 +346053,6 @@
}
]
],
- "event-timing/observethenonload.html": [
- [
- "event-timing/observethenonload.html",
- {
- "testdriver": true,
- "timeout": "long"
- }
- ]
- ],
- "event-timing/onloadthenobserve-firstInput.html": [
- [
- "event-timing/onloadthenobserve-firstInput.html",
- {
- "testdriver": true,
- "timeout": "long"
- }
- ]
- ],
- "event-timing/onloadthenobserve.html": [
- [
- "event-timing/onloadthenobserve.html",
- {
- "testdriver": true,
- "timeout": "long"
- }
- ]
- ],
"event-timing/only-observe-firstInput.html": [
[
"event-timing/only-observe-firstInput.html",
@@ -354771,6 +354935,18 @@
{}
]
],
+ "html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html": [
+ [
+ "html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html",
+ {}
+ ]
+ ],
+ "html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html": [
+ [
+ "html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html",
+ {}
+ ]
+ ],
"html/semantics/document-metadata/the-link-element/document-without-browsing-context.html": [
[
"html/semantics/document-metadata/the-link-element/document-without-browsing-context.html",
@@ -367574,8 +367750,13 @@
[
"script",
"/resources/idlharness.js"
+ ],
+ [
+ "timeout",
+ "long"
]
- ]
+ ],
+ "timeout": "long"
}
]
],
@@ -404136,6 +404317,12 @@
{}
]
],
+ "svg/animations/spaces-at-end-of-path-data.html": [
+ [
+ "svg/animations/spaces-at-end-of-path-data.html",
+ {}
+ ]
+ ],
"svg/animations/svgangle-animation-deg-to-grad.html": [
[
"svg/animations/svgangle-animation-deg-to-grad.html",
@@ -405372,6 +405559,18 @@
{}
]
],
+ "svg/pservers/parsing/stop-color-invalid.svg": [
+ [
+ "svg/pservers/parsing/stop-color-invalid.svg",
+ {}
+ ]
+ ],
+ "svg/pservers/parsing/stop-color-valid.svg": [
+ [
+ "svg/pservers/parsing/stop-color-valid.svg",
+ {}
+ ]
+ ],
"svg/pservers/parsing/stop-opacity-computed.svg": [
[
"svg/pservers/parsing/stop-opacity-computed.svg",
@@ -420624,12 +420823,6 @@
}
]
],
- "workers/interfaces.worker.js": [
- [
- "workers/interfaces.worker.html",
- {}
- ]
- ],
"workers/interfaces/DedicatedWorkerGlobalScope/EventTarget.worker.js": [
[
"workers/interfaces/DedicatedWorkerGlobalScope/EventTarget.worker.html",
@@ -445064,6 +445257,12 @@
{}
]
],
+ "webdriver/tests/take_element_screenshot/iframe.py": [
+ [
+ "webdriver/tests/take_element_screenshot/iframe.py",
+ {}
+ ]
+ ],
"webdriver/tests/take_element_screenshot/screenshot.py": [
[
"webdriver/tests/take_element_screenshot/screenshot.py",
@@ -445078,6 +445277,12 @@
}
]
],
+ "webdriver/tests/take_screenshot/iframe.py": [
+ [
+ "webdriver/tests/take_screenshot/iframe.py",
+ {}
+ ]
+ ],
"webdriver/tests/take_screenshot/screenshot.py": [
[
"webdriver/tests/take_screenshot/screenshot.py",
@@ -445096,7 +445301,7 @@
},
"paths": {
".azure-pipelines.yml": [
- "0776b1994f7fe4defc3a9439a106eadfbcce8133",
+ "06fe7999246ee7af31d11d266ff6c51f17c1fe12",
"support"
],
".codecov.yml": [
@@ -455320,7 +455525,7 @@
"support"
],
"audio-output/idlharness.https.window.js": [
- "f10e523bcdc530ee1dbd04a52541ac0b343e9376",
+ "c13b167296d8059b96bfa4704714051e341ee987",
"testharness"
],
"audio-output/setSinkId-manual.https.html": [
@@ -455560,7 +455765,7 @@
"support"
],
"beacon/idlharness.any.js": [
- "958daf4865d1d7c9dfb621a163e15a8862330d2b",
+ "bf267ab8bdce52ce32df4ea3a53b30b6d35c8000",
"testharness"
],
"beacon/resources/beacon.py": [
@@ -553195,6 +553400,10 @@
"3ac9b655b0606783334ff91f9fba852df8efdbc1",
"support"
],
+ "css/css-font-loading/font-face-reject.html": [
+ "7b87a8121325f2e44d155df0c8d61f9ab48cb686",
+ "testharness"
+ ],
"css/css-font-loading/fontface-descriptor-updates-ref.html": [
"513867b3503042886e51312bcfec20967f7384d4",
"support"
@@ -564451,6 +564660,18 @@
"663e2638d8b4869561ea24748c8e54077079371c",
"testharness"
],
+ "css/css-inline/parsing/vertical-align-computed.html": [
+ "24225084721b17dd78182242172e2ded2620a623",
+ "testharness"
+ ],
+ "css/css-inline/parsing/vertical-align-invalid.html": [
+ "0565eb4a68d23514390b8b4af444a0ac15840e9f",
+ "testharness"
+ ],
+ "css/css-inline/parsing/vertical-align-valid.html": [
+ "d51c759dcc5d7f7e2820751e7a5a7f39dcf91bf1",
+ "testharness"
+ ],
"css/css-layout-api/META.yml": [
"c85c2d4ccc0b02f3e22ca444952fb7583d96e7c7",
"support"
@@ -566831,6 +567052,22 @@
"c30a19d001b530c304def61e1e6d55dc0f6b0318",
"testharness"
],
+ "css/css-multicol/animation/column-count-interpolation.html": [
+ "def34adc6c0ae83c3432b195663c877c28157a99",
+ "testharness"
+ ],
+ "css/css-multicol/animation/column-rule-color-interpolation.html": [
+ "060c8416ffbe2e227ddde74bac415976a9337bdb",
+ "testharness"
+ ],
+ "css/css-multicol/animation/column-rule-width.html": [
+ "d600d68ff1aa57c5fcb7759e7d3f3af0f119439c",
+ "testharness"
+ ],
+ "css/css-multicol/animation/column-width-interpolation.html": [
+ "fdb26353b4946423f236988da5075c2af7aa49d3",
+ "testharness"
+ ],
"css/css-multicol/balance-table-with-fractional-height-row.html": [
"434dc52ea3d731bd1393270372294cd007382e59",
"testharness"
@@ -567003,6 +567240,14 @@
"82931ac85165637a5114a8b41be14ccfcf2e1857",
"reftest"
],
+ "css/css-multicol/multicol-breaking-005-ref.html": [
+ "a22fda57c0b2759cce0e1e6ce72de7c07c22ed23",
+ "support"
+ ],
+ "css/css-multicol/multicol-breaking-005.html": [
+ "18a1b78fc9a20b4e1c0c7fb605928ba9b476d9a1",
+ "reftest"
+ ],
"css/css-multicol/multicol-breaking-nobackground-000-ref.html": [
"7a99354061cfeb982fffb921c850484dd02eac15",
"support"
@@ -567043,6 +567288,14 @@
"7b810423c91d862b80891902c4ba405975c0a493",
"reftest"
],
+ "css/css-multicol/multicol-breaking-nobackground-005-ref.html": [
+ "63296363bf99dfb790919cf04f022abeb8dd2419",
+ "support"
+ ],
+ "css/css-multicol/multicol-breaking-nobackground-005.html": [
+ "2065949cc92c19ee9816ac2bf10b6a35cfc9a54d",
+ "reftest"
+ ],
"css/css-multicol/multicol-clip-001-ref.xht": [
"d742ea716d38b186ce5598b4e7db28e6ae74985b",
"support"
@@ -573895,34 +574148,22 @@
"ee31847fddd16ec9d4a5b1e799c73461009f9e1a",
"testharness"
],
- "css/css-scroll-snap/parsing/scroll-margin-block-computed.html": [
- "b186e674ab7edbb15ebe2bb488f6833358dc5590",
+ "css/css-scroll-snap/parsing/scroll-margin-block-inline-computed.html": [
+ "3bb0e740acf187969777e470a8f7e9ee2a648b02",
"testharness"
],
- "css/css-scroll-snap/parsing/scroll-margin-block-invalid.html": [
- "371c933aa0e12115d85f540752a15c9f0a139208",
+ "css/css-scroll-snap/parsing/scroll-margin-block-inline-invalid.html": [
+ "b8a70b0d4890ab108de348f2866b79a2c3cea2c3",
"testharness"
],
- "css/css-scroll-snap/parsing/scroll-margin-block-valid.html": [
- "f4be8994f7ca1ded25510e78cb16bff683db7ae2",
+ "css/css-scroll-snap/parsing/scroll-margin-block-inline-valid.html": [
+ "e675eeb427064d51af1b9b0c2e29a812d0ae5fce",
"testharness"
],
"css/css-scroll-snap/parsing/scroll-margin-computed.html": [
"ae7b6de5ddabb9fe2af83996960483b8d29f5882",
"testharness"
],
- "css/css-scroll-snap/parsing/scroll-margin-inline-computed.html": [
- "d9854713b55fabe80af36c4457bd202bab4ac4a8",
- "testharness"
- ],
- "css/css-scroll-snap/parsing/scroll-margin-inline-invalid.html": [
- "eaeb97157a6287a967c07537d0ebbdb15ad6b49d",
- "testharness"
- ],
- "css/css-scroll-snap/parsing/scroll-margin-inline-valid.html": [
- "a29ede3d32fbcedeaee5c96fcb9fcf449ec97bc1",
- "testharness"
- ],
"css/css-scroll-snap/parsing/scroll-margin-invalid.html": [
"97beb0d295dcda5e18946bc1122a8aedc40ce796",
"testharness"
@@ -573931,36 +574172,24 @@
"be3499869159c5fb29f9859889f4f2354874853c",
"testharness"
],
- "css/css-scroll-snap/parsing/scroll-padding-block-computed.html": [
- "2021818dd33c246364c26a3ca4c182b7a4d252a8",
+ "css/css-scroll-snap/parsing/scroll-padding-block-inline-computed.html": [
+ "6a66110cda3b871c5130dae896d54766d96769de",
"testharness"
],
- "css/css-scroll-snap/parsing/scroll-padding-block-invalid.html": [
- "206e6f5da89a7cc1ae411b57652d7bf1e266844a",
+ "css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid.html": [
+ "da995cfcc07ad43a489aa4e0205fa24d6e435e39",
"testharness"
],
- "css/css-scroll-snap/parsing/scroll-padding-block-valid.html": [
- "79f675acd5b530db6f0fc6d31a5f059651c8b1f6",
+ "css/css-scroll-snap/parsing/scroll-padding-block-inline-valid.html": [
+ "a932bb6393db62a000092276128d9934b269fc25",
"testharness"
],
"css/css-scroll-snap/parsing/scroll-padding-computed.html": [
"f638138a7fdd5e84930cac36ea9bab56177fd5dd",
"testharness"
],
- "css/css-scroll-snap/parsing/scroll-padding-inline-computed.html": [
- "b70cf01b6fe227658f9df2b330856030d7cf8a70",
- "testharness"
- ],
- "css/css-scroll-snap/parsing/scroll-padding-inline-invalid.html": [
- "0cf3fa7353f7123d0f27573c610ce42638c59d40",
- "testharness"
- ],
- "css/css-scroll-snap/parsing/scroll-padding-inline-valid.html": [
- "3fb9003585a9d9cb4af7891cd77ca91f3b8f42c0",
- "testharness"
- ],
"css/css-scroll-snap/parsing/scroll-padding-invalid.html": [
- "e060fcdc0ec064a255ff496fd329fab9917b73b4",
+ "c805ee2e55eda1ba713b5ba5432c8120410cdcbd",
"testharness"
],
"css/css-scroll-snap/parsing/scroll-padding-valid.html": [
@@ -574287,6 +574516,18 @@
"2e433aa66f914de66e36f0f4f99237254a7def29",
"support"
],
+ "css/css-shapes/animation/shape-image-threshold-interpolation.html": [
+ "edac744592f76704ba82b0c4a7e5a53c7db6ba79",
+ "testharness"
+ ],
+ "css/css-shapes/animation/shape-margin-interpolation.html": [
+ "48b3d0c460794b18261ce7a6beedf980d8335d36",
+ "testharness"
+ ],
+ "css/css-shapes/animation/shape-outside-interpolation.html": [
+ "3380acdba00db8e9440b33c60275f6fd6340d345",
+ "testharness"
+ ],
"css/css-shapes/basic-shape-circle-ellipse-serialization.html": [
"5e4842d234f6af393a5ee04fa604a63f6db5cae1",
"testharness"
@@ -618423,6 +618664,10 @@
"277ccb047abb1b54448a3be76722412e0ddb1979",
"support"
],
+ "docs/running-tests/android_webview.md": [
+ "5d1cb26ecafa7fc4d1dd3644e3be1d53d2d0e7fb",
+ "support"
+ ],
"docs/running-tests/chrome.md": [
"c56d3c56f846f0318e452765192df27beb05e2b9",
"support"
@@ -618440,7 +618685,7 @@
"support"
],
"docs/running-tests/from-local-system.md": [
- "97a6b9e940f716877b33e546cb657e1462293c87",
+ "35c1905a0c5690171489e93e1635c793433c402a",
"support"
],
"docs/running-tests/from-web.md": [
@@ -618899,12 +619144,16 @@
"921fa07b3f6de0f9a579b75b14d6509039765205",
"testharness"
],
- "dom/interface-objects.html": [
- "936d63517eada5521f814fabdbd785a57b9640b2",
+ "dom/idlharness.any.js": [
+ "5119f9f975414e4ef930026da6b83bbb1394017b",
"testharness"
],
- "dom/interfaces.html": [
- "111608bcaec1c39fa832474ebe014e8730a40c4e",
+ "dom/idlharness.window.js": [
+ "7d87aeaa337ed7709875428641f78107395d9317",
+ "testharness"
+ ],
+ "dom/interface-objects.html": [
+ "936d63517eada5521f814fabdbd785a57b9640b2",
"testharness"
],
"dom/lists/DOMTokenList-Iterable.html": [
@@ -619819,6 +620068,10 @@
"8d9ce2e3ff604ee43807ee0eb1962870439725a9",
"testharness"
],
+ "dom/nodes/aria-element-reflection.tentative.html": [
+ "974727f92aa315d727295fcf7b650bc24c507aab",
+ "testharness"
+ ],
"dom/nodes/attributes.html": [
"dac191b54cb2cafdaf9a71a297d130e571cd5230",
"testharness"
@@ -622896,7 +623149,7 @@
"testharness"
],
"encrypted-media/idlharness.https.html": [
- "6a2ae80a5384aa885d7a1545b19f41cc828c420e",
+ "b501bde9d25511b2ac38e0431b9211ed6083a4bf",
"testharness"
],
"encrypted-media/polyfill/cast-polyfill.js": [
@@ -623279,14 +623532,14 @@
"aa27fb61c310d91b629ff0d7b19cd01ce469e645",
"support"
],
- "event-timing/bufferbeforeonload.html": [
- "4b003a98f64ed99266f9bb12c09c4b5cde5afa32",
- "testharness"
- ],
"event-timing/buffered-flag.html": [
"b9c63ffd8fdd6dca11211376538c65fa9571c437",
"testharness"
],
+ "event-timing/click-timing.html": [
+ "afe53bfc23c943a3f3a3679dffbab5edcf5a27ea",
+ "testharness"
+ ],
"event-timing/crossiframe.html": [
"bb19c82a2a1d64e5edcdc965812488aab1a73652",
"testharness"
@@ -623299,18 +623552,6 @@
"8b5b6ed91369e1541eb2ccc644ba260627a4ced7",
"manual"
],
- "event-timing/observethenonload.html": [
- "8295aaf04128c3998a6ce30703bcf85c99a49865",
- "testharness"
- ],
- "event-timing/onloadthenobserve-firstInput.html": [
- "3cd80e2eba1a748a68151a8bf45cfdc93a7b3f71",
- "testharness"
- ],
- "event-timing/onloadthenobserve.html": [
- "4365f4837bcceb070f683db2ee1d2f2a7ea050d6",
- "testharness"
- ],
"event-timing/only-observe-firstInput.html": [
"48df6ec9fc65a9eb8c4adf62f5fc7219b7c5a056",
"testharness"
@@ -627176,7 +627417,7 @@
"testharness"
],
"geolocation-API/idlharness.window.js": [
- "f8c92c121352b6daffe3c3b289f49d3572292c10",
+ "fe4ac8895dfb6e889eded7d694e3c87905868b4f",
"testharness"
],
"geolocation-API/support.js": [
@@ -631520,7 +631761,7 @@
"testharness"
],
"html/dom/interfaces.worker.js": [
- "f49198cd5c67a603f6fcd1fe33fdc9dd76b1f06b",
+ "b720d54f3d953633bd7abd1e73097a31a369e825",
"testharness"
],
"html/dom/new-harness.js": [
@@ -637403,6 +637644,14 @@
"eea1efe51d3c5d52aaa0c5147ffbc5945c71a3fd",
"testharness"
],
+ "html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html": [
+ "b432698f210db32367c5b71bd5478a1b4adc33c4",
+ "testharness"
+ ],
+ "html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html": [
+ "2914f1f77f554ae29313ec982cae4b1b80f48071",
+ "testharness"
+ ],
"html/semantics/document-metadata/the-base-element/example.html": [
"49dc772f9161d60b63eb910e9f286f27bbdbdd76",
"support"
@@ -647712,11 +647961,11 @@
"testharness"
],
"inert/inert-retargeting-iframe.tentative.html": [
- "c31cc88ccecce9212a0e7771c6cfe46479908d66",
+ "ddcb3ccb0d2c851fe3f1d07169de839465d12354",
"testharness"
],
"inert/inert-retargeting.tentative.html": [
- "6ef3b2a1b1b7ededf6072156bb85fc5b22d885fe",
+ "2280cf5a5d1fb16ef192310e4fb4f7d22b3702b3",
"testharness"
],
"infrastructure/META.yml": [
@@ -647851,7 +648100,7 @@
"472b33f7764bde6e2aea7bc2ccd8bf3739babad2",
"support"
],
- "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html": [
+ "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html.ini": [
"69dc018f38990001626df54f1d067efd3421fdd0",
"support"
],
@@ -648236,7 +648485,7 @@
"support"
],
"interfaces/IndexedDB.idl": [
- "f2625ebe53ddde37b5625802b7a417220e7cafbd",
+ "a8ef47e89ab707f037364afdccbbf572a6c1450a",
"support"
],
"interfaces/InputDeviceCapabilities.idl": [
@@ -648395,10 +648644,6 @@
"dc9b78fda6180dba6b7958c3429a77e0fb5048b2",
"support"
],
- "interfaces/dedicated-workers.idl": [
- "8d7255f2a564e3dd648592db59e84dc3529359d1",
- "support"
- ],
"interfaces/dom.idl": [
"285e5f00b87e4033374024f705ccc78cd56364c7",
"support"
@@ -648484,7 +648729,7 @@
"support"
],
"interfaces/input-events.idl": [
- "c10aa32bed093a27df7993d1d384a926b7a65536",
+ "5ddaae5b9d3db83caca699c847373e7deb421ac4",
"support"
],
"interfaces/intersection-observer.idl": [
@@ -648640,7 +648885,7 @@
"support"
],
"interfaces/requestidlecallback.idl": [
- "812cc0ef81533136f537b2591cf6c1774bf525ba",
+ "c763b50bde782bb484564b49e25068fff88f782b",
"support"
],
"interfaces/resize-observer.idl": [
@@ -649440,7 +649685,7 @@
"testharness"
],
"lint.whitelist": [
- "a6aa9466810d226208051c597a8c6c3c24337c1e",
+ "8ff3b81893231ad409e4dd41378a7826a848afb0",
"support"
],
"loading/lazyload/common.js": [
@@ -650804,7 +651049,7 @@
"support"
],
"media-source/idlharness.window.js": [
- "28da56b32e692b0a43f9ab7e49cb395cba91ec6a",
+ "9300f67fe04f21454a96bb14f6f0b8a059d8e00d",
"testharness"
],
"media-source/import_tests.sh": [
@@ -651396,7 +651641,7 @@
"manual"
],
"mediacapture-depth/idlharness.html": [
- "1afc6e5a05b2b8e0a288e7b680cf2920bdd1c525",
+ "963229aaca31dd8b92a07e1bb1da4c3eace7ad5b",
"testharness"
],
"mediacapture-fromelement/META.yml": [
@@ -651712,7 +651957,7 @@
"testharness"
],
"mediacapture-streams/idlharness.https.window.js": [
- "5b255fca6b0b770ab6f849afe5d657c66052215a",
+ "594e1121b005ea3cd7ef1f30aa15fbed07dff1a4",
"testharness"
],
"mediasession/META.yml": [
@@ -661356,7 +661601,7 @@
"manual"
],
"orientation-event/idlharness.https.window.js": [
- "ed8309d6480eaaec45e986a3391854d67b01ba2d",
+ "55cfed9276b480d7f70c616fa8d815f6ec925d66",
"testharness"
],
"orientation-event/ondeviceorientationabsolute.https.html": [
@@ -662324,7 +662569,7 @@
"support"
],
"permissions/interfaces.any.js": [
- "b93453886930679c557a5c4a01651150b82670d9",
+ "ff0a969badace39c3c4466c4528e30c21355e132",
"testharness"
],
"permissions/test-background-fetch-permission.html": [
@@ -672692,7 +672937,7 @@
"testharness"
],
"requestidlecallback/idlharness.window.js": [
- "2c9f6593208a4070d590fd81854ee78c5d20ce4d",
+ "69cd5a49b0432a65db9da267248a6f97d93cd0b9",
"testharness"
],
"requestidlecallback/resources/post_name_on_load.html": [
@@ -674264,7 +674509,7 @@
"testharness"
],
"server-timing/idlharness.https.any.js": [
- "9c101e0f4cf2c5ef0196ac18342c8329755f794e",
+ "ded320f0f61f4de1132d5cfb76a7e74a16154f3c",
"testharness"
],
"server-timing/navigation_timing_idl.https.html": [
@@ -675736,7 +675981,7 @@
"testharness"
],
"service-workers/service-worker/interfaces-sw.https.html": [
- "73ffb28b36ea38b7230a7042feb444fde0bcf2e9",
+ "7bff6ac107e3de0ae1207f477b9f940ad404cd21",
"testharness"
],
"service-workers/service-worker/interfaces-window.https.html": [
@@ -676676,7 +676921,7 @@
"support"
],
"service-workers/service-worker/resources/interfaces-worker.sub.js": [
- "56bc8af445d5e7900b4573c35e6d680eff16c671",
+ "ac79ddc005688affe9acc67b83f43ef304f81c81",
"support"
],
"service-workers/service-worker/resources/invalid-blobtype-iframe.https.html": [
@@ -679252,7 +679497,7 @@
"testharness"
],
"streams/writable-streams/aborting.any.js": [
- "ea47a55fa9ff61cdc2f0ac3caca1e98c7b2c719d",
+ "2f806464e1fdc40ab281062336f8b80a32c9d1ad",
"testharness"
],
"streams/writable-streams/bad-strategies.any.js": [
@@ -679264,7 +679509,7 @@
"testharness"
],
"streams/writable-streams/brand-checks.any.js": [
- "66296ab3d356446b95b3b5aef30026a31a8eb092",
+ "17179e7936eda23a284e447bf9b877270016931d",
"testharness"
],
"streams/writable-streams/byte-length-queuing-strategy.any.js": [
@@ -679272,7 +679517,7 @@
"testharness"
],
"streams/writable-streams/close.any.js": [
- "284bb16e1f5c6dca8e3657b85c42193f52ef3ac2",
+ "0762b83e5d1476c5e70d89957e784fc9d2f80cd0",
"testharness"
],
"streams/writable-streams/constructor.any.js": [
@@ -679296,7 +679541,7 @@
"testharness"
],
"streams/writable-streams/properties.any.js": [
- "b991795a1898e9b1d479d1497009b889f0d786ce",
+ "81b40683c8b3cab4719ca53ac974c83548dca7ae",
"testharness"
],
"streams/writable-streams/reentrant-strategy.any.js": [
@@ -679783,6 +680028,10 @@
"40aa3461866cf4c32316d86216dcfe4298be7718",
"testharness"
],
+ "svg/animations/spaces-at-end-of-path-data.html": [
+ "235259beccadb2a7d52097918dbde91c07a49b5e",
+ "testharness"
+ ],
"svg/animations/svgangle-animation-deg-to-grad.html": [
"7a8146336879a8dccaf8e663d7556e408a8e0048",
"testharness"
@@ -683239,6 +683488,14 @@
"b05a69f10b9e3614f7a588998ea06879df437da7",
"testharness"
],
+ "svg/pservers/parsing/stop-color-invalid.svg": [
+ "4eee5444867f6670155327d357dbe3feaea3b309",
+ "testharness"
+ ],
+ "svg/pservers/parsing/stop-color-valid.svg": [
+ "80d6c23b83c35f6dfdbff49cce6fedd9066c77bd",
+ "testharness"
+ ],
"svg/pservers/parsing/stop-opacity-computed.svg": [
"1ad1e98c5a84ebad5e0129164e0d5616b72e36fc",
"testharness"
@@ -689520,7 +689777,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/executorwebdriver.py": [
- "898447df6f5b8059a209863f6b4f15f326ebd850",
+ "99d46108eb0ca8f21bed854a7c1fb3278e5e7351",
"support"
],
"tools/wptrunner/wptrunner/executors/executorwebkit.py": [
@@ -689736,7 +689993,7 @@
"support"
],
"tools/wptrunner/wptrunner/webdriver_server.py": [
- "be991701434c3e693994ef4d274bd53f81a41439",
+ "8b711272c7befe890fab4824868118fc13275eca",
"support"
],
"tools/wptrunner/wptrunner/wptcommandline.py": [
@@ -695368,11 +695625,15 @@
"wdspec"
],
"webdriver/tests/take_element_screenshot/__init__.py": [
- "cf3b21905b774d55e7aed660fd232d60a7f99973",
+ "9de8792460797f4a31ee50d112c7132a2c2714ad",
"support"
],
+ "webdriver/tests/take_element_screenshot/iframe.py": [
+ "d081a14cdeb56d43ee7d10e5b3ec23a53c98bedc",
+ "wdspec"
+ ],
"webdriver/tests/take_element_screenshot/screenshot.py": [
- "35a1ffe75f042b6e2a995cf980ecaa19e97590e3",
+ "fd460b656ae307a289174f9180ecc9ed23f0da07",
"wdspec"
],
"webdriver/tests/take_element_screenshot/user_prompts.py": [
@@ -695380,11 +695641,15 @@
"wdspec"
],
"webdriver/tests/take_screenshot/__init__.py": [
- "fe057a4932ef8202a685d4b580e6c49d67a40c1d",
+ "c07f8d167030d03abbb263ef08d8846bb7a71eba",
"support"
],
+ "webdriver/tests/take_screenshot/iframe.py": [
+ "5206f2fa1736f118e5a4b06906325da0e06158b3",
+ "wdspec"
+ ],
"webdriver/tests/take_screenshot/screenshot.py": [
- "07879530120dfbf8203fe8c4827d2bf36fb3eedb",
+ "ca6e0272637d6b43413a733725299655858b4367",
"wdspec"
],
"webdriver/tests/take_screenshot/user_prompts.py": [
@@ -695528,7 +695793,7 @@
"support"
],
"webgpu/framework/version.js": [
- "b9ec1b4f9f36069cd843e2f275723c9000a849fb",
+ "9be025609f36ae16b7395de98c355f6872a9d660",
"support"
],
"webgpu/runtime/wpt.js": [
@@ -695572,11 +695837,11 @@
"support"
],
"webgpu/suites/cts/command_buffer/render/basic.spec.js": [
- "bb201dbe846a7113b32dbeb4b2c3cbe5ba39e8b5",
+ "83bb026d963d105e3e73ae118664d9951d246710",
"support"
],
"webgpu/suites/cts/command_buffer/render/rendering.spec.js": [
- "762285d1bcccc81f5b7c4a389cf16523451f5927",
+ "c8a7d7f5738b6efd199e96fadb937a64bd603d99",
"support"
],
"webgpu/suites/cts/examples.spec.js": [
@@ -701520,7 +701785,7 @@
"support"
],
"workers/README.md": [
- "b78a05ebdbe81f7a5d46082ccfa2fed771fe63b1",
+ "58ee7cca1ab3e9856e380eaccde042d5700c2603",
"support"
],
"workers/SharedWorker-MessageEvent-source.any.js": [
@@ -702179,10 +702444,6 @@
"04c63a3a5f6d9bd3b71d94142f65a1825358b8ed",
"testharness"
],
- "workers/interfaces.worker.js": [
- "fc9f3606faee5aa65ceeae002e2c8398a4092109",
- "testharness"
- ],
"workers/interfaces/DedicatedWorkerGlobalScope/EventTarget.worker.js": [
"954c46c07ecabc47c3c79dadc1052e13382f66e1",
"testharness"
diff --git a/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini b/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini
deleted file mode 100644
index e6e1f29e274..00000000000
--- a/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[matchMedia-display-none-iframe.html]
- expected: ERROR
diff --git a/tests/wpt/metadata/dom/idlharness.any.js.ini b/tests/wpt/metadata/dom/idlharness.any.js.ini
new file mode 100644
index 00000000000..8e43fa29136
--- /dev/null
+++ b/tests/wpt/metadata/dom/idlharness.any.js.ini
@@ -0,0 +1,131 @@
+[idlharness.any.worker.html]
+ [AbortController interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [Event interface: new CustomEvent("foo") must inherit property "srcElement" with the proper type]
+ expected: FAIL
+
+ [Event interface: new Event("foo") must inherit property "composed" with the proper type]
+ expected: FAIL
+
+ [EventTarget interface: new AbortController().signal must inherit property "addEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type]
+ expected: FAIL
+
+ [Event interface: operation composedPath()]
+ expected: FAIL
+
+ [AbortSignal must be primary interface of new AbortController().signal]
+ expected: FAIL
+
+ [AbortController interface object name]
+ expected: FAIL
+
+ [Event interface: new Event("foo") must inherit property "srcElement" with the proper type]
+ expected: FAIL
+
+ [Event interface: attribute composed]
+ expected: FAIL
+
+ [AbortSignal interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [AbortController interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [Stringification of new AbortController().signal]
+ expected: FAIL
+
+ [AbortSignal interface: existence and properties of interface object]
+ expected: FAIL
+
+ [CustomEvent interface: operation initCustomEvent(DOMString, boolean, boolean, any)]
+ expected: FAIL
+
+ [EventTarget interface: new AbortController().signal must inherit property "removeEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type]
+ expected: FAIL
+
+ [EventTarget interface: new AbortController().signal must inherit property "dispatchEvent(Event)" with the proper type]
+ expected: FAIL
+
+ [Event interface: attribute srcElement]
+ expected: FAIL
+
+ [EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new AbortController().signal with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [AbortSignal interface: new AbortController().signal must inherit property "aborted" with the proper type]
+ expected: FAIL
+
+ [AbortSignal interface object name]
+ expected: FAIL
+
+ [AbortSignal interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [Event interface: new CustomEvent("foo") must inherit property "composed" with the proper type]
+ expected: FAIL
+
+ [Stringification of new AbortController()]
+ expected: FAIL
+
+ [AbortController interface: new AbortController() must inherit property "signal" with the proper type]
+ expected: FAIL
+
+ [AbortController interface: operation abort()]
+ expected: FAIL
+
+ [AbortController interface: existence and properties of interface object]
+ expected: FAIL
+
+ [AbortSignal interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [AbortController interface: new AbortController() must inherit property "abort()" with the proper type]
+ expected: FAIL
+
+ [AbortSignal interface: attribute aborted]
+ expected: FAIL
+
+ [AbortController interface: attribute signal]
+ expected: FAIL
+
+ [AbortSignal interface: new AbortController().signal must inherit property "onabort" with the proper type]
+ expected: FAIL
+
+ [Event interface: new CustomEvent("foo") must inherit property "composedPath()" with the proper type]
+ expected: FAIL
+
+ [AbortController interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new AbortController().signal with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [AbortSignal interface: attribute onabort]
+ expected: FAIL
+
+ [AbortController interface object length]
+ expected: FAIL
+
+ [AbortSignal interface object length]
+ expected: FAIL
+
+ [EventTarget interface: calling dispatchEvent(Event) on new AbortController().signal with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Event interface: new Event("foo") must inherit property "composedPath()" with the proper type]
+ expected: FAIL
+
+ [AbortController must be primary interface of new AbortController()]
+ expected: FAIL
+
+
+[idlharness.any.sharedworker.html]
+ [idlharness]
+ expected: FAIL
+
+
+[idlharness.any.serviceworker.html]
+ [idlharness]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/dom/idlharness.window.js.ini b/tests/wpt/metadata/dom/idlharness.window.js.ini
new file mode 100644
index 00000000000..4731be73de9
--- /dev/null
+++ b/tests/wpt/metadata/dom/idlharness.window.js.ini
@@ -0,0 +1,543 @@
+[idlharness.window.html?include=Node]
+ [Node interface: calling isSameNode(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "TEXT_NODE" with the proper type]
+ expected: FAIL
+
+ [Node interface: calling removeChild(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Node interface: calling isEqualNode(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "lookupPrefix(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "nextSibling" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "isSameNode(Node)" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "nodeType" with the proper type]
+ expected: FAIL
+
+ [Node interface: calling replaceChild(Node, Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type]
+ expected: FAIL
+
+ [Node interface: calling getRootNode(GetRootNodeOptions) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "cloneNode(boolean)" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "ENTITY_NODE" with the proper type]
+ expected: FAIL
+
+ [Node interface: calling contains(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "CDATA_SECTION_NODE" with the proper type]
+ expected: FAIL
+
+ [Node interface: calling cloneNode(boolean) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "appendChild(Node)" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "parentNode" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "removeChild(Node)" with the proper type]
+ expected: FAIL
+
+ [Node interface: element must inherit property "isConnected" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.createComment("abc") must inherit property "isConnected" with the proper type]
+ expected: FAIL
+
+ [Node interface: calling lookupPrefix(DOMString) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type]
+ expected: FAIL
+
+ [Node interface: new Document() must inherit property "isConnected" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "baseURI" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "compareDocumentPosition(Node)" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "replaceChild(Node, Node)" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "isEqualNode(Node)" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "COMMENT_NODE" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "ATTRIBUTE_NODE" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_NODE" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "childNodes" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.createTextNode("abc") must inherit property "isConnected" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.doctype must inherit property "isConnected" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "parentElement" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "isDefaultNamespace(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Node interface: calling isDefaultNamespace(DOMString) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "ownerDocument" with the proper type]
+ expected: FAIL
+
+ [Node interface: calling appendChild(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Node interface: calling insertBefore(Node, Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "ELEMENT_NODE" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "lookupNamespaceURI(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.createDocumentFragment() must inherit property "isConnected" with the proper type]
+ expected: FAIL
+
+ [Node interface: calling lookupNamespaceURI(DOMString) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "isConnected" with the proper type]
+ expected: FAIL
+
+ [Node interface: xmlDoc must inherit property "isConnected" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "firstChild" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "normalize()" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "contains(Node)" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "getRootNode(GetRootNodeOptions)" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_TYPE_NODE" with the proper type]
+ expected: FAIL
+
+ [Node interface: attribute isConnected]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "hasChildNodes()" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "isConnected" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "lastChild" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "previousSibling" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "insertBefore(Node, Node)" with the proper type]
+ expected: FAIL
+
+ [Node interface: calling compareDocumentPosition(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "ENTITY_REFERENCE_NODE" with the proper type]
+ expected: FAIL
+
+ [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "NOTATION_NODE" with the proper type]
+ expected: FAIL
+
+
+[idlharness.window.html?exclude=Node]
+ [Event interface: new CustomEvent("foo") must inherit property "srcElement" with the proper type]
+ expected: FAIL
+
+ [EventTarget interface: new AbortController().signal must inherit property "addEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type]
+ expected: FAIL
+
+ [Text interface: document.createTextNode("abc") must inherit property "assignedSlot" with the proper type]
+ expected: FAIL
+
+ [AbortSignal must be primary interface of new AbortController().signal]
+ expected: FAIL
+
+ [Element interface: element must inherit property "assignedSlot" with the proper type]
+ expected: FAIL
+
+ [StaticRange interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [AbortController interface object name]
+ expected: FAIL
+
+ [Event interface: attribute composed]
+ expected: FAIL
+
+ [Element interface: operation after([object Object\],[object Object\])]
+ expected: FAIL
+
+ [Text interface: attribute assignedSlot]
+ expected: FAIL
+
+ [AbortSignal interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [DOMTokenList interface: iterable<DOMString>]
+ expected: FAIL
+
+ [Document interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [AbortSignal interface: existence and properties of interface object]
+ expected: FAIL
+
+ [Element interface: attribute shadowRoot]
+ expected: FAIL
+
+ [Element interface: operation append([object Object\],[object Object\])]
+ expected: FAIL
+
+ [StaticRange interface object name]
+ expected: FAIL
+
+ [Document interface: attribute origin]
+ expected: FAIL
+
+ [Document interface: operation append([object Object\],[object Object\])]
+ expected: FAIL
+
+ [EventTarget interface: new AbortController().signal must inherit property "removeEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type]
+ expected: FAIL
+
+ [EventTarget interface: new AbortController().signal must inherit property "dispatchEvent(Event)" with the proper type]
+ expected: FAIL
+
+ [EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new AbortController().signal with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [AbstractRange interface: attribute startContainer]
+ expected: FAIL
+
+ [AbortSignal interface object name]
+ expected: FAIL
+
+ [Event interface: new CustomEvent("foo") must inherit property "composed" with the proper type]
+ expected: FAIL
+
+ [DOMTokenList interface: document.body.classList must inherit property "supports(DOMString)" with the proper type]
+ expected: FAIL
+
+ [StaticRange interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [Element interface: operation attachShadow(ShadowRootInit)]
+ expected: FAIL
+
+ [Event interface: new CustomEvent("foo") must inherit property "composedPath()" with the proper type]
+ expected: FAIL
+
+ [AbortController interface: operation abort()]
+ expected: FAIL
+
+ [AbortController interface: existence and properties of interface object]
+ expected: FAIL
+
+ [CharacterData interface: operation replaceWith([object Object\],[object Object\])]
+ expected: FAIL
+
+ [AbortController interface: attribute signal]
+ expected: FAIL
+
+ [EventTarget interface: document.querySelector("[id\]").attributes[0\] must inherit property "dispatchEvent(Event)" with the proper type]
+ expected: FAIL
+
+ [Element interface: calling attachShadow(ShadowRootInit) on element with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new AbortController().signal with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [DocumentType interface: operation replaceWith([object Object\],[object Object\])]
+ expected: FAIL
+
+ [StaticRange interface: existence and properties of interface object]
+ expected: FAIL
+
+ [Event interface: new Event("foo") must inherit property "composedPath()" with the proper type]
+ expected: FAIL
+
+ [AbortSignal interface: attribute aborted]
+ expected: FAIL
+
+ [AbstractRange interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [Event interface: operation composedPath()]
+ expected: FAIL
+
+ [EventTarget interface: calling dispatchEvent(Event) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [AbstractRange interface: attribute endContainer]
+ expected: FAIL
+
+ [Event interface: new Event("foo") must inherit property "srcElement" with the proper type]
+ expected: FAIL
+
+ [AbortController must be primary interface of new AbortController()]
+ expected: FAIL
+
+ [AbortController interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [EventTarget interface: document.querySelector("[id\]").attributes[0\] must inherit property "removeEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type]
+ expected: FAIL
+
+ [CharacterData interface: operation remove()]
+ expected: FAIL
+
+ [Event interface: attribute srcElement]
+ expected: FAIL
+
+ [Range interface: existence and properties of interface object]
+ expected: FAIL
+
+ [CharacterData interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [Element interface: element must inherit property "attachShadow(ShadowRootInit)" with the proper type]
+ expected: FAIL
+
+ [Element interface: element must inherit property "slot" with the proper type]
+ expected: FAIL
+
+ [AbstractRange interface object length]
+ expected: FAIL
+
+ [AbortController interface: new AbortController() must inherit property "signal" with the proper type]
+ expected: FAIL
+
+ [DocumentType interface: operation before([object Object\],[object Object\])]
+ expected: FAIL
+
+ [AbortSignal interface object length]
+ expected: FAIL
+
+ [Window interface: attribute event]
+ expected: FAIL
+
+ [AbortController interface: new AbortController() must inherit property "abort()" with the proper type]
+ expected: FAIL
+
+ [AbstractRange interface: attribute collapsed]
+ expected: FAIL
+
+ [AbstractRange interface: attribute startOffset]
+ expected: FAIL
+
+ [Document interface: operation prepend([object Object\],[object Object\])]
+ expected: FAIL
+
+ [DocumentType interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [AbortController interface object length]
+ expected: FAIL
+
+ [Range interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [Element interface: operation before([object Object\],[object Object\])]
+ expected: FAIL
+
+ [AbstractRange interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [DOMTokenList interface: operation supports(DOMString)]
+ expected: FAIL
+
+ [EventTarget interface: calling dispatchEvent(Event) on new AbortController().signal with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [AbstractRange interface: existence and properties of interface object]
+ expected: FAIL
+
+ [AbortController interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [CustomEvent interface: operation initCustomEvent(DOMString, boolean, boolean, any)]
+ expected: FAIL
+
+ [Element interface: attribute slot]
+ expected: FAIL
+
+ [AbstractRange interface object name]
+ expected: FAIL
+
+ [DocumentFragment interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [AbortSignal interface: new AbortController().signal must inherit property "aborted" with the proper type]
+ expected: FAIL
+
+ [Element interface: operation prepend([object Object\],[object Object\])]
+ expected: FAIL
+
+ [Event interface: document.createEvent("Event") must inherit property "composedPath()" with the proper type]
+ expected: FAIL
+
+ [DOMTokenList interface: calling supports(DOMString) on document.body.classList with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [StaticRange interface object length]
+ expected: FAIL
+
+ [DocumentType interface: operation after([object Object\],[object Object\])]
+ expected: FAIL
+
+ [AbortSignal interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object\],[object Object\]) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: xmlDoc must inherit property "origin" with the proper type]
+ expected: FAIL
+
+ [AbortSignal interface: new AbortController().signal must inherit property "onabort" with the proper type]
+ expected: FAIL
+
+ [AbortController interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [AbortSignal interface: attribute onabort]
+ expected: FAIL
+
+ [EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object\],[object Object\]) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [AbortSignal interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [Event interface: new Event("foo") must inherit property "composed" with the proper type]
+ expected: FAIL
+
+ [NodeFilter interface: existence and properties of interface object]
+ expected: FAIL
+
+ [Element interface: attribute assignedSlot]
+ expected: FAIL
+
+ [Element interface: operation remove()]
+ expected: FAIL
+
+ [AbstractRange interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [Stringification of new AbortController().signal]
+ expected: FAIL
+
+ [DocumentFragment interface: operation prepend([object Object\],[object Object\])]
+ expected: FAIL
+
+ [DocumentFragment interface: operation append([object Object\],[object Object\])]
+ expected: FAIL
+
+ [AbstractRange interface: attribute endOffset]
+ expected: FAIL
+
+ [NodeList interface: iterable<Node>]
+ expected: FAIL
+
+ [CharacterData interface: operation before([object Object\],[object Object\])]
+ expected: FAIL
+
+ [EventTarget interface: document.querySelector("[id\]").attributes[0\] must inherit property "addEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type]
+ expected: FAIL
+
+ [Stringification of new AbortController()]
+ expected: FAIL
+
+ [CharacterData interface: operation after([object Object\],[object Object\])]
+ expected: FAIL
+
+ [StaticRange interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [Event interface: document.createEvent("Event") must inherit property "composed" with the proper type]
+ expected: FAIL
+
+ [Attr interface: existence and properties of interface object]
+ expected: FAIL
+
+ [DocumentType interface: operation remove()]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "origin" with the proper type]
+ expected: FAIL
+
+ [Element interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [Attr interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [Event interface: document.createEvent("Event") must inherit property "srcElement" with the proper type]
+ expected: FAIL
+
+ [Element interface: operation replaceWith([object Object\],[object Object\])]
+ expected: FAIL
+
+ [Element interface: element must inherit property "shadowRoot" with the proper type]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/dom/nodes/aria-element-reflection.tentative.html.ini b/tests/wpt/metadata/dom/nodes/aria-element-reflection.tentative.html.ini
new file mode 100644
index 00000000000..606c3e6418e
--- /dev/null
+++ b/tests/wpt/metadata/dom/nodes/aria-element-reflection.tentative.html.ini
@@ -0,0 +1,28 @@
+[aria-element-reflection.tentative.html]
+ [aria-activedescendant element reflection]
+ expected: FAIL
+
+ [Deleting a reflected element should return null for the IDL attribute and cause the content attribute to become stale.]
+ expected: FAIL
+
+ [If the content attribute is set directly, the IDL attribute getter always returns the first element whose ID matches the content attribute.]
+ expected: FAIL
+
+ [Changing the ID of an element causes the content attribute to become out of sync.]
+ expected: FAIL
+
+ [aria-errormessage]
+ expected: FAIL
+
+ [Setting an element reference that crosses into a shadow tree is disallowed, but setting one that is in a shadow inclusive ancestor is allowed.]
+ expected: FAIL
+
+ [Setting the IDL attribute to an element which is not the first element in DOM order with its ID causes the content attribute to be an empty string]
+ expected: FAIL
+
+ [aria-details]
+ expected: FAIL
+
+ [Reparenting an element into a descendant shadow scope nullifies the element reference.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index 14a49ab586d..72cf300d494 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -315,18 +315,12 @@
[<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;x=" text/plain]
+ [<iframe>: separate response Content-Type: text/html */*]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;" text/plain]
- expected: FAIL
-
- [<iframe>: combined response Content-Type: */* text/html]
- expected: FAIL
-
- [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
index b4bec16ae8a..279734168dc 100644
--- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
@@ -56,9 +56,6 @@
[separate text/javascript x/x]
expected: FAIL
- [separate text/javascript;charset=windows-1252 error text/javascript]
- expected: FAIL
-
- [separate text/javascript; charset=windows-1252 text/javascript]
+ [separate text/javascript;charset=windows-1252 text/javascript]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
index 48331a02f78..87c807a49ff 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,9 +11,3 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
- [X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
- expected: FAIL
-
- [X-Content-Type-Options%3A%20'NosniFF']
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
new file mode 100644
index 00000000000..87b07c3e670
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_1.html]
+ [Multiple history traversals from the same task]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
deleted file mode 100644
index dc2e45516de..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_5.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
index 16fa2c5cfc1..dec4c579137 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
@@ -1,4 +1,5 @@
[creating_browsing_context_test_01.html]
+ expected: TIMEOUT
[first argument: absolute url]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
index bf50d59df41..e02f179ec25 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
@@ -1,5 +1,24 @@
[open-features-negative-innerwidth-innerheight.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
expected: FAIL
+ [features "innerheight=-404.5" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "innerwidth=-404.5" should NOT set "width=404"]
+ expected: TIMEOUT
+
+ [features "innerwidth=-404" should NOT set "width=404"]
+ expected: TIMEOUT
+
+ [features "innerheight=-404e1" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "innerheight=-404" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "innerwidth=-404e1" should NOT set "width=404"]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
index e150c9d848f..23eefb8eaf9 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
@@ -1,5 +1,24 @@
[open-features-negative-screenx-screeny.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `screenx`, `screeny`]
expected: FAIL
+ [features "screenx=-204" should NOT set "left=204"]
+ expected: TIMEOUT
+
+ [features "screeny=-204" should NOT set "top=204"]
+ expected: TIMEOUT
+
+ [features "screeny=-204.5" should NOT set "top=204"]
+ expected: TIMEOUT
+
+ [features "screeny=-0" should NOT set "top=204"]
+ expected: TIMEOUT
+
+ [features "screenx=-0" should NOT set "left=204"]
+ expected: TIMEOUT
+
+ [features "screenx=-204.5" should NOT set "left=204"]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
index ad8840fbb68..940516ddd33 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
@@ -1,5 +1,24 @@
[open-features-negative-top-left.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: negative values for `top`, `left`]
expected: FAIL
+ [features "top=-204" should NOT set "top=204"]
+ expected: TIMEOUT
+
+ [features "top=-204.5" should NOT set "top=204"]
+ expected: TIMEOUT
+
+ [features "left=-204" should NOT set "left=204"]
+ expected: TIMEOUT
+
+ [features "top=-0" should NOT set "top=204"]
+ expected: TIMEOUT
+
+ [features "left=-204.5" should NOT set "left=204"]
+ expected: TIMEOUT
+
+ [features "left=-0" should NOT set "left=204"]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
index d1ed9088b2b..9027336b453 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
@@ -1,5 +1,24 @@
[open-features-negative-width-height.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: negative values for `width`, `height`]
expected: FAIL
+ [features "height=-404" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "height=-404e1" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "height=-404.5" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "width=-404" should NOT set "width=404"]
+ expected: TIMEOUT
+
+ [features "width=-404e1" should NOT set "width=404"]
+ expected: TIMEOUT
+
+ [features "width=-404.5" should NOT set "width=404"]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
index a70e9dbad4d..4e44584b123 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
@@ -1,32 +1,48 @@
[open-features-non-integer-height.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `height`]
expected: FAIL
[features "height=405*3" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "height=405.32" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "height=405e1" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "height=405/5" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "height=405^4" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "height=405.5" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "height=405e-1" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "height=405 " should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "height=405LLl" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
+
+ [features "height=/404" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [top=0,left=0,width=401,: absence of feature "height" should be treated same as "height=0"]
+ expected: TIMEOUT
+
+ [top=0,left=0: absence of feature "height" should be treated same as "height=0"]
+ expected: TIMEOUT
+
+ [features "height=_404" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "height=L404" should NOT set "height=404"]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
index 779531b4a98..fcaeae5336d 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
@@ -1,32 +1,42 @@
[open-features-non-integer-innerheight.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
expected: FAIL
[features "innerheight=405e-1" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerheight=405LLl" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerheight=405^4" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerheight=405e1" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerheight=405 " should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerheight=405/5" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerheight=405.32" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerheight=405.5" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerheight=405*3" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
+
+ [features "innerheight=_404" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "innerheight=L404" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "innerheight=/404" should NOT set "height=404"]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
index 7a1b258d52e..42327fedd27 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
@@ -1,32 +1,42 @@
[open-features-non-integer-innerwidth.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerwidth`]
expected: FAIL
[features "innerwidth=405e-1" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerwidth=405*3" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerwidth=405.5" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerwidth=405e1" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerwidth=405.32" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerwidth=405 " should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerwidth=405LLl" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerwidth=405/5" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "innerwidth=405^4" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
+
+ [features "innerwidth=/404" should NOT set "width=404"]
+ expected: TIMEOUT
+
+ [features "innerwidth=_404" should NOT set "width=404"]
+ expected: TIMEOUT
+
+ [features "innerwidth=L404" should NOT set "width=404"]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
index caba4124f0b..a8e4fe06618 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
@@ -1,32 +1,42 @@
[open-features-non-integer-left.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `left`]
expected: FAIL
[features "left=105e1" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "left=105 " should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "left=105/5" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "left=105e-1" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "left=105^4" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "left=105LLl" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "left=105.32" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "left=105*3" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "left=105.5" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
+
+ [features "left=L104" should NOT set "left=104"]
+ expected: TIMEOUT
+
+ [features "left=/104" should NOT set "left=104"]
+ expected: TIMEOUT
+
+ [features "left=_104" should NOT set "left=104"]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
index 9ace8a4cbdb..64a08faf0e6 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
@@ -1,32 +1,42 @@
[open-features-non-integer-screenx.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screenx`]
expected: FAIL
[features "screenx=105.5" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "screenx=105e1" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "screenx=105 " should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "screenx=105*3" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "screenx=105e-1" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "screenx=105^4" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "screenx=105LLl" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "screenx=105/5" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
[features "screenx=105.32" should set "left=105"]
- expected: FAIL
+ expected: TIMEOUT
+
+ [features "screenx=_104" should NOT set "left=104"]
+ expected: TIMEOUT
+
+ [features "screenx=L104" should NOT set "left=104"]
+ expected: TIMEOUT
+
+ [features "screenx=/104" should NOT set "left=104"]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
index a82bd0f981a..4f22ef4ef29 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
@@ -1,32 +1,42 @@
[open-features-non-integer-screeny.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screeny`]
expected: FAIL
[features "screeny=405^4" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "screeny=405e-1" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "screeny=405LLl" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "screeny=405e1" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "screeny=405 " should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "screeny=405/5" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "screeny=405*3" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "screeny=405.32" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "screeny=405.5" should set "height=405"]
- expected: FAIL
+ expected: TIMEOUT
+
+ [features "screeny=_404" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "screeny=L404" should NOT set "height=404"]
+ expected: TIMEOUT
+
+ [features "screeny=/404" should NOT set "height=404"]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
index 28f93ee71b5..9d841e61bc0 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
@@ -1,32 +1,48 @@
[open-features-non-integer-width.html]
type: testharness
+ expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `width`]
expected: FAIL
[features "width=405^4" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "width=405.5" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "width=405e1" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "width=405 " should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "width=405.32" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "width=405LLl" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "width=405*3" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "width=405e-1" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
[features "width=405/5" should set "width=405"]
- expected: FAIL
+ expected: TIMEOUT
+
+ [top=0,left=0: absence of feature "width" should be treated same as "width=0"]
+ expected: TIMEOUT
+
+ [features "width=_404" should NOT set "width=404"]
+ expected: TIMEOUT
+
+ [top=0,left=0,height=401,: absence of feature "width" should be treated same as "width=0"]
+ expected: TIMEOUT
+
+ [features "width=/404" should NOT set "width=404"]
+ expected: TIMEOUT
+
+ [features "width=L404" should NOT set "width=404"]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html.ini
new file mode 100644
index 00000000000..cf26762b950
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html.ini
@@ -0,0 +1,4 @@
+[base_target_does_not_affect_iframe_src_navigation.html]
+ [base_target_does_not_affect_iframe_src_navigation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html.ini
new file mode 100644
index 00000000000..6470ba6246c
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html.ini
@@ -0,0 +1,4 @@
+[base_target_does_not_affect_location_assignment.html]
+ [base_target_does_not_affect_location_assignment]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
index 5f60c78e73c..b3bd9f4c289 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
@@ -1,6 +1,6 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
- expected: TIMEOUT
+ expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
deleted file mode 100644
index a9677391662..00000000000
--- a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[DOMContentLoaded-defer.html]
- [The end: DOMContentLoaded and defer scripts]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini b/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini
index 5a549d938b6..5c59982f790 100644
--- a/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini
+++ b/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini
@@ -11,3 +11,6 @@
[The iframe should have one resource timing entry.]
expected: FAIL
+ [responseEnd should not be 0 in timing-allow cross-origin request.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini b/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini
index 494f0d4a752..aa36a14c6a6 100644
--- a/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini
+++ b/tests/wpt/metadata/resource-timing/resource_TAO_zero.htm.ini
@@ -20,3 +20,6 @@
[domainLookupStart should be 0 in cross-origin request.]
expected: FAIL
+ [responseEnd should be greater than 0 in cross-origin request.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
index 66bd350083b..a56bad443a2 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
@@ -1,4 +1,5 @@
[realtimeanalyser-fft-scaling.html]
+ expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
index 4c579c3a7b8..4a15eb13c69 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
@@ -29,3 +29,9 @@
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t1.9724091887474060e-1\t9.5236867666244507e-1\t7.5512775778770447e-1\t7.9289436569253091e-1\t3.8985999999999999e-3\n\t[60\]\t-2.2450675070285797e-1\t-5.8084785938262939e-1\t3.5634110867977142e-1\t6.1348441407448528e-1\t3.8985999999999999e-3\n\t[90\]\t-3.7808802723884583e-1\t-5.9811043739318848e-1\t2.2002241015434265e-1\t3.6786251568070089e-1\t3.8985999999999999e-3\n\t[120\]\t7.6881676912307739e-1\t9.4563448429107666e-1\t1.7681771516799927e-1\t1.8698315057805445e-1\t3.8985999999999999e-3\n\t[151\]\t5.4644601186737418e-4\t-4.1306272149085999e-2\t4.1852718160953373e-2\t1.0132291292202573e+0\t3.8985999999999999e-3\n\t...and 1419 more errors.\n\tMax AbsError of 2.0054797224906599e+28 at index of 20238.\n\t[20238\]\t-2.0054797224906599e+28\t-4.7574958205223083e-1\t2.0054797224906599e+28\t4.2154103716490195e+28\t3.8985999999999999e-3\n\tMax RelError of 4.2154103716490195e+28 at index of 20238.\n\t[20238\]\t-2.0054797224906599e+28\t-4.7574958205223083e-1\t2.0054797224906599e+28\t4.2154103716490195e+28\t3.8985999999999999e-3\n]
expected: FAIL
+ [X SNR (-315.6690644748059 dB) is not greater than or equal to 65.737. Got -315.6690644748059.]
+ expected: FAIL
+
+ [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t1.9724091887474060e-1\t9.5236867666244507e-1\t7.5512775778770447e-1\t7.9289436569253091e-1\t3.8985999999999999e-3\n\t[60\]\t-2.2450675070285797e-1\t-5.8084785938262939e-1\t3.5634110867977142e-1\t6.1348441407448528e-1\t3.8985999999999999e-3\n\t[90\]\t-3.7808802723884583e-1\t-5.9811043739318848e-1\t2.2002241015434265e-1\t3.6786251568070089e-1\t3.8985999999999999e-3\n\t[120\]\t7.6881676912307739e-1\t9.4563448429107666e-1\t1.7681771516799927e-1\t1.8698315057805445e-1\t3.8985999999999999e-3\n\t[151\]\t5.4644601186737418e-4\t-4.1306272149085999e-2\t4.1852718160953373e-2\t1.0132291292202573e+0\t3.8985999999999999e-3\n\t...and 1419 more errors.\n\tMax AbsError of 9.0185146037803418e+17 at index of 20238.\n\t[20238\]\t-9.0185146037803418e+17\t-4.7574958205223083e-1\t9.0185146037803418e+17\t1.8956432005420513e+18\t3.8985999999999999e-3\n\tMax RelError of 1.8956432005420513e+18 at index of 20238.\n\t[20238\]\t-9.0185146037803418e+17\t-4.7574958205223083e-1\t9.0185146037803418e+17\t1.8956432005420513e+18\t3.8985999999999999e-3\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webdriver/tests/take_element_screenshot/iframe.py.ini b/tests/wpt/metadata/webdriver/tests/take_element_screenshot/iframe.py.ini
new file mode 100644
index 00000000000..6a671eb554c
--- /dev/null
+++ b/tests/wpt/metadata/webdriver/tests/take_element_screenshot/iframe.py.ini
@@ -0,0 +1,7 @@
+[iframe.py]
+ [test_source_origin[cross_origin\]]
+ expected: FAIL
+
+ [test_source_origin[same_origin\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webdriver/tests/take_screenshot/iframe.py.ini b/tests/wpt/metadata/webdriver/tests/take_screenshot/iframe.py.ini
new file mode 100644
index 00000000000..47a61797028
--- /dev/null
+++ b/tests/wpt/metadata/webdriver/tests/take_screenshot/iframe.py.ini
@@ -0,0 +1,4 @@
+[iframe.py]
+ [test_source_origin[cross_origin\]]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
new file mode 100644
index 00000000000..80f9a4f15b8
--- /dev/null
+++ b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
@@ -0,0 +1,2 @@
+[Worker-constructor.html]
+ expected: ERROR
diff --git a/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini b/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini
deleted file mode 100644
index dbea4f293ad..00000000000
--- a/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[transition_calc_implicit.html]
- expected: TIMEOUT
diff --git a/tests/wpt/web-platform-tests/.azure-pipelines.yml b/tests/wpt/web-platform-tests/.azure-pipelines.yml
index 0776b1994f7..06fe7999246 100644
--- a/tests/wpt/web-platform-tests/.azure-pipelines.yml
+++ b/tests/wpt/web-platform-tests/.azure-pipelines.yml
@@ -305,7 +305,7 @@ jobs:
- job: results_safari
displayName: 'all tests: Safari'
condition: |
- or(eq(variables['Build.SourceBranch'], 'refs/heads/epochs/six_hourly'),
+ or(eq(variables['Build.SourceBranch'], 'refs/heads/epochs/daily'),
and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_safari']))
strategy:
parallel: 5 # chosen to make runtime ~2h
diff --git a/tests/wpt/web-platform-tests/audio-output/idlharness.https.window.js b/tests/wpt/web-platform-tests/audio-output/idlharness.https.window.js
index f10e523bcdc..c13b167296d 100644
--- a/tests/wpt/web-platform-tests/audio-output/idlharness.https.window.js
+++ b/tests/wpt/web-platform-tests/audio-output/idlharness.https.window.js
@@ -5,20 +5,15 @@
'use strict';
-promise_test(async () => {
- const srcs = ['audio-output', 'dom', 'html'];
- const [idl, dom, html] = await Promise.all(
- srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text())));
-
- const idl_array = new IdlArray();
- idl_array.add_idls(idl);
- idl_array.add_dependency_idls(html);
- idl_array.add_dependency_idls(dom);
- self.audio = document.createElement('audio');
- self.video = document.createElement('video');
- idl_array.add_objects({
- HTMLAudioElement: ['audio'],
- HTMLVideoElement: ['video']
- });
- idl_array.test();
-}, 'Test IDL implementation of audio-output API');
+idl_test(
+ ['audio-output'],
+ ['html', 'dom'],
+ idl_array => {
+ self.audio = document.createElement('audio');
+ self.video = document.createElement('video');
+ idl_array.add_objects({
+ HTMLAudioElement: ['audio'],
+ HTMLVideoElement: ['video']
+ });
+ }
+);
diff --git a/tests/wpt/web-platform-tests/beacon/idlharness.any.js b/tests/wpt/web-platform-tests/beacon/idlharness.any.js
index 958daf4865d..bf267ab8bdc 100644
--- a/tests/wpt/web-platform-tests/beacon/idlharness.any.js
+++ b/tests/wpt/web-platform-tests/beacon/idlharness.any.js
@@ -3,15 +3,12 @@
// https://w3c.github.io/beacon/
-promise_test(async () => {
- const idl = await fetch('/interfaces/beacon.idl').then(r => r.text());
- const html = await fetch('/interfaces/html.idl').then(r => r.text());
-
- const idl_array = new IdlArray();
- idl_array.add_idls(idl);
- idl_array.add_dependency_idls(html);
- idl_array.add_objects({
- Navigator: ['navigator'],
- });
- idl_array.test();
-}, 'beacon interfaces');
+idl_test(
+ ['beacon'],
+ ['html'],
+ idl_array => {
+ idl_array.add_objects({
+ Navigator: ['navigator'],
+ });
+ }
+);
diff --git a/tests/wpt/web-platform-tests/css/css-font-loading/font-face-reject.html b/tests/wpt/web-platform-tests/css/css-font-loading/font-face-reject.html
new file mode 100644
index 00000000000..7b87a812132
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-font-loading/font-face-reject.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link rel="author" title="Dominik Röttsches" href="drott@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-font-loading/#font-face-load">
+<meta name="assert" content="Ensure that a UA triggered font load (through the use in the test div) leads to rejecting
+ the promise." />
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+promise_test(function(t) {
+ var testFontFace = new FontFace('TestFontFace', 'local("nonexistentfont-9a1a9f78-c8d4-11e9-af16-448a5b2c326f")');
+ document.fonts.add(testFontFace);
+ return promise_rejects(t, 'NetworkError', testFontFace.loaded);
+})
+</script>
+<body>
+<div style="font-family: TestFontFace;">a</div>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-computed.html b/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-computed.html
new file mode 100644
index 00000000000..24225084721
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-computed.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Inline Layout: getComputedStyle().verticalAlign</title>
+<link rel="help" href="https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align">
+<link rel="help" href="https://drafts.csswg.org/css-inline/#propdef-vertical-align">
+<meta name="assert" content="vertical-align computed value is as specified, with lengths made absolute.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+<style>
+ #target {
+ font-size: 40px;
+ }
+</style>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_computed_value("vertical-align", "baseline");
+test_computed_value("vertical-align", "sub");
+test_computed_value("vertical-align", "super");
+test_computed_value("vertical-align", "top");
+test_computed_value("vertical-align", "text-top");
+test_computed_value("vertical-align", "middle");
+test_computed_value("vertical-align", "bottom");
+test_computed_value("vertical-align", "text-bottom");
+test_computed_value("vertical-align", "-10px");
+test_computed_value("vertical-align", "20%");
+test_computed_value("vertical-align", "calc(20% + 10px)");
+test_computed_value("vertical-align", "calc(10px - 0.5em)", "-10px");
+
+// TODO: Test against the CSS Inline Layout grammar when browsers support it.
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-invalid.html b/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-invalid.html
new file mode 100644
index 00000000000..0565eb4a68d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-invalid.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Inline Layout: parsing vertical-align with valid values</title>
+<link rel="help" href="https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align">
+<link rel="help" href="https://drafts.csswg.org/css-inline/#propdef-vertical-align">
+<meta name="assert" content="vertical-align only supports the spec grammar.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("vertical-align", "none");
+
+// Two baseline-source values
+test_invalid_value("vertical-align", "first last");
+test_invalid_value("vertical-align", "first, last");
+
+// Two baseline-shift values
+test_invalid_value("vertical-align", "sub super");
+test_invalid_value("vertical-align", "super 10px");
+test_invalid_value("vertical-align", "20% sub");
+
+// Two alignment-baseline values
+test_invalid_value("vertical-align", "baseline middle");
+test_invalid_value("vertical-align", "text-top, bottom");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-valid.html b/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-valid.html
new file mode 100644
index 00000000000..d51c759dcc5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-inline/parsing/vertical-align-valid.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Inline Layout: parsing vertical-align with valid values</title>
+<link rel="help" href="https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align">
+<link rel="help" href="https://drafts.csswg.org/css-inline/#propdef-vertical-align">
+<meta name="assert" content="vertical-align supports the CSS 2 grammar 'baseline | sub | super | top | text-top | middle | bottom | text-bottom | <percentage> | <length>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("vertical-align", "baseline");
+test_valid_value("vertical-align", "sub");
+test_valid_value("vertical-align", "super");
+test_valid_value("vertical-align", "top");
+test_valid_value("vertical-align", "text-top");
+test_valid_value("vertical-align", "middle");
+test_valid_value("vertical-align", "bottom");
+test_valid_value("vertical-align", "text-bottom");
+test_valid_value("vertical-align", "-10px");
+test_valid_value("vertical-align", "20%");
+test_valid_value("vertical-align", "0", "0px");
+test_valid_value("vertical-align", "calc(20% - 10px)");
+
+// TODO: Test against the CSS Inline Layout grammar when browsers support it.
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/animation/column-count-interpolation.html b/tests/wpt/web-platform-tests/css/css-multicol/animation/column-count-interpolation.html
new file mode 100644
index 00000000000..def34adc6c0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-multicol/animation/column-count-interpolation.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>column-count interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-multicol-1/#cc">
+<meta name="assert" content="column-count supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ column-count: 30;
+}
+.target {
+ column-count: 10;
+}
+</style>
+
+<body></body>
+
+<script>
+test_interpolation({
+ property: 'column-count',
+ from: neutralKeyframe,
+ to: '20',
+}, [
+ {at: -0.5, expect: '5'},
+ {at: 0, expect: '10'},
+ {at: 0.3, expect: '13'},
+ {at: 0.7, expect: '17'},
+ {at: 1, expect: '20'},
+ {at: 1.5, expect: '25'},
+]);
+
+test_no_interpolation({
+ property: 'column-count',
+ from: 'auto',
+ to: '20',
+});
+
+test_interpolation({
+ property: 'column-count',
+ from: 'inherit',
+ to: '20',
+}, [
+ {at: -0.5, expect: '35'},
+ {at: 0, expect: '30'},
+ {at: 0.3, expect: '27'},
+ {at: 0.7, expect: '23'},
+ {at: 1, expect: '20'},
+ {at: 1.5, expect: '15'},
+]);
+
+test_interpolation({
+ property: 'column-count',
+ from: '10',
+ to: '1'
+}, [
+ {at: -0.5, expect: '15'},
+ {at: 0, expect: '10'},
+ {at: 0.3, expect: '7'},
+ {at: 0.7, expect: '4'},
+ // Only positive integers are valid
+ {at: 1, expect: '1'},
+ {at: 1.5, expect: '1'}
+]);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/animation/column-rule-color-interpolation.html b/tests/wpt/web-platform-tests/css/css-multicol/animation/column-rule-color-interpolation.html
new file mode 100644
index 00000000000..060c8416ffb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-multicol/animation/column-rule-color-interpolation.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>column-rule-color interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-multicol-1/#crc">
+<meta name="assert" content="column-rule-color supports animation by computed value type">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ column-count: 2;
+ column-rule-color: rgb(70, 70, 170);
+}
+.target {
+ column-count: 2;
+ color: rgb(70, 170, 70);
+ column-rule-color: rgb(170, 70, 70);
+}
+</style>
+
+<body></body>
+
+<script>
+test_interpolation({
+ property: 'column-rule-color',
+ from: neutralKeyframe,
+ to: 'rgb(70, 170, 70)',
+}, [
+ {at: -0.5, expect: 'rgb(220, 20, 70)'},
+ {at: 0, expect: 'rgb(170, 70, 70)'},
+ {at: 0.3, expect: 'rgb(140, 100, 70)'},
+ {at: 0.6, expect: 'rgb(110, 130, 70)'},
+ {at: 1, expect: 'rgb(70, 170, 70)'},
+ {at: 1.5, expect: 'rgb(20, 220, 70)'},
+]);
+
+test_interpolation({
+ property: 'column-rule-color',
+ from: 'initial',
+ to: 'rgb(70, 70, 170)',
+}, [
+ {at: -0.5, expect: 'rgb(70, 220, 20)'},
+ {at: 0, expect: 'rgb(70, 170, 70)'},
+ {at: 0.3, expect: 'rgb(70, 140, 100)'},
+ {at: 0.6, expect: 'rgb(70, 110, 130)'},
+ {at: 1, expect: 'rgb(70, 70, 170)'},
+ {at: 1.5, expect: 'rgb(70, 20, 220)'},
+]);
+
+test_interpolation({
+ property: 'column-rule-color',
+ from: 'inherit',
+ to: 'rgb(70, 170, 70)',
+}, [
+ {at: -0.5, expect: 'rgb(70, 20, 220)'},
+ {at: 0, expect: 'rgb(70, 70, 170)'},
+ {at: 0.3, expect: 'rgb(70, 100, 140)'},
+ {at: 0.6, expect: 'rgb(70, 130, 110)'},
+ {at: 1, expect: 'rgb(70, 170, 70)'},
+ {at: 1.5, expect: 'rgb(70, 220, 20)'},
+]);
+
+test_interpolation({
+ property: 'column-rule-color',
+ from: 'currentcolor',
+ to: 'rgb(170, 70, 70)',
+}, [
+ {at: -0.5, expect: 'rgb(20, 220, 70)'},
+ {at: 0, expect: 'rgb(70, 170, 70)'},
+ {at: 0.3, expect: 'rgb(100, 140, 70)'},
+ {at: 0.6, expect: 'rgb(130, 110, 70)'},
+ {at: 1, expect: 'rgb(170, 70, 70)'},
+ {at: 1.5, expect: 'rgb(220, 20, 70)'},
+]);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/animation/column-rule-width.html b/tests/wpt/web-platform-tests/css/css-multicol/animation/column-rule-width.html
new file mode 100644
index 00000000000..d600d68ff1a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-multicol/animation/column-rule-width.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>column-rule-width interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-multicol-1/#crw">
+<meta name="assert" content="column-rule-width supports animation by computed value type">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ column-rule-width: 30px;
+}
+.target {
+ column-rule-width: 10px;
+}
+</style>
+
+<body></body>
+
+<script>
+test_interpolation({
+ property: 'column-rule-width',
+ from: neutralKeyframe,
+ to: '20px',
+}, [
+ {at: -0.3, expect: '7px'},
+ {at: 0, expect: '10px'},
+ {at: 0.3, expect: '13px'},
+ {at: 0.6, expect: '16px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '25px'},
+]);
+
+test_interpolation({
+ property: 'column-rule-width',
+ from: 'initial',
+ to: '20px',
+}, [
+ {at: -0.3, expect: '0px'},
+ {at: 0, expect: '3px'},
+ {at: 0.3, expect: '8.1px'},
+ {at: 0.6, expect: '13.2px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '28.5px'},
+]);
+
+test_interpolation({
+ property: 'column-rule-width',
+ from: 'inherit',
+ to: '20px',
+}, [
+ {at: -0.3, expect: '0px'},
+ {at: 0, expect: '0px'},
+ {at: 0.3, expect: '6px'},
+ {at: 0.6, expect: '12px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '30px'},
+]);
+
+test_interpolation({
+ property: 'column-rule-width',
+ from: 'unset',
+ to: '20px',
+}, [
+ {at: -0.3, expect: '0px'},
+ {at: 0, expect: '3px'},
+ {at: 0.3, expect: '8.1px'},
+ {at: 0.6, expect: '13.2px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '28.5px'},
+]);
+
+test_interpolation({
+ property: 'column-rule-width',
+ from: '0px',
+ to: '10px'
+}, [
+ {at: -0.3, expect: '0px'}, // CSS column-rule-width can't be negative.
+ {at: 0, expect: '0px'},
+ {at: 0.3, expect: '3px'},
+ {at: 0.6, expect: '6px'},
+ {at: 1, expect: '10px'},
+ {at: 1.5, expect: '15px'}
+]);
+
+test_interpolation({
+ property: 'column-rule-width',
+ from: '15px',
+ to: 'thick'
+}, [
+ {at: -2, expect: '35px'},
+ {at: -0.3, expect: '18px'},
+ {at: 0, expect: '15px'},
+ {at: 0.3, expect: '12px'},
+ {at: 0.6, expect: '9px'},
+ {at: 1, expect: '5px'},
+ {at: 1.5, expect: '0px'}
+]);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/animation/column-width-interpolation.html b/tests/wpt/web-platform-tests/css/css-multicol/animation/column-width-interpolation.html
new file mode 100644
index 00000000000..fdb26353b49
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-multicol/animation/column-width-interpolation.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>column-width interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-multicol-1/#cw">
+<meta name="assert" content="column-width supports animation by computed value type">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ column-width: 30px;
+}
+.target {
+ font-size: 0px; /* column-width "specified values must be greater than 0", so use font-size to achieve 0px computed value. */
+ display: inline-block;
+ column-width: 10px;
+}
+</style>
+
+<body>
+<template id="target-template">
+ <div><div class="transformed"></div></div>
+</template>
+</body>
+
+<script>
+test_interpolation({
+ property: 'column-width',
+ from: neutralKeyframe,
+ to: '20px',
+}, [
+ {at: -20, expect: '1em'}, // column-width does not accept negative values
+ {at: -1, expect: '1em'}, // column-width does not accept negative values
+ {at: -0.3, expect: '7px'},
+ {at: 0, expect: '10px'},
+ {at: 0.3, expect: '13px'},
+ {at: 0.6, expect: '16px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '25px'},
+]);
+
+test_no_interpolation({
+ property: 'column-width',
+ from: 'initial',
+ to: '20px',
+});
+
+test_interpolation({
+ property: 'column-width',
+ from: 'inherit',
+ to: '20px',
+}, [
+ {at: -20, expect: '230px'},
+ {at: -1, expect: '40px'},
+ {at: -0.3, expect: '33px'},
+ {at: 0, expect: '30px'},
+ {at: 0.3, expect: '27px'},
+ {at: 0.6, expect: '24px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '15px'},
+]);
+
+test_no_interpolation({
+ property: 'column-width',
+ from: 'unset',
+ to: '20px',
+});
+
+test_interpolation({
+ property: 'column-width',
+ from: '50px',
+ to: '100px',
+}, [
+ {at: -20, expect: '1em'}, // column-width does not accept negative values
+ {at: -1, expect: '1em'}, // column-width does not accept negative values
+ {at: -0.3, expect: '35px'},
+ {at: 0, expect: '50px'},
+ {at: 0.3, expect: '65px'},
+ {at: 0.6, expect: '80px'},
+ {at: 1, expect: '100px'},
+ {at: 1.5, expect: '125px'},
+]);
+
+test_no_interpolation({
+ property: 'column-width',
+ from: '50px',
+ to: 'auto',
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-005-ref.html b/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-005-ref.html
new file mode 100644
index 00000000000..a22fda57c0b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-005-ref.html
@@ -0,0 +1,100 @@
+<!DOCTYPE HTML>
+<title>CSS Test Reference: breaking of a multicolumn</title>
+<meta charset="utf-8">
+<link rel="author" title="L. David Baron" href="https://dbaron.org/">
+<link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="https://mozilla.org/">
+<style>
+
+.outer {
+ height: 200px;
+ width: 800px;
+ background: rgba(0, 0, 255, 0.3);
+ position: relative;
+}
+
+.blueborders {
+ position: absolute;
+ top: 0;
+ left: 262px; /* 256px first column + (16px gap - 4px rule) / 2 */
+ width: 268px; /* 256px second column + (16px gap - 4px rule) */
+ height: 200px;
+ border-right: blue solid 4px;
+ border-left: blue solid 4px;
+}
+
+.innerbg {
+ height: 100px;
+ width: 256px;
+ background: rgba(255, 0, 255, 0.3);
+ position: absolute;
+ top: 0;
+}
+
+.inner {
+ height: 100px;
+ width: 120px;
+ font: 16px/1.25 sans-serif;
+ position: absolute;
+ top: 0;
+}
+
+.lefthalf {
+ border-right: 2px solid fuchsia;
+ padding-right: 7px;
+}
+
+.righthalf {
+ padding-left: 7px;
+}
+
+</style>
+
+<div class="outer">
+ <div class="blueborders"></div>
+ <div class="innerbg" style="left: 0"></div>
+ <div class="inner lefthalf" style="left: 0">
+ AAAAA<br>
+ BBBBB<br>
+ CCCCC<br>
+ DDDDD<br>
+ EEEEE
+ </div>
+ <div class="inner righthalf" style="left: 129px">
+ FFFFF<br>
+ GGGGG<br>
+ HHHHH<br>
+ IIIII<br>
+ JJJJJ
+ </div>
+ <div class="innerbg" style="left: 272px"></div>
+ <div class="inner lefthalf" style="left: 272px">
+ KKKKK<br>
+ LLLLL<br>
+ MMMMM<br>
+ NNNNN<br>
+ OOOOO
+ </div>
+ <div class="inner righthalf" style="left: 401px">
+ PPPPP<br>
+ QQQQQ<br>
+ RRRRR<br>
+ SSSSS<br>
+ TTTTT
+ </div>
+ <div class="innerbg" style="left: 544px"></div>
+ <div class="inner lefthalf" style="left: 544px">
+ UUUUU<br>
+ VVVVV<br>
+ WWWWW<br>
+ XXXXX<br>
+ YYYYY
+ </div>
+ <div class="inner righthalf" style="left: 673px">
+ ZZZZZ<br>
+ aaaaa<br>
+ bbbbb<br>
+ ccccc<br>
+ ddddd
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-005.html b/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-005.html
new file mode 100644
index 00000000000..18a1b78fc9a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-005.html
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML>
+<title>CSS Test: breaking of a multicolumn</title>
+<meta charset="utf-8">
+<link rel="author" title="L. David Baron" href="https://dbaron.org/">
+<link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="https://mozilla.org/">
+<link rel="help" href="https://drafts.csswg.org/css-multicol/#column-gaps-and-rules">
+<link rel="help" href="https://drafts.csswg.org/css-multicol/#cf">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/2309">
+<link rel="match" href="multicol-breaking-005-ref.html">
+<style>
+
+.outer {
+ height: 200px;
+ width: 800px;
+ column-fill: balance;
+ column-count: 3;
+ column-rule: 4px solid blue;
+ column-gap: 16px;
+ background: rgba(0, 0, 255, 0.3);
+}
+
+.inner {
+ column-count: 2;
+ column-fill: balance;
+ column-rule: 2px solid fuchsia;
+ column-gap: 16px;
+ background: rgba(255, 0, 255, 0.3);
+ font: 16px/1.25 sans-serif;
+}
+
+</style>
+
+<!-- This test is similar to multicol-breaking-002.html,
+ but both outer and inner columns are balancing. The outer multi-column is
+ made explicitly taller than the inner columns' optimal balance height. -->
+<div class="outer">
+ <div class="inner" style="height: 300px">
+ AAAAA<br>
+ BBBBB<br>
+ CCCCC<br>
+ DDDDD<br>
+ EEEEE<br>
+ FFFFF<br>
+ GGGGG<br>
+ HHHHH<br>
+ IIIII<br>
+ JJJJJ<br>
+ KKKKK<br>
+ LLLLL<br>
+ MMMMM<br>
+ NNNNN<br>
+ OOOOO<br>
+ PPPPP<br>
+ QQQQQ<br>
+ RRRRR<br>
+ SSSSS<br>
+ TTTTT<br>
+ UUUUU<br>
+ VVVVV<br>
+ WWWWW<br>
+ XXXXX<br>
+ YYYYY<br>
+ ZZZZZ<br>
+ aaaaa<br>
+ bbbbb<br>
+ ccccc<br>
+ ddddd
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-nobackground-005-ref.html b/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-nobackground-005-ref.html
new file mode 100644
index 00000000000..63296363bf9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-nobackground-005-ref.html
@@ -0,0 +1,86 @@
+<!DOCTYPE HTML>
+<title>CSS Test Reference: breaking of a multicolumn</title>
+<meta charset="utf-8">
+<link rel="author" title="L. David Baron" href="https://dbaron.org/">
+<link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="https://mozilla.org/">
+<style>
+
+.outer {
+ height: 200px;
+ width: 800px;
+ background: rgba(0, 0, 255, 0.3);
+ position: relative;
+}
+
+.innerbg {
+ height: 100px;
+ width: 256px;
+ background: rgba(255, 0, 255, 0.3);
+ position: absolute;
+ top: 0;
+}
+
+.inner {
+ height: 100px;
+ width: 120px;
+ font: 16px/1.25 sans-serif;
+ position: absolute;
+ top: 0;
+}
+
+.lefthalf {
+ border-right: 2px solid fuchsia;
+ padding-right: 7px;
+}
+
+.righthalf {
+ padding-left: 7px;
+}
+
+</style>
+
+<div class="outer">
+ <div class="inner lefthalf" style="left: 0">
+ AAAAA<br>
+ BBBBB<br>
+ CCCCC<br>
+ DDDDD<br>
+ EEEEE
+ </div>
+ <div class="inner righthalf" style="left: 129px">
+ FFFFF<br>
+ GGGGG<br>
+ HHHHH<br>
+ IIIII<br>
+ JJJJJ
+ </div>
+ <div class="inner lefthalf" style="left: 272px">
+ KKKKK<br>
+ LLLLL<br>
+ MMMMM<br>
+ NNNNN<br>
+ OOOOO
+ </div>
+ <div class="inner righthalf" style="left: 401px">
+ PPPPP<br>
+ QQQQQ<br>
+ RRRRR<br>
+ SSSSS<br>
+ TTTTT
+ </div>
+ <div class="inner lefthalf" style="left: 544px">
+ UUUUU<br>
+ VVVVV<br>
+ WWWWW<br>
+ XXXXX<br>
+ YYYYY
+ </div>
+ <div class="inner righthalf" style="left: 673px">
+ ZZZZZ<br>
+ aaaaa<br>
+ bbbbb<br>
+ ccccc<br>
+ ddddd
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-nobackground-005.html b/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-nobackground-005.html
new file mode 100644
index 00000000000..2065949cc92
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-multicol/multicol-breaking-nobackground-005.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML>
+<title>CSS Test: breaking of a multicolumn</title>
+<meta charset="utf-8">
+<link rel="author" title="L. David Baron" href="https://dbaron.org/">
+<link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="https://mozilla.org/">
+<link rel="help" href="https://drafts.csswg.org/css-multicol/#column-gaps-and-rules">
+<link rel="help" href="https://drafts.csswg.org/css-multicol/#cf">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/2309">
+<link rel="match" href="multicol-breaking-nobackground-005-ref.html">
+<style>
+
+.outer {
+ height: 200px;
+ width: 800px;
+ column-fill: balance;
+ column-count: 3;
+ column-gap: 16px;
+ background: rgba(0, 0, 255, 0.3);
+}
+
+.inner {
+ column-count: 2;
+ column-fill: balance;
+ column-rule: 2px solid fuchsia;
+ column-gap: 16px;
+ font: 16px/1.25 sans-serif;
+}
+
+</style>
+
+<!-- This test is similar to multicol-breaking-nobackground-002.html,
+ but both outer and inner columns are balancing. The outer multi-column is
+ made explicitly taller than the inner columns' optimal balance height. -->
+<div class="outer">
+ <div class="inner" style="height: 300px">
+ AAAAA<br>
+ BBBBB<br>
+ CCCCC<br>
+ DDDDD<br>
+ EEEEE<br>
+ FFFFF<br>
+ GGGGG<br>
+ HHHHH<br>
+ IIIII<br>
+ JJJJJ<br>
+ KKKKK<br>
+ LLLLL<br>
+ MMMMM<br>
+ NNNNN<br>
+ OOOOO<br>
+ PPPPP<br>
+ QQQQQ<br>
+ RRRRR<br>
+ SSSSS<br>
+ TTTTT<br>
+ UUUUU<br>
+ VVVVV<br>
+ WWWWW<br>
+ XXXXX<br>
+ YYYYY<br>
+ ZZZZZ<br>
+ aaaaa<br>
+ bbbbb<br>
+ ccccc<br>
+ ddddd
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-computed.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-computed.html
deleted file mode 100644
index b186e674ab7..00000000000
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-computed.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Scroll Snap: getComputedStyle().scrollMarginBlock</title>
-<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-block">
-<meta name="assert" content="scroll-margin-block computed value is absolute length.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/computed-testcommon.js"></script>
-</head>
-<body>
-<div id="target"></div>
-<style>
- #target {
- font-size: 40px;
- }
-</style>
-<script>
-test_computed_value("scroll-margin-block-start", "10px");
-test_computed_value("scroll-margin-block-start", "calc(10px - 0.5em)", "-10px");
-
-
-test_computed_value("scroll-margin-block-end", "10px");
-test_computed_value("scroll-margin-block-end", "calc(10px - 0.5em)", "-10px");
-
-
-test_computed_value("scroll-margin-block", "10px");
-test_computed_value("scroll-margin-block", "calc(10px - 0.5em)", "-10px");
-
-test_computed_value("scroll-margin-block", "1px 2px");
-</script>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-inline-computed.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-computed.html
index d9854713b55..3bb0e740acf 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-inline-computed.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-computed.html
@@ -2,9 +2,9 @@
<html>
<head>
<meta charset="utf-8">
-<title>CSS Scroll Snap: getComputedStyle().scrollMarginInline</title>
-<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-inline">
-<meta name="assert" content="scroll-margin-inline computed value is absolute length.">
+<title>CSS Scroll Snap: getComputedStyle().scrollMarginBlock / scrollMarginInline</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#margin-longhands-logical">
+<meta name="assert" content="scroll-margin-block, scroll-margin-inline computed value is absolute length.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/computed-testcommon.js"></script>
@@ -17,17 +17,25 @@
}
</style>
<script>
+test_computed_value("scroll-margin-block-start", "10px");
+test_computed_value("scroll-margin-block-start", "calc(10px - 0.5em)", "-10px");
+
+test_computed_value("scroll-margin-block-end", "10px");
+test_computed_value("scroll-margin-block-end", "calc(10px - 0.5em)", "-10px");
+
test_computed_value("scroll-margin-inline-start", "10px");
test_computed_value("scroll-margin-inline-start", "calc(10px - 0.5em)", "-10px");
-
test_computed_value("scroll-margin-inline-end", "10px");
test_computed_value("scroll-margin-inline-end", "calc(10px - 0.5em)", "-10px");
+test_computed_value("scroll-margin-block", "10px");
+test_computed_value("scroll-margin-block", "calc(10px - 0.5em)", "-10px");
+test_computed_value("scroll-margin-block", "1px 2px");
+
test_computed_value("scroll-margin-inline", "10px");
test_computed_value("scroll-margin-inline", "calc(10px - 0.5em)", "-10px");
-
test_computed_value("scroll-margin-inline", "1px 2px");
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-inline-invalid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-invalid.html
index eaeb97157a6..b8a70b0d489 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-inline-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-invalid.html
@@ -2,27 +2,41 @@
<html>
<head>
<meta charset="utf-8">
-<title>CSS Scroll Snap Test: scroll-margin-inline with invalid values</title>
-<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-inline">
-<meta name="assert" content="scroll-margin-inline supports only the grammar '<length>{1,2}'.">
+<title>CSS Scroll Snap Test: scroll-margin-block, scroll-margin-inline with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#margin-longhands-logical">
+<meta name="assert" content="scroll-margin-block, scroll-margin-inline support only the grammar '<length>{1,2}'.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
</head>
<body>
<script>
+test_invalid_value("scroll-margin-block-start", "auto");
+test_invalid_value("scroll-margin-block-start", "20%");
+test_invalid_value("scroll-margin-block-start", "-30%");
+test_invalid_value("scroll-margin-block-start", "1px 2px");
+
+test_invalid_value("scroll-margin-block-end", "auto");
+test_invalid_value("scroll-margin-block-end", "20%");
+test_invalid_value("scroll-margin-block-end", "-30%");
+test_invalid_value("scroll-margin-block-end", "1px 2px");
+
test_invalid_value("scroll-margin-inline-start", "auto");
test_invalid_value("scroll-margin-inline-start", "20%");
test_invalid_value("scroll-margin-inline-start", "-30%");
test_invalid_value("scroll-margin-inline-start", "1px 2px");
-
test_invalid_value("scroll-margin-inline-end", "auto");
test_invalid_value("scroll-margin-inline-end", "20%");
test_invalid_value("scroll-margin-inline-end", "-30%");
test_invalid_value("scroll-margin-inline-end", "1px 2px");
+test_invalid_value("scroll-margin-block", "auto");
+test_invalid_value("scroll-margin-block", "20%");
+test_invalid_value("scroll-margin-block", "-30%");
+test_invalid_value("scroll-margin-block", "1px 2px 3px");
+
test_invalid_value("scroll-margin-inline", "auto");
test_invalid_value("scroll-margin-inline", "20%");
test_invalid_value("scroll-margin-inline", "-30%");
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-inline-valid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-valid.html
index a29ede3d32f..e675eeb4270 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-inline-valid.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-inline-valid.html
@@ -2,23 +2,32 @@
<html>
<head>
<meta charset="utf-8">
-<title>CSS Scroll Snap Test: scroll-margin-inline with valid values</title>
-<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-inline">
-<meta name="assert" content="scroll-margin-inline supports the full grammar '<length>{1,2}'.">
+<title>CSS Scroll Snap Test: scroll-margin-block, scroll-margin-inline with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#margin-longhands-logical">
+<meta name="assert" content="scroll-margin-block, scroll-margin-inline support the full grammar '<length>{1,2}'.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
</head>
<body>
<script>
+test_valid_value("scroll-margin-block-start", "-10px");
+test_valid_value("scroll-margin-block-start", "calc(2em + 3ex)");
+
+test_valid_value("scroll-margin-block-end", "-10px");
+test_valid_value("scroll-margin-block-end", "calc(2em + 3ex)");
+
test_valid_value("scroll-margin-inline-start", "-10px");
test_valid_value("scroll-margin-inline-start", "calc(2em + 3ex)");
-
test_valid_value("scroll-margin-inline-end", "-10px");
test_valid_value("scroll-margin-inline-end", "calc(2em + 3ex)");
+test_valid_value("scroll-margin-block", "-10px");
+test_valid_value("scroll-margin-block", "calc(2em + 3ex)");
+test_valid_value("scroll-margin-block", "1px 2px");
+
test_valid_value("scroll-margin-inline", "-10px");
test_valid_value("scroll-margin-inline", "calc(2em + 3ex)");
test_valid_value("scroll-margin-inline", "1px 2px");
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-invalid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-invalid.html
deleted file mode 100644
index 371c933aa0e..00000000000
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-invalid.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Scroll Snap Test: scroll-margin-block with invalid values</title>
-<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-block">
-<meta name="assert" content="scroll-margin-block supports only the grammar '<length>{1,2}'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_invalid_value("scroll-margin-block-start", "auto");
-test_invalid_value("scroll-margin-block-start", "20%");
-test_invalid_value("scroll-margin-block-start", "-30%");
-test_invalid_value("scroll-margin-block-start", "1px 2px");
-
-
-test_invalid_value("scroll-margin-block-end", "auto");
-test_invalid_value("scroll-margin-block-end", "20%");
-test_invalid_value("scroll-margin-block-end", "-30%");
-test_invalid_value("scroll-margin-block-end", "1px 2px");
-
-
-test_invalid_value("scroll-margin-block", "auto");
-test_invalid_value("scroll-margin-block", "20%");
-test_invalid_value("scroll-margin-block", "-30%");
-test_invalid_value("scroll-margin-block", "1px 2px 3px");
-</script>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-valid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-valid.html
deleted file mode 100644
index f4be8994f7c..00000000000
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-margin-block-valid.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Scroll Snap Test: scroll-margin-block with valid values</title>
-<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-block">
-<meta name="assert" content="scroll-margin-block supports the full grammar '<length>{1,2}'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_valid_value("scroll-margin-block-start", "-10px");
-test_valid_value("scroll-margin-block-start", "calc(2em + 3ex)");
-
-
-test_valid_value("scroll-margin-block-end", "-10px");
-test_valid_value("scroll-margin-block-end", "calc(2em + 3ex)");
-
-
-test_valid_value("scroll-margin-block", "-10px");
-test_valid_value("scroll-margin-block", "calc(2em + 3ex)");
-
-test_valid_value("scroll-margin-block", "1px 2px");
-</script>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-computed.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-computed.html
deleted file mode 100644
index 2021818dd33..00000000000
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-computed.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Scroll Snap: getComputedStyle().scrollPaddingBlock</title>
-<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-block">
-<meta name="assert" content="scroll-padding-block computed value is per side, either the keyword auto or a computed <length-percentage> value.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/computed-testcommon.js"></script>
-</head>
-<body>
-<div id="target"></div>
-<style>
- #target {
- font-size: 40px;
- }
-</style>
-<script>
-test_computed_value("scroll-padding-block-start", "auto");
-test_computed_value("scroll-padding-block-start", "10px");
-test_computed_value("scroll-padding-block-start", "20%");
-test_computed_value("scroll-padding-block-start", "calc(10px + 0.5em)", "30px");
-test_computed_value("scroll-padding-block-start", "calc(10px - 0.5em)", "0px");
-test_computed_value("scroll-padding-block-start", "calc(50% + 60px)");
-
-
-test_computed_value("scroll-padding-block-end", "auto");
-test_computed_value("scroll-padding-block-end", "10px");
-test_computed_value("scroll-padding-block-end", "20%");
-test_computed_value("scroll-padding-block-end", "calc(10px + 0.5em)", "30px");
-test_computed_value("scroll-padding-block-end", "calc(10px - 0.5em)", "0px");
-test_computed_value("scroll-padding-block-end", "calc(50% + 60px)");
-
-
-test_computed_value("scroll-padding-block", "auto");
-test_computed_value("scroll-padding-block", "10px");
-test_computed_value("scroll-padding-block", "20%");
-test_computed_value("scroll-padding-block", "calc(10px + 0.5em)", "30px");
-test_computed_value("scroll-padding-block", "calc(10px - 0.5em)", "0px");
-test_computed_value("scroll-padding-block", "calc(50% + 60px)");
-
-test_computed_value("scroll-padding-block", "1px 2px");
-test_computed_value("scroll-padding-block", "1px auto");
-test_computed_value("scroll-padding-block", "auto auto", "auto");
-</script>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-computed.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-computed.html
index b70cf01b6fe..6a66110cda3 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-computed.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-computed.html
@@ -2,9 +2,9 @@
<html>
<head>
<meta charset="utf-8">
-<title>CSS Scroll Snap: getComputedStyle().scrollPaddingInline</title>
-<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-inline">
-<meta name="assert" content="scroll-padding-inline computed value is per side, either the keyword auto or a computed <length-percentage> value.">
+<title>CSS Scroll Snap: getComputedStyle().scrollPaddingBlock / scrollPaddingInline</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#padding-longhands-logical">
+<meta name="assert" content="scroll-padding-block, scroll-padding-inline computed value is per side, either the keyword auto or a computed <length-percentage> value.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/computed-testcommon.js"></script>
@@ -17,6 +17,20 @@
}
</style>
<script>
+test_computed_value("scroll-padding-block-start", "auto");
+test_computed_value("scroll-padding-block-start", "10px");
+test_computed_value("scroll-padding-block-start", "20%");
+test_computed_value("scroll-padding-block-start", "calc(10px + 0.5em)", "30px");
+test_computed_value("scroll-padding-block-start", "calc(10px - 0.5em)", "0px");
+test_computed_value("scroll-padding-block-start", "calc(50% + 60px)");
+
+test_computed_value("scroll-padding-block-end", "auto");
+test_computed_value("scroll-padding-block-end", "10px");
+test_computed_value("scroll-padding-block-end", "20%");
+test_computed_value("scroll-padding-block-end", "calc(10px + 0.5em)", "30px");
+test_computed_value("scroll-padding-block-end", "calc(10px - 0.5em)", "0px");
+test_computed_value("scroll-padding-block-end", "calc(50% + 60px)");
+
test_computed_value("scroll-padding-inline-start", "auto");
test_computed_value("scroll-padding-inline-start", "10px");
test_computed_value("scroll-padding-inline-start", "20%");
@@ -24,7 +38,6 @@ test_computed_value("scroll-padding-inline-start", "calc(10px + 0.5em)", "30px")
test_computed_value("scroll-padding-inline-start", "calc(10px - 0.5em)", "0px");
test_computed_value("scroll-padding-inline-start", "calc(50% + 60px)");
-
test_computed_value("scroll-padding-inline-end", "auto");
test_computed_value("scroll-padding-inline-end", "10px");
test_computed_value("scroll-padding-inline-end", "20%");
@@ -33,13 +46,22 @@ test_computed_value("scroll-padding-inline-end", "calc(10px - 0.5em)", "0px");
test_computed_value("scroll-padding-inline-end", "calc(50% + 60px)");
+test_computed_value("scroll-padding-block", "auto");
+test_computed_value("scroll-padding-block", "10px");
+test_computed_value("scroll-padding-block", "20%");
+test_computed_value("scroll-padding-block", "calc(10px + 0.5em)", "30px");
+test_computed_value("scroll-padding-block", "calc(10px - 0.5em)", "0px");
+test_computed_value("scroll-padding-block", "calc(50% + 60px)");
+test_computed_value("scroll-padding-block", "1px 2px");
+test_computed_value("scroll-padding-block", "1px auto");
+test_computed_value("scroll-padding-block", "auto auto", "auto");
+
test_computed_value("scroll-padding-inline", "auto");
test_computed_value("scroll-padding-inline", "10px");
test_computed_value("scroll-padding-inline", "20%");
test_computed_value("scroll-padding-inline", "calc(10px + 0.5em)", "30px");
test_computed_value("scroll-padding-inline", "calc(10px - 0.5em)", "0px");
test_computed_value("scroll-padding-inline", "calc(50% + 60px)");
-
test_computed_value("scroll-padding-inline", "1px 2px");
test_computed_value("scroll-padding-inline", "1px auto");
test_computed_value("scroll-padding-inline", "auto auto", "auto");
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid.html
new file mode 100644
index 00000000000..da995cfcc07
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-invalid.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Scroll Snap Test: scroll-padding-block, scroll-padding-inline with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#padding-longhands-logical">
+<meta name="assert" content="scroll-padding-block, scroll-padding-inline supports only the grammar '[ auto | <length-percentage> ]{1,2}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("scroll-padding-block-start", "none");
+test_invalid_value("scroll-padding-block-start", "-10px");
+test_invalid_value("scroll-padding-block-start", "10px 20%");
+test_invalid_value("scroll-padding-block-start", "fit-content");
+
+test_invalid_value("scroll-padding-block-end", "none");
+test_invalid_value("scroll-padding-block-end", "-10px");
+test_invalid_value("scroll-padding-block-end", "10px 20%");
+test_invalid_value("scroll-padding-block-end", "max-content");
+
+test_invalid_value("scroll-padding-inline-start", "none");
+test_invalid_value("scroll-padding-inline-start", "-10px");
+test_invalid_value("scroll-padding-inline-start", "10px 20%");
+test_invalid_value("scroll-padding-inline-start", "min-content");
+
+test_invalid_value("scroll-padding-inline-end", "none");
+test_invalid_value("scroll-padding-inline-end", "-10px");
+test_invalid_value("scroll-padding-inline-end", "10px 20%");
+test_invalid_value("scroll-padding-inline-end", "max-content");
+
+
+test_invalid_value("scroll-padding-block", "none");
+test_invalid_value("scroll-padding-block", "-10px");
+test_invalid_value("scroll-padding-block", "-20%");
+test_invalid_value("scroll-padding-block", "calc(auto)");
+test_invalid_value("scroll-padding-block", "10px 20px 30px 40px 50px");
+test_invalid_value("scroll-padding-block", "fit-content");
+test_invalid_value("scroll-padding-block", "max-content");
+test_invalid_value("scroll-padding-block", "min-content");
+
+test_invalid_value("scroll-padding-inline", "none");
+test_invalid_value("scroll-padding-inline", "-10px");
+test_invalid_value("scroll-padding-inline", "-20%");
+test_invalid_value("scroll-padding-inline", "calc(auto)");
+test_invalid_value("scroll-padding-inline", "10px 20px 30px 40px 50px");
+test_invalid_value("scroll-padding-inline", "fit-content");
+test_invalid_value("scroll-padding-inline", "max-content");
+test_invalid_value("scroll-padding-inline", "min-content");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-valid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-valid.html
index 3fb9003585a..a932bb6393d 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-valid.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-inline-valid.html
@@ -2,22 +2,33 @@
<html>
<head>
<meta charset="utf-8">
-<title>CSS Scroll Snap Test: scroll-padding-inline with valid values</title>
-<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-inline">
-<meta name="assert" content="scroll-padding-inline supports the full grammar '[ auto | <length-percentage> ]{1,2}'.">
+<title>CSS Scroll Snap Test: scroll-padding-block, scroll-padding-inline with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#padding-longhands-logical">
+<meta name="assert" content="scroll-padding-block, scroll-padding-inline supports the full grammar '[ auto | <length-percentage> ]{1,2}'.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
</head>
<body>
<script>
+test_valid_value("scroll-padding-block-start", "auto");
+test_valid_value("scroll-padding-block-start", "10px");
+test_valid_value("scroll-padding-block-start", "20%");
+test_valid_value("scroll-padding-block-start", "calc(2em + 3ex)");
+test_valid_value("scroll-padding-block-start", "calc(50% + 60px)");
+
+test_valid_value("scroll-padding-block-end", "auto");
+test_valid_value("scroll-padding-block-end", "10px");
+test_valid_value("scroll-padding-block-end", "20%");
+test_valid_value("scroll-padding-block-end", "calc(2em + 3ex)");
+test_valid_value("scroll-padding-block-end", "calc(50% + 60px)");
+
test_valid_value("scroll-padding-inline-start", "auto");
test_valid_value("scroll-padding-inline-start", "10px");
test_valid_value("scroll-padding-inline-start", "20%");
test_valid_value("scroll-padding-inline-start", "calc(2em + 3ex)");
test_valid_value("scroll-padding-inline-start", "calc(50% + 60px)");
-
test_valid_value("scroll-padding-inline-end", "auto");
test_valid_value("scroll-padding-inline-end", "10px");
test_valid_value("scroll-padding-inline-end", "20%");
@@ -25,12 +36,20 @@ test_valid_value("scroll-padding-inline-end", "calc(2em + 3ex)");
test_valid_value("scroll-padding-inline-end", "calc(50% + 60px)");
+test_valid_value("scroll-padding-block", "auto");
+test_valid_value("scroll-padding-block", "10px");
+test_valid_value("scroll-padding-block", "20%");
+test_valid_value("scroll-padding-block", "calc(2em + 3ex)");
+test_valid_value("scroll-padding-block", "calc(50% + 60px)");
+test_valid_value("scroll-padding-block", "1px 2px");
+test_valid_value("scroll-padding-block", "1px auto");
+test_valid_value("scroll-padding-block", "auto auto", "auto");
+
test_valid_value("scroll-padding-inline", "auto");
test_valid_value("scroll-padding-inline", "10px");
test_valid_value("scroll-padding-inline", "20%");
test_valid_value("scroll-padding-inline", "calc(2em + 3ex)");
test_valid_value("scroll-padding-inline", "calc(50% + 60px)");
-
test_valid_value("scroll-padding-inline", "1px 2px");
test_valid_value("scroll-padding-inline", "1px auto");
test_valid_value("scroll-padding-inline", "auto auto", "auto");
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-invalid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-invalid.html
deleted file mode 100644
index 206e6f5da89..00000000000
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-invalid.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Scroll Snap Test: scroll-padding-block with invalid values</title>
-<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-block">
-<meta name="assert" content="scroll-padding-block supports only the grammar '[ auto | <length-percentage> ]{1,2}'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_invalid_value("scroll-padding-block-start", "none");
-test_invalid_value("scroll-padding-block-start", "-10px");
-test_invalid_value("scroll-padding-block-start", "10px 20%");
-
-
-test_invalid_value("scroll-padding-block-end", "none");
-test_invalid_value("scroll-padding-block-end", "-10px");
-test_invalid_value("scroll-padding-block-end", "10px 20%");
-
-
-test_invalid_value("scroll-padding-block", "none");
-test_invalid_value("scroll-padding-block", "-10px");
-test_invalid_value("scroll-padding-block", "10px 20px 30px 40px 50px");
-</script>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-valid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-valid.html
deleted file mode 100644
index 79f675acd5b..00000000000
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-block-valid.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Scroll Snap Test: scroll-padding-block with valid values</title>
-<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-block">
-<meta name="assert" content="scroll-padding-block supports the full grammar '[ auto | <length-percentage> ]{1,2}'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_valid_value("scroll-padding-block-start", "auto");
-test_valid_value("scroll-padding-block-start", "10px");
-test_valid_value("scroll-padding-block-start", "20%");
-test_valid_value("scroll-padding-block-start", "calc(2em + 3ex)");
-test_valid_value("scroll-padding-block-start", "calc(50% + 60px)");
-
-
-test_valid_value("scroll-padding-block-end", "auto");
-test_valid_value("scroll-padding-block-end", "10px");
-test_valid_value("scroll-padding-block-end", "20%");
-test_valid_value("scroll-padding-block-end", "calc(2em + 3ex)");
-test_valid_value("scroll-padding-block-end", "calc(50% + 60px)");
-
-
-test_valid_value("scroll-padding-block", "auto");
-test_valid_value("scroll-padding-block", "10px");
-test_valid_value("scroll-padding-block", "20%");
-test_valid_value("scroll-padding-block", "calc(2em + 3ex)");
-test_valid_value("scroll-padding-block", "calc(50% + 60px)");
-
-test_valid_value("scroll-padding-block", "1px 2px");
-test_valid_value("scroll-padding-block", "1px auto");
-test_valid_value("scroll-padding-block", "auto auto", "auto");
-</script>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-invalid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-invalid.html
deleted file mode 100644
index 0cf3fa7353f..00000000000
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-inline-invalid.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Scroll Snap Test: scroll-padding-inline with invalid values</title>
-<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-inline">
-<meta name="assert" content="scroll-padding-inline supports only the grammar '[ auto | <length-percentage> ]{1,2}'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_invalid_value("scroll-padding-inline-start", "none");
-test_invalid_value("scroll-padding-inline-start", "-10px");
-test_invalid_value("scroll-padding-inline-start", "10px 20%");
-
-
-test_invalid_value("scroll-padding-inline-end", "none");
-test_invalid_value("scroll-padding-inline-end", "-10px");
-test_invalid_value("scroll-padding-inline-end", "10px 20%");
-
-
-test_invalid_value("scroll-padding-inline", "none");
-test_invalid_value("scroll-padding-inline", "-10px");
-test_invalid_value("scroll-padding-inline", "10px 20px 30px 40px 50px");
-</script>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-invalid.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-invalid.html
index e060fcdc0ec..c805ee2e55e 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/parsing/scroll-padding-invalid.html
@@ -15,30 +15,38 @@ test_invalid_value("scroll-padding-top", "20");
test_invalid_value("scroll-padding-top", "-20px");
test_invalid_value("scroll-padding-top", "none");
test_invalid_value("scroll-padding-top", "10px 20%");
+test_invalid_value("scroll-padding-top", "fit-content");
test_invalid_value("scroll-padding-right", "20");
test_invalid_value("scroll-padding-right", "-20px");
test_invalid_value("scroll-padding-right", "none");
test_invalid_value("scroll-padding-right", "10px 20%");
+test_invalid_value("scroll-padding-right", "max-content");
test_invalid_value("scroll-padding-bottom", "20");
test_invalid_value("scroll-padding-bottom", "-20px");
test_invalid_value("scroll-padding-bottom", "none");
test_invalid_value("scroll-padding-bottom", "10px 20%");
+test_invalid_value("scroll-padding-bottom", "min-content");
test_invalid_value("scroll-padding-left", "20");
test_invalid_value("scroll-padding-left", "-20px");
test_invalid_value("scroll-padding-left", "none");
test_invalid_value("scroll-padding-left", "10px 20%");
+test_invalid_value("scroll-padding-left", "fit-content");
test_invalid_value("scroll-padding", "20");
test_invalid_value("scroll-padding", "-20px");
test_invalid_value("scroll-padding", "none");
+test_invalid_value("scroll-padding", "calc(auto)");
test_invalid_value("scroll-padding", "10px 20px 30px 40px 50px");
+test_invalid_value("scroll-padding", "fit-content");
+test_invalid_value("scroll-padding", "max-content");
+test_invalid_value("scroll-padding", "min-content");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-image-threshold-interpolation.html b/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-image-threshold-interpolation.html
new file mode 100644
index 00000000000..edac744592f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-image-threshold-interpolation.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>shape-image-threshold interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes/#shape-image-threshold-property">
+<meta name="assert" content="shape-image-threshold supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ shape-image-threshold: 0.4;
+}
+.target {
+ shape-image-threshold: 0.6;
+}
+</style>
+
+<body></body>
+
+<script>
+test_interpolation({
+ property: 'shape-image-threshold',
+ from: neutralKeyframe,
+ to: '0.8',
+}, [
+ {at: -1.5, expect: '0.3'},
+ {at: -0.5, expect: '0.5'},
+ {at: 0, expect: '0.6'},
+ {at: 0.5, expect: '0.7'},
+ {at: 1, expect: '0.8'},
+ {at: 1.5, expect: '0.9'},
+]);
+
+test_interpolation({
+ property: 'shape-image-threshold',
+ from: 'initial',
+ to: '0.8',
+}, [
+ {at: -1.5, expect: '0'},
+ {at: -0.5, expect: '0'},
+ {at: 0, expect: '0'},
+ {at: 0.5, expect: '0.4'},
+ {at: 1, expect: '0.8'},
+ {at: 1.5, expect: '1'},
+]);
+
+test_interpolation({
+ property: 'shape-image-threshold',
+ from: 'inherit',
+ to: '0.8',
+}, [
+ {at: -1.5, expect: '0'},
+ {at: -0.5, expect: '0.2'},
+ {at: 0, expect: '0.4'},
+ {at: 0.5, expect: '0.6'},
+ {at: 1, expect: '0.8'},
+ {at: 1.5, expect: '1'},
+]);
+
+test_interpolation({
+ property: 'shape-image-threshold',
+ from: 'unset',
+ to: '0.8',
+}, [
+ {at: -1.5, expect: '0'},
+ {at: -0.5, expect: '0'},
+ {at: 0, expect: '0'},
+ {at: 0.5, expect: '0.4'},
+ {at: 1, expect: '0.8'},
+ {at: 1.5, expect: '1'},
+]);
+
+test_interpolation({
+ property: 'shape-image-threshold',
+ from: '0.5',
+ to: '1'
+}, [
+ {at: -1.5, expect: '0'},
+ {at: -0.5, expect: '0.25'},
+ {at: 0, expect: '0.5'},
+ {at: 0.5, expect: '0.75'},
+ {at: 1, expect: '1'},
+ {at: 1.5, expect: '1'}
+]);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-margin-interpolation.html b/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-margin-interpolation.html
new file mode 100644
index 00000000000..48b3d0c4607
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-margin-interpolation.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>shape-margin interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes/#shape-margin-property">
+<meta name="assert" content="shape-margin supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ shape-margin: 30px;
+}
+.target {
+ shape-margin: 10px;
+}
+</style>
+
+<body></body>
+
+<script>
+test_interpolation({
+ property: 'shape-margin',
+ from: neutralKeyframe,
+ to: '20px',
+}, [
+ {at: -0.3, expect: '7px'},
+ {at: 0, expect: '10px'},
+ {at: 0.3, expect: '13px'},
+ {at: 0.6, expect: '16px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '25px'},
+]);
+
+test_interpolation({
+ property: 'shape-margin',
+ from: 'initial',
+ to: '20px',
+}, [
+ {at: -0.3, expect: '0px'},
+ {at: 0, expect: '0px'},
+ {at: 0.3, expect: '6px'},
+ {at: 0.6, expect: '12px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '30px'},
+]);
+
+test_interpolation({
+ property: 'shape-margin',
+ from: 'inherit',
+ to: '20px',
+}, [
+ {at: -0.3, expect: '33px'},
+ {at: 0, expect: '30px'},
+ {at: 0.3, expect: '27px'},
+ {at: 0.6, expect: '24px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '15px'},
+]);
+
+test_interpolation({
+ property: 'shape-margin',
+ from: 'unset',
+ to: '20px',
+}, [
+ {at: -0.3, expect: '0px'},
+ {at: 0, expect: '0px'},
+ {at: 0.3, expect: '6px'},
+ {at: 0.6, expect: '12px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '30px'},
+]);
+
+test_interpolation({
+ property: 'shape-margin',
+ from: '0px',
+ to: '100px'
+}, [
+ {at: -0.3, expect: '0px'}, // CSS shape-margin can't be negative.
+ {at: 0, expect: '0px'},
+ {at: 0.3, expect: '30px'},
+ {at: 0.6, expect: '60px'},
+ {at: 1, expect: '100px'},
+ {at: 1.5, expect: '150px'},
+]);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-outside-interpolation.html b/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-outside-interpolation.html
new file mode 100644
index 00000000000..3380acdba00
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shapes/animation/shape-outside-interpolation.html
@@ -0,0 +1,137 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>shape-outside interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes/#shape-outside-property">
+<meta name="assert" content="shape-outside supports animation as <basic-shape> or discrete">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ shape-outside: circle(80% at 30% 10%);
+}
+.target {
+ shape-outside: circle(60% at 10% 30%);
+}
+</style>
+
+<body></body>
+
+<script>
+/* TODO: add inset test once blend() works for it */
+
+test_interpolation({
+ property: 'shape-outside',
+ from: neutralKeyframe,
+ to: 'circle(40% at 20% 20%)',
+}, [
+ {at: -0.3, expect: 'circle(66% at 7% 33%)'},
+ {at: 0, expect: 'circle(60% at 10% 30%)'},
+ {at: 0.3, expect: 'circle(54% at 13% 27%)'},
+ {at: 0.6, expect: 'circle(48% at 16% 24%)'},
+ {at: 1, expect: 'circle(40% at 20% 20%)'},
+ {at: 1.5, expect: 'circle(30% at 25% 15%)'},
+]);
+
+test_no_interpolation({
+ property: 'shape-outside',
+ from: 'initial',
+ to: 'circle(40% at 20% 20%)',
+});
+
+test_interpolation({
+ property: 'shape-outside',
+ from: 'inherit',
+ to: 'circle(40% at 20% 20%)',
+}, [
+ {at: -0.3, expect: 'circle(92% at 33% 7%)'},
+ {at: 0, expect: 'circle(80% at 30% 10%)'},
+ {at: 0.3, expect: 'circle(68% at 27% 13%)'},
+ {at: 0.6, expect: 'circle(56% at 24% 16%)'},
+ {at: 1, expect: 'circle(40% at 20% 20%)'},
+ {at: 1.5, expect: 'circle(20% at 15% 25%)'},
+]);
+
+test_no_interpolation({
+ property: 'shape-outside',
+ from: 'unset',
+ to: 'circle(40% at 20% 20%)',
+});
+
+test_interpolation({
+ property: 'shape-outside',
+ from: 'circle(100% at 0% 0%)',
+ to: 'circle(50% at 25% 25%)',
+}, [
+ {at: -0.3, expect: 'circle(115% at -7.5% -7.5%)'},
+ {at: 0, expect: 'circle(100% at 0% 0%)'},
+ {at: 0.3, expect: 'circle(85% at 7.5% 7.5%)'},
+ {at: 0.6, expect: 'circle(70% at 15% 15%)'},
+ {at: 1, expect: 'circle(50% at 25% 25%)'},
+ {at: 1.5, expect: 'circle(25% at 37.5% 37.5%)'}
+]);
+
+test_interpolation({
+ property: 'shape-outside',
+ from: 'ellipse(100% 100% at 0% 0%)',
+ to: 'ellipse(50% 50% at 25% 25%)',
+}, [
+ {at: -0.3, expect: 'ellipse(115% 115% at -7.5% -7.5%)'},
+ {at: 0, expect: 'ellipse(100% 100% at 0% 0%)'},
+ {at: 0.3, expect: 'ellipse(85% 85% at 7.5% 7.5%)'},
+ {at: 0.6, expect: 'ellipse(70% 70% at 15% 15%)'},
+ {at: 1, expect: 'ellipse(50% 50% at 25% 25%)'},
+ {at: 1.5, expect: 'ellipse(25% 25% at 37.5% 37.5%)'}
+]);
+
+test_interpolation({
+ property: 'shape-outside',
+ from: 'polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)',
+ to: 'polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)',
+}, [
+ {at: -0.3, expect: 'polygon(nonzero, -7.5px -7.5px, 17.5px 17.5px, 42.5px 42.5px)'},
+ {at: 0, expect: 'polygon(nonzero, 0px 0px, 25px 25px, 50px 50px)'},
+ {at: 0.3, expect: 'polygon(nonzero, 7.5px 7.5px, 32.5px 32.5px, 57.5px 57.5px)'},
+ {at: 0.6, expect: 'polygon(nonzero, 15px 15px, 40px 40px, 65px 65px)'},
+ {at: 1, expect: 'polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)'},
+ {at: 1.5, expect: 'polygon(nonzero, 37.5px 37.5px, 62.5px 62.5px, 87.5px 87.5px)'}
+]);
+
+test_no_interpolation({
+ property: 'shape-outside',
+ from: 'polygon(evenodd, 0px 0px, 25px 25px, 50px 50px)',
+ to: 'polygon(nonzero, 25px 25px, 50px 50px, 75px 75px)',
+});
+
+test_interpolation({
+ property: 'shape-outside',
+ from: 'inset(100%)',
+ to: 'inset(120%)',
+}, [
+ {at: -0.3, expect: 'inset(94%)'},
+ {at: 0, expect: 'inset(100%)'},
+ {at: 0.3, expect: 'inset(106%)'},
+ {at: 0.6, expect: 'inset(112%)'},
+ {at: 1, expect: 'inset(120%)'},
+ {at: 1.5, expect: 'inset(130%)'},
+]);
+
+test_no_interpolation({
+ property: 'shape-outside',
+ from: 'none',
+ to: 'ellipse(100% 100% at 0% 0%)',
+});
+
+// TODO: add intermediate keyframe tests when CSS shapes position computed values are cleaned up
+test_interpolation({
+ property: 'shape-outside',
+ from: 'circle(25% at right 5% bottom 15px)',
+ to: 'circle(45% at right 25% bottom 35px)',
+}, [
+ {at: 0.25, expect: 'circle(30% at 90% calc(-20px + 100%))'},
+ {at: 0.5, expect: 'circle(35% at 85% calc(-25px + 100%))'},
+ {at: 0.75, expect: 'circle(40% at 80% calc(-30px + 100%))'},
+]);
+</script>
diff --git a/tests/wpt/web-platform-tests/docs/running-tests/android_webview.md b/tests/wpt/web-platform-tests/docs/running-tests/android_webview.md
new file mode 100644
index 00000000000..5d1cb26ecaf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/docs/running-tests/android_webview.md
@@ -0,0 +1,36 @@
+# Android WebView
+
+To run WPT on WebView on an Android device, some additional set-up is required.
+
+Currently, Android WebView support is experimental.
+
+* Please check [Chrome for Android](chrome_android) for the common
+ instructions for Android support first.
+
+* Install an up-to-date version of system webview shell:
+ * Go to
+ [chromium-browser-snapshots](https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Android/)
+ * Find the subdirectory with the highest number and click it.
+ * Download `chrome-android.zip` file and unzip it.
+ * Install `SystemWebViewShell.apk`.
+ * On emulator, system webview shell may already be installed by default. Then
+ you may need to remove the existing apk:
+ * Choose a userdebug build.
+ * Run an emulator with
+ [writable system partition from command line](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/android_emulator.md/)
+
+* If you have an issue with ChromeDriver version, try removing
+ `_venv/bin/chromedriver` such that wpt runner can install a matching version
+ automatically. Failing that, please check your environment path and make
+ sure that no other ChromeDriver is used.
+
+Example command line:
+
+```bash
+./wpt run --test-type=testharness android_webview <TESTS>
+```
+
+* Note that there is no support for channel or automatic installation. The test
+ will be run against the current WebView version installed on the device.
+
+* Reftests are not supported at the moment.
diff --git a/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md b/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md
index 97a6b9e940f..35c1905a0c5 100644
--- a/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md
+++ b/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md
@@ -144,6 +144,7 @@ Additional browser-specific documentation:
chrome
chrome_android
+ android_webview
safari
```
diff --git a/tests/wpt/web-platform-tests/dom/idlharness.any.js b/tests/wpt/web-platform-tests/dom/idlharness.any.js
new file mode 100644
index 00000000000..5119f9f9754
--- /dev/null
+++ b/tests/wpt/web-platform-tests/dom/idlharness.any.js
@@ -0,0 +1,25 @@
+// META: global=!window,worker
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+// META: timeout=long
+
+// Note: This test doesn't cover the Window context, see idlharness.window.js
+// for that coverage and why it can't be merged into this test.
+
+'use strict';
+
+idl_test(
+ ['dom'],
+ ['html'],
+ idl_array => {
+ idl_array.add_objects({
+ EventTarget: ['new EventTarget()'],
+ Event: ['new Event("foo")'],
+ CustomEvent: ['new CustomEvent("foo")'],
+ AbortController: ['new AbortController()'],
+ AbortSignal: ['new AbortController().signal'],
+ });
+ }
+);
+
+done();
diff --git a/tests/wpt/web-platform-tests/dom/idlharness.window.js b/tests/wpt/web-platform-tests/dom/idlharness.window.js
new file mode 100644
index 00000000000..7d87aeaa337
--- /dev/null
+++ b/tests/wpt/web-platform-tests/dom/idlharness.window.js
@@ -0,0 +1,47 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+// META: script=/common/subset-tests-by-key.js
+// META: variant=?include=Node
+// META: variant=?exclude=Node
+// META: timeout=long
+
+// Note: This isn't merged into idlharness.any.js because of the use of variants,
+// i.e., include=Node wouldn't make sense for workers.
+
+'use strict';
+
+idl_test(
+ ['dom'],
+ ['html'],
+ idl_array => {
+ self.xmlDoc = document.implementation.createDocument(null, '', null);
+ self.detachedRange = document.createRange();
+ detachedRange.detach();
+ self.element = xmlDoc.createElementNS(null, 'test');
+ element.setAttribute('bar', 'baz');
+
+ idl_array.add_objects({
+ EventTarget: ['new EventTarget()'],
+ Event: ['document.createEvent("Event")', 'new Event("foo")'],
+ CustomEvent: ['new CustomEvent("foo")'],
+ AbortController: ['new AbortController()'],
+ AbortSignal: ['new AbortController().signal'],
+ Document: ['new Document()'],
+ XMLDocument: ['xmlDoc'],
+ DOMImplementation: ['document.implementation'],
+ DocumentFragment: ['document.createDocumentFragment()'],
+ DocumentType: ['document.doctype'],
+ Element: ['element'],
+ Attr: ['document.querySelector("[id]").attributes[0]'],
+ Text: ['document.createTextNode("abc")'],
+ ProcessingInstruction: ['xmlDoc.createProcessingInstruction("abc", "def")'],
+ Comment: ['document.createComment("abc")'],
+ Range: ['document.createRange()', 'detachedRange'],
+ NodeIterator: ['document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false)'],
+ TreeWalker: ['document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false)'],
+ NodeList: ['document.querySelectorAll("script")'],
+ HTMLCollection: ['document.body.children'],
+ DOMTokenList: ['document.body.classList'],
+ });
+ }
+);
diff --git a/tests/wpt/web-platform-tests/dom/interfaces.html b/tests/wpt/web-platform-tests/dom/interfaces.html
deleted file mode 100644
index 111608bcaec..00000000000
--- a/tests/wpt/web-platform-tests/dom/interfaces.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!doctype html>
-<meta charset=utf-8>
-<title>DOM IDL tests</title>
-<meta name="timeout" content="long">
-<meta name="variant" content="?include=Node">
-<meta name="variant" content="?exclude=Node">
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script src=/common/subset-tests-by-key.js></script>
-<script src=/resources/WebIDLParser.js></script>
-<script src=/resources/idlharness.js></script>
-
-<h1>DOM IDL tests</h1>
-<div id=log></div>
-<script>
-"use strict";
-var xmlDoc = document.implementation.createDocument(null, "", null);
-var detachedRange = document.createRange();
-detachedRange.detach();
-var element = xmlDoc.createElementNS(null, "test");
-element.setAttribute("bar", "baz");
-
-var idlArray = new IdlArray();
-
-function doTest([html, dom]) {
- idlArray.add_idls(dom);
- idlArray.add_dependency_idls(html);
- idlArray.add_objects({
- EventTarget: ['new EventTarget()'],
- Event: ['document.createEvent("Event")', 'new Event("foo")'],
- CustomEvent: ['new CustomEvent("foo")'],
- AbortController: ['new AbortController()'],
- AbortSignal: ['new AbortController().signal'],
- Document: ['new Document()'],
- XMLDocument: ['xmlDoc'],
- DOMImplementation: ['document.implementation'],
- DocumentFragment: ['document.createDocumentFragment()'],
- DocumentType: ['document.doctype'],
- Element: ['element'],
- Attr: ['document.querySelector("[id]").attributes[0]'],
- Text: ['document.createTextNode("abc")'],
- ProcessingInstruction: ['xmlDoc.createProcessingInstruction("abc", "def")'],
- Comment: ['document.createComment("abc")'],
- Range: ['document.createRange()', 'detachedRange'],
- NodeIterator: ['document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false)'],
- TreeWalker: ['document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false)'],
- NodeList: ['document.querySelectorAll("script")'],
- HTMLCollection: ['document.body.children'],
- DOMTokenList: ['document.body.classList'],
- });
- idlArray.test();
-}
-
-function fetchText(url) {
- return fetch(url).then((response) => response.text());
-}
-
-promise_test(function() {
- return Promise.all(['/interfaces/html.idl',
- '/interfaces/dom.idl'].map(fetchText))
- .then(doTest);
-}, "Test driver");
-</script>
diff --git a/tests/wpt/web-platform-tests/dom/nodes/aria-element-reflection.tentative.html b/tests/wpt/web-platform-tests/dom/nodes/aria-element-reflection.tentative.html
new file mode 100644
index 00000000000..974727f92aa
--- /dev/null
+++ b/tests/wpt/web-platform-tests/dom/nodes/aria-element-reflection.tentative.html
@@ -0,0 +1,266 @@
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <meta charset="utf-8" />
+ <title>Element Reflection for aria-activedescendant and aria-errormessage</title>
+ <link rel=help href="https://whatpr.org/html/3917/common-dom-interfaces.html#reflecting-content-attributes-in-idl-attributes:element">
+ <link rel="author" title="Meredith Lane" href="meredithl@chromium.org">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ </head>
+ <div id="activedescendant" aria-activedescendant="x"></div>
+
+ <div id="parent-listbox" role="listbox" aria-activedescendant="i1">
+ <div role="option" id="i1">Item 1</div>
+ <div role="option" id="i2">Item 2</div>
+ </div>
+
+ <script>
+ test(function(t) {
+ const ancestor = document.getElementById("parent-listbox");
+ assert_equals(activedescendant.ariaActiveDescendantElement, null,
+ "invalid ID for relationship returns null");
+
+ const descendant1 = document.getElementById("i1");
+ const descendant2 = document.getElementById("i2");
+
+ // Element reference should be set if the content attribute was included.
+ assert_equals(ancestor.getAttribute("aria-activedescendant"), "i1", "check content attribute after parsing.");
+ assert_equals(ancestor.ariaActiveDescendantElement, i1, "check idl attribute after parsing.");
+
+ // If we set the content attribute, the element reference should reflect this.
+ ancestor.setAttribute("aria-activedescendant", "i2");
+ assert_equals(ancestor.ariaActiveDescendantElement, descendant2, "setting the content attribute updates the element reference.");
+
+ // Setting the element reference should be reflected in the content attribute.
+ ancestor.ariaActiveDescendantElement = descendant1;
+ assert_equals(ancestor.ariaActiveDescendantElement, descendant1, "getter should return the right element reference.");
+ assert_equals(ancestor.getAttribute("aria-activedescendant"), "i1", "content attribute should reflect the element reference.");
+
+ // Both content and IDL attribute should be nullable.
+ ancestor.ariaActiveDescendantElement = null;
+ assert_equals(ancestor.ariaActiveDescendantElement, null);
+ assert_false(ancestor.hasAttribute("aria-activedescendant"));
+ assert_equals(ancestor.getAttribute("aria-activedescendant"), null, "nullifying the idl attribute removes the content attribute.");
+
+ // Setting content attribute to non-existent or non compatible element should nullify the IDL attribute.
+ // Reset the element to an existant one.
+ ancestor.setAttribute("aria-activedescendant", "i1");
+ assert_equals(ancestor.ariaActiveDescendantElement, i1, "reset attribute.");
+
+ ancestor.setAttribute("aria-activedescendant", "non-existent-element");
+ assert_equals(ancestor.getAttribute("aria-activedescendant"), "non-existent-element");
+ assert_equals(ancestor.ariaActiveDescendantElement, null,"non-DOM content attribute should null the element reference");
+ }, "aria-activedescendant element reflection");
+ </script>
+
+ <div id="parent-listbox-2" role="listbox" aria-activedescendant="option1">
+ <div role="option" id="option1">Item 1</div>
+ <div role="option" id="option2">Item 2</div>
+ </div>
+
+ <script>
+ test(function(t) {
+ const ancestor = document.getElementById("parent-listbox-2");
+ const option1 = document.getElementById("option1");
+ const option2 = document.getElementById("option2");
+ assert_equals(ancestor.ariaActiveDescendantElement, option1);
+
+ option1.removeAttribute("id");
+ option2.setAttribute("id", "option1");
+ const option2Duplicate = document.getElementById("option1");
+ assert_equals(option2, option2Duplicate);
+
+ assert_equals(ancestor.ariaActiveDescendantElement, option2);
+ }, "If the content attribute is set directly, the IDL attribute getter always returns the first element whose ID matches the content attribute.");
+ </script>
+
+ <div id="blank-id-parent" role="listbox">
+ <div role="option" id="multiple-id"></div>
+ <div role="option" id="multiple-id"></div>
+ </div>
+
+ <script>
+ test(function(t) {
+ const ancestor = document.getElementById("blank-id-parent");
+
+ // Get second child of parent. This violates the setting of a reflected element
+ // as it will not be the first child of the parent with that ID, which should
+ // result in an empty string for the content attribute.
+ ancestor.ariaActiveDescendantElement = ancestor.children[1];
+ assert_true(ancestor.hasAttribute("aria-activedescendant"));
+ assert_equals(ancestor.getAttribute("aria-activedescendant"), "");
+ assert_equals(ancestor.ariaActiveDescendantElement, ancestor.children[1]);
+ }, "Setting the IDL attribute to an element which is not the first element in DOM order with its ID causes the content attribute to be an empty string");
+ </script>
+
+ <div id="outer-container">
+ <p id="light-paragraph">Hello world!</p>
+ <span class="shadow-host">
+ </span>
+ </div>
+
+ <script>
+ test(function(t) {
+ const shadowElement = document.querySelector(".shadow-host");
+ const shadow = shadowElement.attachShadow({mode: "open"});
+ const link = document.createElement("a");
+ shadow.appendChild(link);
+
+ const lightPara = document.getElementById("light-paragraph");
+ assert_equals(lightPara.ariaActiveDescendantElement, null);
+
+ // The given element crosses a shadow dom boundary, so it cannot be
+ // set as an element reference.
+ lightPara.ariaActiveDescendantElement = link;
+ assert_equals(lightPara.ariaActiveDescendantElement, null);
+
+ // The given element crosses a shadow dom boundary (upwards), so
+ // can be used as an element reference, but the content attribute
+ // should reflect the empty string.
+ link.ariaActiveDescendantElement = lightPara;
+ assert_equals(link.ariaActiveDescendantElement, lightPara);
+ assert_equals(link.getAttribute("aria-activedescendant"), "");
+ }, "Setting an element reference that crosses into a shadow tree is disallowed, but setting one that is in a shadow inclusive ancestor is allowed.");
+ </script>
+
+ <input id="startTime" ></input>
+ <span id="errorMessage">Invalid Time</span>
+
+ <script>
+ test(function(t) {
+ const inputElement = document.getElementById("startTime");
+ const errorMessage = document.getElementById("errorMessage");
+
+ inputElement.ariaErrorMessageElement = errorMessage;
+ assert_equals(inputElement.getAttribute("aria-errormessage"), "errorMessage");
+
+ inputElement.ariaErrorMessageElement = null;
+ assert_equals(inputElement.ariaErrorMessageElement, null, "blah");
+ assert_false(inputElement.hasAttribute("aria-errormessage"));
+
+ inputElement.setAttribute("aria-errormessage", "errorMessage");
+ assert_equals(inputElement.ariaErrorMessageElement, errorMessage);
+
+ }, "aria-errormessage");
+
+ </script>
+
+ <label>
+ Password:
+ <input id="password-field" type="password" aria-details="pw">
+ </label>
+
+ <ul>
+ <li id="list-item-1">First description.</li>
+ <li id="list-item-2">Second description.</li>
+ </ul>
+
+ <script>
+
+ test(function(t) {
+ const inputElement = document.getElementById("password-field");
+ const ul1 = document.getElementById("list-item-1");
+ const ul2 = document.getElementById("list-item-2");
+
+ assert_equals(inputElement.ariaDetailsElement, null);
+ inputElement.ariaDetailsElement = ul1;
+ assert_equals(inputElement.getAttribute("aria-details"), "list-item-1");
+
+ inputElement.ariaDetailsElement = ul2;
+ assert_equals(inputElement.getAttribute("aria-details"), "list-item-2");
+ }, "aria-details");
+ </script>
+
+ <div id="old-parent" role="listbox" aria-activedescendant="content-attr-element">
+ <div role="option" id="content-attr-element">Item 1</div>
+ <div role="option" id="idl-attr-element">Item 2</div>
+ </div>
+
+ <script>
+
+ test(function(t) {
+ const deletionParent = document.getElementById("old-parent");
+
+ const descendant1 = document.getElementById("content-attr-element");
+ const descendant2 = document.getElementById("idl-attr-element");
+
+ // Deleting an element set via the content attribute.
+ assert_equals(deletionParent.getAttribute("aria-activedescendant"), "content-attr-element");
+ assert_equals(deletionParent.ariaActiveDescendantElement, descendant1);
+
+ deletionParent.removeChild(descendant1);
+ assert_equals(deletionParent.getAttribute("aria-activedescendant"), "content-attr-element");
+ assert_equals(deletionParent.ariaActiveDescendantElement, null);
+
+ // Deleting an element set via the IDL attribute.
+ deletionParent.ariaActiveDescendantElement = descendant2;
+ assert_equals(deletionParent.getAttribute("aria-activedescendant"), "idl-attr-element");
+
+ deletionParent.removeChild(descendant2);
+ assert_equals(deletionParent.ariaActiveDescendantElement, null);
+
+ // The content attribute will still reflect the id.
+ assert_equals(deletionParent.getAttribute("aria-activedescendant"), "idl-attr-element");
+ }, "Deleting a reflected element should return null for the IDL attribute and cause the content attribute to become stale.");
+ </script>
+
+ <div id="parent" role="listbox" aria-activedescendant="original">
+ <div role="option" id="original">Item 1</div>
+ <div role="option" id="element-with-persistant-id">Item 2</div>
+ </div>
+
+ <script>
+ test(function(t) {
+ const parentNode = document.getElementById("parent");
+ const changingIdElement = document.getElementById("original");
+ const persistantIDElement = document.getElementById("element-with-persistant-id");
+
+ assert_equals(parentNode.ariaActiveDescendantElement, changingIdElement);
+
+ // Modify the id attribute.
+ changingIdElement.setAttribute("id", "new-id");
+
+ // The content attribute still reflects the old id, and we expect the
+ // Element reference to be null as there is no DOM node with id "original"
+ assert_equals(parentNode.getAttribute("aria-activedescendant"), "original");
+ assert_equals(parentNode.ariaActiveDescendantElement, null, "Element set via content attribute with a changed id will return null on getting");
+
+ parentNode.ariaActiveDescendantElement = changingIdElement;
+ assert_equals(parentNode.getAttribute("aria-activedescendant"), "new-id");
+
+ // The explicitly set element takes precendance over the content attribute.
+ // This means that we still return the same element reference, but the
+ // content attribute reflects the old id.
+ changingIdElement.setAttribute("id", "newer-id");
+ assert_equals(parentNode.ariaActiveDescendantElement, changingIdElement, "explicitly set element is still present even after the id has been changed");
+ assert_equals(parentNode.getAttribute("aria-activedescendant"), "new-id", "content attribute reflects the id that was present upon explicitly setting the element reference.");
+ }, "Changing the ID of an element causes the content attribute to become out of sync.");
+ </script>
+
+ <div id="light-parent" role="listbox">
+ <div role="option" id="light-element">Hello world!</div>
+ </div>
+ <div id="shadowHost"></div>
+
+ <script>
+ test(function(t) {
+ const shadowElement = document.getElementById("shadowHost");
+ const shadowHost = shadowElement.attachShadow({mode: "open"});
+ const lightParent = document.getElementById("light-parent");
+ const optionElement = document.getElementById("light-element");
+
+ lightParent.ariaActiveDescendantElement = optionElement;
+ assert_equals(lightParent.ariaActiveDescendantElement, optionElement);
+
+ // Move the referenced element into shadow DOM.
+ shadowHost.appendChild(optionElement);
+ assert_equals(lightParent.ariaActiveDescendantElement, null);
+ assert_equals(lightParent.getAttribute("aria-activedescendant"), "light-element");
+
+ // Move the referenced element back into light DOM.
+ lightParent.appendChild(optionElement);
+ assert_equals(lightParent.ariaActiveDescendantElement, optionElement);
+ }, "Reparenting an element into a descendant shadow scope nullifies the element reference.");
+ </script>
+</html>
diff --git a/tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html b/tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html
index 6a2ae80a538..b501bde9d25 100644
--- a/tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html
+++ b/tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html
@@ -22,16 +22,15 @@
<script>
'use strict';
- promise_test(async () => {
- const idls = await fetch('/interfaces/encrypted-media.idl').then(r => r.text());
- const html = await fetch('/interfaces/html.idl').then(r => r.text());
- const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
- var idl_array = new IdlArray();
- idl_array.add_idls(idls);
- idl_array.add_dependency_idls(html);
- idl_array.add_dependency_idls(dom);
- idl_array.test();
- }, 'Test encrypted-media IDL');
+ idl_test(
+ ['encrypted-media'],
+ ['html', 'dom'],
+ idl_array => {
+ idl_array.add_objects({
+ Navigator: ['navigator'],
+ });
+ }
+ );
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/event-timing/bufferbeforeonload.html b/tests/wpt/web-platform-tests/event-timing/bufferbeforeonload.html
deleted file mode 100644
index 4b003a98f64..00000000000
--- a/tests/wpt/web-platform-tests/event-timing/bufferbeforeonload.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html>
-<html>
-<meta charset=utf-8 />
-<title>Event Timing: buffer long-latency events before onload</title>
-<meta name="timeout" content="long">
-<button id='button' onmousedown='clickDelay()'>Generate a 'click' event</button>
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script src=/resources/testdriver.js></script>
-<script src=/resources/testdriver-vendor.js></script>
-
-<script src=resources/event-timing-test-utils.js></script>
-<img src=resources/slow-image.py>
-
-<script>
- let clickTimeMin;
- let processingStartMin;
- let onloadStart;
- let firstClickStart = 0;
- let firstClickEnd = 0;
- function clickDelay() {
- const onclickStart = performance.now();
- if (firstClickStart === 0)
- firstClickStart = onclickStart;
- while(performance.now() < onclickStart + 60) {}
- if (firstClickEnd === 0)
- firstClickEnd = performance.now();
- }
-
- function validateEntries(entries) {
- const entriesBeforeOnload = entries.filter(
- e => e.startTime < onloadStart);
- assert_equals(entriesBeforeOnload.length, 1,
- "Long latency events before onload should be buffered.");
- const entry = entriesBeforeOnload[0];
- verifyClickEvent(entry, true);
-
- assert_greater_than_equal(entry.startTime, clickTimeMin,
- "The entry's start time should be later than clickTimeMin.");
- assert_greater_than_equal(entry.processingStart, processingStartMin,
- "The entry should be processed later than processingStartMin.");
- assert_less_than_equal(entry.processingStart, firstClickStart,
- "The processingStart must be before firstClickStart.")
- assert_greater_than_equal(entry.processingEnd, firstClickEnd,
- "The processingEnd must be after firstClickEnd.");
-
- const entriesAfterOnload = entries.filter(
- e => e.startTime >= onloadStart);
- assert_equals(entriesAfterOnload.length, 1,
- "Events after onload should still be buffered.");
- }
-
- /* Timeline:
- Begin Busy Loop
- Click 1 arrives
- End Busy Loop
- (Dispatch and Process Click 1 - buffered)
- Onload Event Fires
- Begin Busy Loop
- Click 2 arrives
- End Busy Loop
- (Dispatch and Process Click 2 - not buffered)
- */
- async_test(function(t) {
- if (!window.PerformanceEventTiming)
- assert_unreached("PerformanceEventTiming is not supported");
-
- clickTimeMin = performance.now();
- clickAndBlockMain('button');
- // Event handlers will be dispatched asynchronously, so this will be called
- // before processing begins.
- processingStartMin = performance.now();
- const bufferedEntries = [];
- on_event(window, 'load', e => {
- onloadStart = performance.now();
- // Register the observer after the page has been loaded
- const observer = new PerformanceObserver(function (entryList, observer) {
- entryList.getEntries().forEach(function(entry) {
- assert_equals(entry.entryType, "event");
- if (entry.name === 'mousedown') {
- bufferedEntries.push(entry);
- }
- if (bufferedEntries.length == 2) {
- validateEntries(bufferedEntries)
- observer.disconnect();
- t.done();
- }
- });
- })
- observer.observe({
- type: "event",
- buffered: true
- });
- clickAndBlockMain('button');
- });
- }, "Event Timing: click, onload.");
-
-</script>
-</html>
diff --git a/tests/wpt/web-platform-tests/event-timing/click-timing.html b/tests/wpt/web-platform-tests/event-timing/click-timing.html
new file mode 100644
index 00000000000..afe53bfc23c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/event-timing/click-timing.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8 />
+<title>Event Timing: compare timing of two long clicks
+</title>
+<button id='button'>Generate a 'click' event</button>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/resources/testdriver.js></script>
+<script src=/resources/testdriver-vendor.js></script>
+<script src=resources/event-timing-test-utils.js></script>
+<script>
+ /* Timeline:
+ Observer starts
+ Long click 1
+ Long click 2
+ Once two clicks have been received by observer, compare the timestamps.
+ */
+ let timeBeforeFirstClick;
+ let timeAfterFirstClick;
+ let timeAfterSecondClick;
+ let observedEntries = [];
+ async_test(function(t) {
+ if (!window.PerformanceEventTiming)
+ assert_unreached("PerformanceEventTiming is not supported");
+
+ new PerformanceObserver(t.step_func(entryList => {
+ observedEntries = observedEntries.concat(entryList.getEntries().filter(
+ entry => entry.name === 'mousedown'));
+ if (observedEntries.length < 2)
+ return;
+
+ assert_not_equals(timeBeforeFirstClick, undefined);
+ assert_not_equals(timeAfterFirstClick, undefined);
+ assert_not_equals(timeAfterSecondClick, undefined);
+ // First click.
+ verifyClickEvent(observedEntries[0]);
+ assert_between_exclusive(observedEntries[0].processingStart,
+ timeBeforeFirstClick,
+ timeAfterFirstClick,
+ "First click's processingStart");
+ assert_greater_than(timeAfterFirstClick, observedEntries[0].startTime,
+ "timeAfterFirstClick should be later than first click's start time.");
+
+ // Second click.
+ verifyClickEvent(observedEntries[1]);
+ assert_between_exclusive(observedEntries[1].processingStart,
+ timeAfterFirstClick,
+ timeAfterSecondClick,
+ "Second click's processingStart");
+ assert_greater_than(timeAfterSecondClick, observedEntries[1].startTime,
+ "timeAfterSecondClick should be later than second click's start time.");
+ t.done();
+ })).observe({type: 'event'});
+ timeBeforeFirstClick = performance.now();
+ clickAndBlockMain('button').then( () => {
+ timeAfterFirstClick = performance.now();
+ clickAndBlockMain('button').then(() => {
+ timeAfterSecondClick = performance.now();
+ })
+ });
+ }, "Event Timing: compare click timings.");
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/event-timing/observethenonload.html b/tests/wpt/web-platform-tests/event-timing/observethenonload.html
deleted file mode 100644
index 8295aaf0412..00000000000
--- a/tests/wpt/web-platform-tests/event-timing/observethenonload.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html>
-<html>
-<meta charset=utf-8 />
-<title>Event Timing: Performance observers can observe long-latency events
-</title>
-<meta name="timeout" content="long">
-<button id='button'>Generate a 'click' event</button>
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script src=/resources/testdriver.js></script>
-<script src=/resources/testdriver-vendor.js></script>
-
-<script src=resources/event-timing-test-utils.js></script>
-<img src=resources/slow-image.py>
-
-<script>
- let timeBeforeFirstClick;
- let timeAfterFirstClick;
- let timeAfterSecondClick;
- let onloadStart;
- let observedEntries = [];
-
- function verifyObserverEntries(observedEntries) {
- const entriesAfterFirstClick = observedEntries.filter(
- e => e.startTime > timeAfterFirstClick);
- assert_equals(entriesAfterFirstClick.length, 1,
- 'There should be one event after timeAfterFirstClick.');
- const entry1 = entriesAfterFirstClick[0];
- verifyClickEvent(entry1);
- assert_greater_than(entry1.processingStart, timeAfterFirstClick,
- "entry1's processing start should be after timeAfterFirstClick");
- assert_less_than(entry1.processingStart, timeAfterSecondClick,
- "entry1's processing start should be before timeAfterSecondClick.");
- assert_greater_than(entry1.startTime, onloadStart,
- "entry1's start time should be later than onloadStart.");
-
- const entriesBeforeFirstClick =
- observedEntries.filter(e => e.startTime < timeAfterFirstClick);
- assert_equals(entriesBeforeFirstClick.length, 1,
- 'There should be one event before timeAfterFirstClick.'
- );
- const entry2 = entriesBeforeFirstClick[0];
- verifyClickEvent(entry2);
- assert_greater_than(entry2.processingStart, timeBeforeFirstClick,
- "entry2's processing start should be after timeBeforeFirstClick");
- assert_less_than(entry2.processingStart, timeAfterFirstClick,
- "entry2's processing start should be berfore timeAfterFirstClick.");
- assert_greater_than(timeAfterFirstClick, entry2.startTime,
- "timeAfterFirstClick should be later than entry2's start time.");
- // This should happen before onLoad
- assert_greater_than(onloadStart, entry2.startTime,
- "Onload should be later than entry's start time.");
- }
-
- /* Timeline:
- Observer starts
- Begin Busy Loop
- Click 1 arrives
- End Busy Loop
- (Dispatch and Process Click 1 (buffered, observed))
- Onload Event Fires
- Begin Busy Loop
- Click 2 arrives
- End Busy Loop
- (Dispatch and Process Click 2 (buffered, observed))
- observer callback start
- */
- async_test(function(t) {
- if (!window.PerformanceEventTiming)
- assert_unreached("PerformanceEventTiming is not supported");
-
- const observerPromise = new Promise((resolve, reject) => {
- new PerformanceObserver(function(entryList) {
- observedEntries = observedEntries.concat(entryList.getEntries().filter(
- entry => entry.name === 'mousedown'));
- if (observedEntries.length < 2) return;
- resolve(observedEntries);
- }).observe({ type: 'event' , buffered: true});
- });
- timeBeforeFirstClick = performance.now();
- clickAndBlockMain('button').then( () => {
- timeAfterFirstClick = performance.now();
- });
- on_event(window, 'load', function(e) {
- onloadStart = performance.now();
- // After onload start and before registering observer.
- const bufferPromise = clickAndBlockMain('button').then(wait);
- Promise.all([observerPromise, bufferPromise]).then((results) => {
- timeAfterSecondClick = performance.now();
- t.step(verifyObserverEntries.bind(null, results[0]));
- t.done();
- });
- });
- }, "Event Timing: click, observer, onload, click.");
-
-</script>
-</html>
diff --git a/tests/wpt/web-platform-tests/event-timing/onloadthenobserve-firstInput.html b/tests/wpt/web-platform-tests/event-timing/onloadthenobserve-firstInput.html
deleted file mode 100644
index 3cd80e2eba1..00000000000
--- a/tests/wpt/web-platform-tests/event-timing/onloadthenobserve-firstInput.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html>
-<html>
-<meta charset=utf-8 />
-<title>Event Timing: buffer long-latency events before onload</title>
-<meta name="timeout" content="long">
-<button id='button'>Generate a 'click' event</button>
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script src=/resources/testdriver.js></script>
-<script src=/resources/testdriver-vendor.js></script>
-
-<script src=resources/event-timing-test-utils.js></script>
-
-<script>
- /* Timeline:
- Onload
- PerformanceObserver is registered
- Click 1
- Click 2
- PerformanceObserver should observe only one first-input entry.
- (Dispatch and Process Click 2 - not buffered)
- */
- async_test(function(t) {
- if (!window.PerformanceEventTiming)
- assert_unreached("PerformanceEventTiming is not supported");
-
- let numFirstInputObserved = 0;
- let numEventsObserved = 0;
- let observedEventEntries = [];
-
- const event_observer_promise = new Promise((resolve, reject) => {
- new PerformanceObserver(function(entryList) {
- observedEventEntries = entryList.getEntries().filter(
- entry => entry.name === 'mousedown');
- numEventsObserved += observedEventEntries.length;
- if (numEventsObserved >= 2) {
- // There should be 2 event entries.
- assert_equals(numEventsObserved, 2,
- "There should be 2 observed event entries.");
- resolve();
- }
- }).observe({ type: 'event' , buffered: true});
- });
-
- const first_input_observer_promise = new Promise((resolve, reject) => {
- new PerformanceObserver(function(entryList) {
- assert_equals(entryList.getEntries().length, 1);
- resolve();
- }).observe({ type: 'first-input' , buffered: true});
- });
-
- on_event(window, 'load', function(e) {
- const click_promise = clickAndBlockMain('button').then(() => {
- clickAndBlockMain('button');
- });
- Promise.all(
- [event_observer_promise, first_input_observer_promise, click_promise]
- ).then(() => {
- t.done();
- });
- });
- },
- "Event Timing: check first-input after onload, observer, click, click."
- );
-</script>
-</html>
diff --git a/tests/wpt/web-platform-tests/event-timing/onloadthenobserve.html b/tests/wpt/web-platform-tests/event-timing/onloadthenobserve.html
deleted file mode 100644
index 4365f4837bc..00000000000
--- a/tests/wpt/web-platform-tests/event-timing/onloadthenobserve.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html>
-<html>
-<meta charset=utf-8 />
-<title>Event Timing: long-latency events after onload and before observer
-registration are lost
-</title>
-<meta name="timeout" content="long">
-<button id='button'>Generate a 'click' event</button>
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script src=/resources/testdriver.js></script>
-<script src=/resources/testdriver-vendor.js></script>
-
-<script src=resources/event-timing-test-utils.js></script>
-<script>
- let callbackTime;
- let observerStart;
- let processingStartMin;
-
- function verifyObserverEntries(observedEntries) {
- // Verify observer entries. Should not include first click since we didn't
- // buffered to true.
- assert_equals(observedEntries.length, 1, "Long latency task after observer start should be observed.");
- const entry = observedEntries[0];
- verifyClickEvent(entry);
- assert_greater_than(entry.processingStart, processingStartMin,
- "The entry's processing start should be later than processingStartMin.");
- assert_greater_than(callbackTime, entry.processingStart,
- "The callback time should be later than the entry's processing start.");
- assert_greater_than(entry.startTime, observerStart,
- "The entry's start time should be later than observer start.");
- assert_greater_than(callbackTime, entry.startTime,
- "The callback time should be later than entry's start time.");
- }
-
- function startObserver(t) {
- new PerformanceObserver(t.step_func_done((entryList, obs) => {
- callbackTime = performance.now();
- const observedEntries = entryList.getEntries().filter(
- entry => entry.name === 'mousedown');
- verifyObserverEntries(observedEntries);
- })).observe({ type: 'event'});
- observerStart = performance.now();
- }
-
- /* Timeline:
- Onload Event fires
- Begin Busy Loop
- Click 1 arrives
- End Busy Loop
- (Dispatch and Process Click 1 (not buffered, not observed))
- Observer start
- Begin Busy Loop
- Click 2 arrives
- End Busy Loop
- (Dispatch and Process Click 2 (not buffered, observed))
- */
- async_test(function(t) {
- if (!window.PerformanceEventTiming)
- assert_unreached("PerformanceEventTiming is not supported");
-
- // Use a dummy observer to know when the first click has been dispatched.
- const observerPromise = new Promise((resolve, reject) => {
- new PerformanceObserver((entryList, observer) => {
- resolve();
- observer.disconnect();
- }).observe({ entryTypes: ['event'] });
- });
- on_event(window, 'load', () => {
- const clickPromise = clickAndBlockMain('button');
- Promise.all([observerPromise, clickPromise]).then(() => {
- startObserver(t);
- clickAndBlockMain('button');
- processingStartMin = performance.now();
- });
- });
- },"Event Timing: onload, click, observer, click.");
-
-</script>
-</html>
diff --git a/tests/wpt/web-platform-tests/geolocation-API/idlharness.window.js b/tests/wpt/web-platform-tests/geolocation-API/idlharness.window.js
index f8c92c12135..fe4ac8895df 100644
--- a/tests/wpt/web-platform-tests/geolocation-API/idlharness.window.js
+++ b/tests/wpt/web-platform-tests/geolocation-API/idlharness.window.js
@@ -3,16 +3,15 @@
// https://www.w3.org/TR/geolocation-API/
-promise_test(async () => {
- const idl = await fetch('/interfaces/geolocation-API.idl').then(r => r.text());
- const html = await fetch('/interfaces/html.idl').then(r => r.text());
-
- const idl_array = new IdlArray();
- idl_array.add_idls(idl);
- idl_array.add_dependency_idls(html);
- idl_array.add_objects({
- Navigator: ["navigator"],
- Geolocation: ["navigator.geolocation"]
- });
- idl_array.test();
-}, 'geolocation-API interfaces');
+idl_test(
+ ['geolocation-API'],
+ ['html'],
+ idl_array => {
+ self.audio = document.createElement('audio');
+ self.video = document.createElement('video');
+ idl_array.add_objects({
+ Navigator: ['navigator'],
+ Geolocation: ['navigator.geolocation'],
+ });
+ }
+);
diff --git a/tests/wpt/web-platform-tests/html/dom/interfaces.worker.js b/tests/wpt/web-platform-tests/html/dom/interfaces.worker.js
index f49198cd5c6..b720d54f3d9 100644
--- a/tests/wpt/web-platform-tests/html/dom/interfaces.worker.js
+++ b/tests/wpt/web-platform-tests/html/dom/interfaces.worker.js
@@ -8,6 +8,7 @@ idl_test(
["dom", "cssom", "touch-events", "uievents"],
idlArray => {
idlArray.add_objects({
+ WorkerLocation: ['self.location'],
WorkerNavigator: ['self.navigator'],
WebSocket: ['new WebSocket("ws://foo")'],
CloseEvent: ['new CloseEvent("close")'],
diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html
new file mode 100644
index 00000000000..b432698f210
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html
@@ -0,0 +1,10 @@
+<base id="base" target="_blank">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe id="i" src="about:blank"></iframe>
+<script>
+async_test(function(t) {
+ window.onmessage = () => t.done();
+ i.src = "data:text/html,This should navigate the iframe<script>top.postMessage('done', '*');</sc" + "ript>";
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html
new file mode 100644
index 00000000000..2914f1f77f5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html
@@ -0,0 +1,10 @@
+<base id="base" target="_blank">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe id="i" src="about:blank"></iframe>
+<script>
+async_test(function(t) {
+ window.onmessage = () => t.done();
+ i.contentWindow.location = "data:text/html,This should navigate the iframe<script>top.postMessage('done', '*');</sc" + "ript>";
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/inert/inert-retargeting-iframe.tentative.html b/tests/wpt/web-platform-tests/inert/inert-retargeting-iframe.tentative.html
index c31cc88ccec..ddcb3ccb0d2 100644
--- a/tests/wpt/web-platform-tests/inert/inert-retargeting-iframe.tentative.html
+++ b/tests/wpt/web-platform-tests/inert/inert-retargeting-iframe.tentative.html
@@ -158,7 +158,7 @@ function expectEventsOn(events, element) {
}
element.addEventListener(event, f, { capture: true, once: true });
- setTimeout(() => {
+ step_timeout(() => {
element.removeEventListener(event, f, { capture: true });
reject("did not get " + event + " on " + element.id);
}, 1000);
@@ -181,7 +181,7 @@ function unexpectEventsOn(events, element) {
}
element.addEventListener(event, f, { capture: true, once: true });
- setTimeout(() => {
+ step_timeout(() => {
element.removeEventListener(event, f, { capture: true });
resolve();
}, 1000);
diff --git a/tests/wpt/web-platform-tests/inert/inert-retargeting.tentative.html b/tests/wpt/web-platform-tests/inert/inert-retargeting.tentative.html
index 6ef3b2a1b1b..2280cf5a5d1 100644
--- a/tests/wpt/web-platform-tests/inert/inert-retargeting.tentative.html
+++ b/tests/wpt/web-platform-tests/inert/inert-retargeting.tentative.html
@@ -159,7 +159,7 @@ function expectEventsOn(events, element) {
}
element.addEventListener(event, f, { capture: true, once: true });
- setTimeout(() => {
+ step_timeout(() => {
element.removeEventListener(event, f, { capture: true });
reject("did not get " + event + " on " + element.id);
}, 1000);
@@ -182,7 +182,7 @@ function unexpectEventsOn(events, element) {
}
element.addEventListener(event, f, { capture: true, once: true });
- setTimeout(() => {
+ step_timeout(() => {
element.removeEventListener(event, f, { capture: true });
resolve();
}, 1000);
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html.ini
index 69dc018f389..69dc018f389 100644
--- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_chain_ini.html.ini
diff --git a/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl b/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl
index f2625ebe53d..a8ef47e89ab 100644
--- a/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl
+++ b/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl
@@ -29,7 +29,7 @@ interface IDBOpenDBRequest : IDBRequest {
};
[Exposed=(Window,Worker),
- Constructor(DOMString type, optional IDBVersionChangeEventInit eventInitDict)]
+ Constructor(DOMString type, optional IDBVersionChangeEventInit eventInitDict = {})]
interface IDBVersionChangeEvent : Event {
readonly attribute unsigned long long oldVersion;
readonly attribute unsigned long long? newVersion;
@@ -70,8 +70,9 @@ interface IDBDatabase : EventTarget {
optional IDBTransactionMode mode = "readonly");
void close();
- [NewObject] IDBObjectStore createObjectStore(DOMString name,
- optional IDBObjectStoreParameters options);
+ [NewObject] IDBObjectStore createObjectStore(
+ DOMString name,
+ optional IDBObjectStoreParameters options = {});
void deleteObjectStore(DOMString name);
// Event handlers:
@@ -115,7 +116,7 @@ interface IDBObjectStore {
[NewObject] IDBIndex createIndex(DOMString name,
(DOMString or sequence<DOMString>) keyPath,
- optional IDBIndexParameters options);
+ optional IDBIndexParameters options = {});
void deleteIndex(DOMString name);
};
diff --git a/tests/wpt/web-platform-tests/interfaces/dedicated-workers.idl b/tests/wpt/web-platform-tests/interfaces/dedicated-workers.idl
deleted file mode 100644
index 8d7255f2a56..00000000000
--- a/tests/wpt/web-platform-tests/interfaces/dedicated-workers.idl
+++ /dev/null
@@ -1,133 +0,0 @@
-// -----------------------------------------------------------------------------
-// DOM
-// -----------------------------------------------------------------------------
-[Constructor(), Exposed=(Window,Worker)]
-interface EventTarget {
- void addEventListener(DOMString type, EventListener? callback, optional (AddEventListenerOptions or boolean) options);
- void removeEventListener(DOMString type, EventListener? callback, optional (EventListenerOptions or boolean) options);
- boolean dispatchEvent(Event event);
-};
-
-callback interface EventListener {
- void handleEvent(Event event);
-};
-
-dictionary EventListenerOptions {
- boolean capture = false;
-};
-
-dictionary AddEventListenerOptions : EventListenerOptions {
- boolean passive = false;
- boolean once = false;
-};
-
-// -----------------------------------------------------------------------------
-// HTML
-// -----------------------------------------------------------------------------
-[TreatNonCallableAsNull]
-callback EventHandlerNonNull = any (Event event);
-typedef EventHandlerNonNull? EventHandler;
-
-[TreatNonCallableAsNull]
-callback OnErrorEventHandlerNonNull = any ((Event or DOMString) event, optional DOMString source, optional unsigned long lineno, optional unsigned long column, optional any error);
-typedef OnErrorEventHandlerNonNull? OnErrorEventHandler;
-
-[Exposed=Worker]
-interface WorkerGlobalScope : EventTarget {
- readonly attribute WorkerGlobalScope self;
- readonly attribute WorkerLocation location;
- readonly attribute WorkerNavigator navigator;
- void importScripts(USVString... urls);
-
- attribute OnErrorEventHandler onerror;
- attribute EventHandler onlanguagechange;
- attribute EventHandler onoffline;
- attribute EventHandler ononline;
- attribute EventHandler onrejectionhandled;
- attribute EventHandler onunhandledrejection;
-};
-
-[Global=(Worker,DedicatedWorker),Exposed=DedicatedWorker]
-interface DedicatedWorkerGlobalScope : WorkerGlobalScope {
- [Replaceable] readonly attribute DOMString name;
-
- void postMessage(any message, optional sequence<object> transfer = []);
-
- void close();
-
- attribute EventHandler onmessage;
- attribute EventHandler onmessageerror;
-};
-
-typedef (DOMString or Function) TimerHandler;
-
-[Exposed=(Window,Worker)]
-interface mixin WindowOrWorkerGlobalScope {
- [Replaceable] readonly attribute USVString origin;
-
- // base64 utility methods
- DOMString btoa(DOMString data);
- DOMString atob(DOMString data);
-
- // timers
- long setTimeout(TimerHandler handler, optional long timeout = 0, any... arguments);
- void clearTimeout(optional long handle = 0);
- long setInterval(TimerHandler handler, optional long timeout = 0, any... arguments);
- void clearInterval(optional long handle = 0);
-
- // ImageBitmap
- Promise<ImageBitmap> createImageBitmap(ImageBitmapSource image, optional ImageBitmapOptions options);
- Promise<ImageBitmap> createImageBitmap(ImageBitmapSource image, long sx, long sy, long sw, long sh, optional ImageBitmapOptions options);
-};
-WorkerGlobalScope includes WindowOrWorkerGlobalScope;
-
-[Exposed=Worker]
-interface WorkerNavigator {};
-WorkerNavigator includes NavigatorID;
-WorkerNavigator includes NavigatorLanguage;
-WorkerNavigator includes NavigatorOnLine;
-WorkerNavigator includes NavigatorConcurrentHardware;
-
-[Exposed=(Window,Worker)]
-interface mixin NavigatorID {
- readonly attribute DOMString appCodeName; // constant "Mozilla"
- readonly attribute DOMString appName; // constant "Netscape"
- readonly attribute DOMString appVersion;
- readonly attribute DOMString platform;
- readonly attribute DOMString product; // constant "Gecko"
- [Exposed=Window] readonly attribute DOMString productSub;
- readonly attribute DOMString userAgent;
- [Exposed=Window] readonly attribute DOMString vendor;
- [Exposed=Window] readonly attribute DOMString vendorSub; // constant ""
-
- // also has additional members in a partial interface
-};
-
-[Exposed=(Window,Worker)]
-interface mixin NavigatorLanguage {
- readonly attribute DOMString language;
- readonly attribute FrozenArray<DOMString> languages;
-};
-
-[Exposed=(Window,Worker)]
-interface mixin NavigatorOnLine {
- readonly attribute boolean onLine;
-};
-
-[Exposed=(Window,Worker)]
-interface mixin NavigatorConcurrentHardware {
- readonly attribute unsigned long long hardwareConcurrency;
-};
-
-[Exposed=Worker]
-interface WorkerLocation {
- stringifier readonly attribute USVString href;
- readonly attribute USVString origin;
- readonly attribute USVString protocol;
- readonly attribute USVString host;
- readonly attribute USVString hostname;
- readonly attribute USVString port;
- readonly attribute USVString pathname;
- readonly attribute USVString search;
- readonly attribute USVString hash;
-};
diff --git a/tests/wpt/web-platform-tests/interfaces/input-events.idl b/tests/wpt/web-platform-tests/interfaces/input-events.idl
index c10aa32bed0..5ddaae5b9d3 100644
--- a/tests/wpt/web-platform-tests/interfaces/input-events.idl
+++ b/tests/wpt/web-platform-tests/interfaces/input-events.idl
@@ -1,7 +1,7 @@
// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into reffy-reports
// (https://github.com/tidoust/reffy-reports)
-// Source: Input Events Level 1 (https://cdn.staticaly.com/gh/w3c/input-events/v1/index.html)
+// Source: Input Events Level 2 (https://w3c.github.io/input-events/)
partial interface InputEvent {
readonly attribute DataTransfer? dataTransfer;
diff --git a/tests/wpt/web-platform-tests/interfaces/requestidlecallback.idl b/tests/wpt/web-platform-tests/interfaces/requestidlecallback.idl
index 812cc0ef815..c763b50bde7 100644
--- a/tests/wpt/web-platform-tests/interfaces/requestidlecallback.idl
+++ b/tests/wpt/web-platform-tests/interfaces/requestidlecallback.idl
@@ -4,7 +4,7 @@
// Source: Cooperative Scheduling of Background Tasks (https://w3c.github.io/requestidlecallback/)
partial interface Window {
- unsigned long requestIdleCallback(IdleRequestCallback callback, optional IdleRequestOptions options);
+ unsigned long requestIdleCallback(IdleRequestCallback callback, optional IdleRequestOptions options = {});
void cancelIdleCallback(unsigned long handle);
};
diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist
index a6aa9466810..8ff3b818932 100644
--- a/tests/wpt/web-platform-tests/lint.whitelist
+++ b/tests/wpt/web-platform-tests/lint.whitelist
@@ -820,9 +820,6 @@ WEB-PLATFORM.TEST:signed-exchange/resources/*.sxg
WEB-PLATFORM.TEST:signed-exchange/appcache/resources/*.sxg
WEB-PLATFORM.TEST:signed-exchange/resources/generate-test-sxgs.sh
-SET TIMEOUT: inert/inert-retargeting.tentative.html
-SET TIMEOUT: inert/inert-retargeting-iframe.tentative.html
-
# https://github.com/web-platform-tests/wpt/issues/16455
MISSING DEPENDENCY: idle-detection/interceptor.https.html
MISSING DEPENDENCY: sms/sms_provider.js
diff --git a/tests/wpt/web-platform-tests/media-source/idlharness.window.js b/tests/wpt/web-platform-tests/media-source/idlharness.window.js
index 28da56b32e6..9300f67fe04 100644
--- a/tests/wpt/web-platform-tests/media-source/idlharness.window.js
+++ b/tests/wpt/web-platform-tests/media-source/idlharness.window.js
@@ -1,5 +1,6 @@
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
+// META: timeout=long
// https://w3c.github.io/media-source/
@@ -9,8 +10,6 @@ idl_test(
['media-source'],
['dom', 'html', 'url'],
async idl_array => {
- self.audio = document.createElement('audio');
- self.video = document.createElement('video');
idl_array.add_objects({
MediaSource: ['mediaSource'],
SourceBuffer: ['sourceBuffer'],
diff --git a/tests/wpt/web-platform-tests/mediacapture-depth/idlharness.html b/tests/wpt/web-platform-tests/mediacapture-depth/idlharness.html
index 1afc6e5a05b..963229aaca3 100644
--- a/tests/wpt/web-platform-tests/mediacapture-depth/idlharness.html
+++ b/tests/wpt/web-platform-tests/mediacapture-depth/idlharness.html
@@ -4,7 +4,7 @@
<head>
<meta charset=utf-8>
<title>Media Capture Depth Stream Extensions IDL test</title>
- <link rel="help" href="See https://w3c.github.io/mediacapture-depth/">
+ <link rel="help" href="https://w3c.github.io/mediacapture-depth/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/WebIDLParser.js"></script>
@@ -15,15 +15,13 @@
<script>
'use strict';
- promise_test(async () => {
- const idl = await fetch('/interfaces/mediacapture-depth.idl').then(r => r.text());
- const main = await fetch('/interfaces/mediacapture-streams.idl').then(r => r.text());
-
- var idl_array = new IdlArray();
- idl_array.add_idls(idl);
- idl_array.add_dependency_idls(main);
- idl_array.test();
- }, 'mediacapture-depth interfaces');
+ idl_test(
+ ['mediacapture-depth'],
+ ['mediacapture-streams'],
+ idl_array => {
+ // No objects, spec defines dictionaries only.
+ }
+ );
</script>
<div id="log"></div>
</body>
diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/idlharness.https.window.js b/tests/wpt/web-platform-tests/mediacapture-streams/idlharness.https.window.js
index 5b255fca6b0..594e1121b00 100644
--- a/tests/wpt/web-platform-tests/mediacapture-streams/idlharness.https.window.js
+++ b/tests/wpt/web-platform-tests/mediacapture-streams/idlharness.https.window.js
@@ -5,50 +5,44 @@
// https://w3c.github.io/mediacapture-main/
-
-promise_test(async () => {
- const srcs = ['mediacapture-streams','dom','html'];
- const [idl, dom, html] = await Promise.all(
- srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text())));
-
- const idl_array = new IdlArray();
- idl_array.add_idls(idl);
- idl_array.add_dependency_idls(html);
- idl_array.add_dependency_idls(dom);
-
- const devices = [];
- // Errors will be surfaced in idlharness.js's test_object below.
- try {
- const list = await navigator.mediaDevices.enumerateDevices();
- for (const item of list) {
- switch (item.kind) {
- case 'audioinput':
- case 'videoinput':
- case 'audiooutput':
- self[item.kind] = item;
- devices.push(item.kind);
- default:
- assert_unreached(
- 'media.kind should be one of "audioinput", "videoinput", or "audiooutput".');
+idl_test(
+ ['mediacapture-streams'],
+ ['dom', 'html'],
+ async idl_array => {
+ const inputDevices = [];
+ const outputDevices = [];
+ try {
+ const list = await navigator.mediaDevices.enumerateDevices();
+ for (const device of list) {
+ if (device.kind in self) {
+ continue;
+ }
+ assert_in_array(device.kind, ['audioinput', 'videoinput', 'audiooutput']);
+ self[device.kind] = device;
+ if (device.kind.endsWith('input')) {
+ inputDevices.push(device.kind);
+ } else {
+ outputDevices.push(device.kind);
+ }
}
- }
- } catch (e) {}
-
- try {
- self.stream = await navigator.mediaDevices.getUserMedia({audio: true});
- self.track = stream.getTracks()[0];
- self.trackEvent = new MediaStreamTrackEvent("type", {
- track: track,
+ } catch (e) {}
+
+ try {
+ self.stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ self.track = stream.getTracks()[0];
+ self.trackEvent = new MediaStreamTrackEvent("type", {
+ track: track,
+ });
+ } catch (e) {}
+
+ idl_array.add_objects({
+ InputDeviceInfo: inputDevices,
+ MediaStream: ['stream', 'new MediaStream()'],
+ Navigator: ['navigator'],
+ MediaDevices: ['navigator.mediaDevices'],
+ MediaDeviceInfo: outputDevices,
+ MediaStreamTrack: ['track'],
+ MediaStreamTrackEvent: ['trackEvent'],
});
- } catch (e) { throw e}
-
- idl_array.add_objects({
- InputDeviceInfo: devices,
- MediaStream: ['stream', 'new MediaStream()'],
- Navigator: ['navigator'],
- MediaDevices: ['navigator.mediaDevices'],
- MediaStreamTrack: ['track'],
- MediaStreamTrackEvent: ['trackEvent'],
- });
- idl_array.test();
-}, 'mediacapture-streams interfaces.');
+ }
+);
diff --git a/tests/wpt/web-platform-tests/orientation-event/idlharness.https.window.js b/tests/wpt/web-platform-tests/orientation-event/idlharness.https.window.js
index ed8309d6480..55cfed9276b 100644
--- a/tests/wpt/web-platform-tests/orientation-event/idlharness.https.window.js
+++ b/tests/wpt/web-platform-tests/orientation-event/idlharness.https.window.js
@@ -5,19 +5,14 @@
'use strict';
-promise_test(async () => {
- const idl = await fetch('/interfaces/orientation-event.idl').then(r => r.text());
- const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
- const html = await fetch('/interfaces/html.idl').then(r => r.text());
-
- var idl_array = new IdlArray();
- idl_array.add_idls(idl);
- idl_array.add_dependency_idls(html);
- idl_array.add_dependency_idls(dom);
- idl_array.add_objects({
- Window: ['window'],
- DeviceOrientationEvent: ['new DeviceOrientationEvent("foo")'],
- DeviceMotionEvent: ['new DeviceMotionEvent("foo")'],
- });
- idl_array.test();
-}, 'orientation-event interfaces');
+idl_test(
+ ['orientation-event'],
+ ['html', 'dom'],
+ idl_array => {
+ idl_array.add_objects({
+ Window: ['window'],
+ DeviceOrientationEvent: ['new DeviceOrientationEvent("foo")'],
+ DeviceMotionEvent: ['new DeviceMotionEvent("foo")'],
+ });
+ }
+);
diff --git a/tests/wpt/web-platform-tests/permissions/interfaces.any.js b/tests/wpt/web-platform-tests/permissions/interfaces.any.js
index b9345388693..ff0a969bada 100644
--- a/tests/wpt/web-platform-tests/permissions/interfaces.any.js
+++ b/tests/wpt/web-platform-tests/permissions/interfaces.any.js
@@ -1,41 +1,27 @@
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
-"use strict";
-
-if (self.importScripts) {
- importScripts("/resources/testharness.js");
- importScripts("/resources/WebIDLParser.js", "/resources/idlharness.js");
-}
-
// https://w3c.github.io/permissions/#idl-index
-promise_test(async () => {
- const idl = await fetch("/interfaces/permissions.idl").then(r => r.text());
- const dom = await fetch("/interfaces/dom.idl").then(r => r.text());
- const html = await fetch("/interfaces/html.idl").then(r => r.text());
-
- const idl_array = new IdlArray();
- idl_array.add_idls(idl);
- idl_array.add_dependency_idls(dom);
- idl_array.add_dependency_idls(html);
-
- try {
- self.permissionStatus = await navigator.permissions.query({ name: "geolocation" });
- self.permissionStatus = await navigator.permissions.query({ name: "background-fetch" });
- } catch (e) {
- // Will be surfaced in idlharness.js's test_object below.
- }
+"use strict";
- if (self.GLOBAL.isWorker()) {
- idl_array.add_objects({ WorkerNavigator: ['navigator'] });
- } else {
- idl_array.add_objects({ Navigator: ['navigator'] });
+idl_test(
+ ['permissions'],
+ ['html', 'dom'],
+ async idl_array => {
+ try {
+ self.permissionStatus = await navigator.permissions.query({ name: "geolocation" });
+ } catch (e) {}
+
+ if (self.GLOBAL.isWorker()) {
+ idl_array.add_objects({ WorkerNavigator: ['navigator'] });
+ } else {
+ idl_array.add_objects({ Navigator: ['navigator'] });
+ }
+
+ idl_array.add_objects({
+ Permissions: ['navigator.permissions'],
+ PermissionStatus: ['permissionStatus']
+ });
}
-
- idl_array.add_objects({
- Permissions: ['navigator.permissions'],
- PermissionStatus: ['permissionStatus']
- });
- idl_array.test();
-}, "Test IDL implementation of Permissions API");
+);
diff --git a/tests/wpt/web-platform-tests/requestidlecallback/idlharness.window.js b/tests/wpt/web-platform-tests/requestidlecallback/idlharness.window.js
index 2c9f6593208..69cd5a49b04 100644
--- a/tests/wpt/web-platform-tests/requestidlecallback/idlharness.window.js
+++ b/tests/wpt/web-platform-tests/requestidlecallback/idlharness.window.js
@@ -1,30 +1,24 @@
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
-async_test(function() {
- const srcs = ['requestidlecallback', 'html', 'dom'];
- Promise.all(srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text())))
- .then(([idl, html, dom]) => {
- var idl_array = new IdlArray();
- idl_array.add_idls(idl);
- idl_array.add_dependency_idls(html);
- idl_array.add_dependency_idls(dom);
- idl_array.add_objects({Window: ['window']});
+// https://w3c.github.io/requestidlecallback/
- let deadline;
- const execIDLTest = this.step_func_done(function() {
- idl_array.add_objects({IdleDeadline: [deadline]});
- idl_array.test();
- });
+'use strict';
- if (!window.requestIdleCallback) {
- execIDLTest();
- } else {
- const callback = this.step_func(d => {
- deadline = d;
- execIDLTest();
- });
- requestIdleCallback(callback, { timeout: 100 });
- }
+idl_test(
+ ['requestidlecallback'],
+ ['html', 'dom'],
+ async idl_array => {
+ idl_array.add_objects({
+ IdleDeadline: ['deadline'],
+ Window: ['window'],
});
-}, 'IdleDeadline object setup');
+
+ await new Promise(resolve => {
+ requestIdleCallback(d => {
+ self.deadline = d;
+ resolve();
+ }, { timeout: 100 });
+ });
+ }
+);
diff --git a/tests/wpt/web-platform-tests/server-timing/idlharness.https.any.js b/tests/wpt/web-platform-tests/server-timing/idlharness.https.any.js
index 9c101e0f4cf..ded320f0f61 100644
--- a/tests/wpt/web-platform-tests/server-timing/idlharness.https.any.js
+++ b/tests/wpt/web-platform-tests/server-timing/idlharness.https.any.js
@@ -5,17 +5,12 @@
// https://w3c.github.io/server-timing/
-promise_test(async () => {
- const idl = await fetch('/interfaces/server-timing.idl').then(r => r.text());
- const res = await fetch('/interfaces/resource-timing.idl').then(r => r.text());
- const perf = await fetch('/interfaces/performance-timeline.idl').then(r => r.text());
-
- const idl_array = new IdlArray();
- idl_array.add_idls(idl);
- idl_array.add_dependency_idls(res);
- idl_array.add_dependency_idls(perf);
- idl_array.add_objects({
- Performance: ['performance'],
- });
- idl_array.test();
-}, 'Test server-timing IDL implementation');
+idl_test(
+ ['server-timing'],
+ ['resource-timing', 'performance-timeline'],
+ idl_array => {
+ idl_array.add_objects({
+ Performance: ['performance'],
+ });
+ }
+);
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html
index 73ffb28b36e..7bff6ac107e 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html
@@ -7,7 +7,7 @@
'use strict';
// NOTE: affected when 'resources/interfaces-worker.sub.js' srcs change:
-// const srcs = ['dom', 'html', 'service-workers', 'dedicated-workers'];
+// const srcs = ['dom', 'html', 'service-workers'];
service_worker_test(
'resources/interfaces-worker.sub.js',
'Interfaces and attributes in ServiceWorkerGlobalScope');
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js
index 56bc8af445d..ac79ddc0056 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js
@@ -5,8 +5,8 @@ importScripts('/resources/WebIDLParser.js');
importScripts('/resources/idlharness.js');
promise_test(async (t) => {
- const srcs = ['dom', 'html', 'service-workers', 'dedicated-workers'];
- const [dom, html, serviceWorkerIdl, dedicated] = await Promise.all(
+ const srcs = ['dom', 'html', 'service-workers'];
+ const [dom, html, serviceWorkerIdl] = await Promise.all(
srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text())));
var idlArray = new IdlArray();
@@ -24,7 +24,6 @@ promise_test(async (t) => {
'Cache',
'CacheStorage',
]});
- idlArray.add_dependency_idls(dedicated);
idlArray.add_dependency_idls(dom);
idlArray.add_dependency_idls(html);
idlArray.add_objects({
diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/aborting.any.js b/tests/wpt/web-platform-tests/streams/writable-streams/aborting.any.js
index ea47a55fa9f..2f806464e1f 100644
--- a/tests/wpt/web-platform-tests/streams/writable-streams/aborting.any.js
+++ b/tests/wpt/web-platform-tests/streams/writable-streams/aborting.any.js
@@ -114,7 +114,8 @@ promise_test(() => {
return writer.abort('a').then(value => {
assert_equals(value, undefined, 'fulfillment value must be undefined');
});
-}, 'Fulfillment value of ws.abort() call must be undefined even if the underlying sink returns a non-undefined value');
+}, 'Fulfillment value of writer.abort() call must be undefined even if the underlying sink returns a non-undefined ' +
+ 'value');
promise_test(t => {
const ws = new WritableStream({
diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/brand-checks.any.js b/tests/wpt/web-platform-tests/streams/writable-streams/brand-checks.any.js
index 66296ab3d35..17179e7936e 100644
--- a/tests/wpt/web-platform-tests/streams/writable-streams/brand-checks.any.js
+++ b/tests/wpt/web-platform-tests/streams/writable-streams/brand-checks.any.js
@@ -14,6 +14,7 @@ function fakeWS() {
return Object.setPrototypeOf({
get locked() { return false; },
abort() { return Promise.resolve(); },
+ close() { return Promise.resolve(); },
getWriter() { return fakeWSDefaultWriter(); }
}, WritableStream.prototype);
}
@@ -64,6 +65,11 @@ promise_test(t => {
[fakeWS(), realWSDefaultWriter(), realWSDefaultController(), undefined, null]);
}, 'WritableStream.prototype.abort enforces a brand check');
+promise_test(t => {
+ return methodRejectsForAll(t, WritableStream.prototype, 'close',
+ [fakeWS(), realWSDefaultWriter(), realWSDefaultController(), undefined, null]);
+}, 'WritableStream.prototype.close enforces a brand check');
+
test(() => {
methodThrowsForAll(WritableStream.prototype, 'getWriter',
[fakeWS(), realWSDefaultWriter(), realWSDefaultController(), undefined, null]);
diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/close.any.js b/tests/wpt/web-platform-tests/streams/writable-streams/close.any.js
index 284bb16e1f5..0762b83e5d1 100644
--- a/tests/wpt/web-platform-tests/streams/writable-streams/close.any.js
+++ b/tests/wpt/web-platform-tests/streams/writable-streams/close.any.js
@@ -20,7 +20,7 @@ promise_test(() => {
const closePromise = writer.close();
return closePromise.then(value => assert_equals(value, undefined, 'fulfillment value must be undefined'));
-}, 'fulfillment value of ws.close() call must be undefined even if the underlying sink returns a non-undefined ' +
+}, 'fulfillment value of writer.close() call must be undefined even if the underlying sink returns a non-undefined ' +
'value');
promise_test(() => {
@@ -411,3 +411,60 @@ promise_test(() => {
return ready;
});
}, 'ready promise should be initialised as fulfilled for a writer on a closed stream');
+
+promise_test(() => {
+ const ws = new WritableStream();
+ ws.close();
+ const writer = ws.getWriter();
+ return writer.closed;
+}, 'close() on a writable stream should work');
+
+promise_test(t => {
+ const ws = new WritableStream();
+ ws.getWriter();
+ return promise_rejects(t, new TypeError(), ws.close(), 'close should reject');
+}, 'close() on a locked stream should reject');
+
+promise_test(t => {
+ const ws = new WritableStream({
+ start(controller) {
+ controller.error(error1);
+ }
+ });
+ return promise_rejects(t, error1, ws.close(), 'close should reject with error1');
+}, 'close() on an erroring stream should reject');
+
+promise_test(t => {
+ const ws = new WritableStream({
+ start(controller) {
+ controller.error(error1);
+ }
+ });
+ const writer = ws.getWriter();
+ return promise_rejects(t, error1, writer.closed, 'closed should reject with the error').then(() => {
+ writer.releaseLock();
+ return promise_rejects(t, new TypeError(), ws.close(), 'close should reject');
+ });
+}, 'close() on an errored stream should reject');
+
+promise_test(t => {
+ const ws = new WritableStream();
+ const writer = ws.getWriter();
+ return writer.close().then(() => {
+ return promise_rejects(t, new TypeError(), ws.close(), 'close should reject');
+ });
+}, 'close() on an closed stream should reject');
+
+promise_test(t => {
+ const ws = new WritableStream({
+ close() {
+ return new Promise(() => {});
+ }
+ });
+
+ const writer = ws.getWriter();
+ writer.close();
+ writer.releaseLock();
+
+ return promise_rejects(t, new TypeError(), ws.close(), 'close should reject');
+}, 'close() on a stream with a pending close should reject');
diff --git a/tests/wpt/web-platform-tests/streams/writable-streams/properties.any.js b/tests/wpt/web-platform-tests/streams/writable-streams/properties.any.js
index b991795a189..81b40683c8b 100644
--- a/tests/wpt/web-platform-tests/streams/writable-streams/properties.any.js
+++ b/tests/wpt/web-platform-tests/streams/writable-streams/properties.any.js
@@ -45,6 +45,10 @@ const expected = {
type: 'method',
length: 1
},
+ close: {
+ type: 'method',
+ length: 0
+ },
getWriter: {
type: 'method',
length: 0
diff --git a/tests/wpt/web-platform-tests/svg/animations/spaces-at-end-of-path-data.html b/tests/wpt/web-platform-tests/svg/animations/spaces-at-end-of-path-data.html
new file mode 100644
index 00000000000..235259becca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/animations/spaces-at-end-of-path-data.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+
+<title>Allow trailing empty entry in value list</title>
+<meta charset="utf-8">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="help" href="https://svgwg.org/specs/animations/#ValuesAttribute">
+<link rel="author" title="Edvard Thörnros" href="mailto:edvardt@opera.com">
+
+<svg viewbox="0 0 100 100">
+ <path fill="#1EB287">
+ <animate attributeName="d"
+ dur="1s"
+ repeatCount="indefinite"
+ values="M 0,0 L 50, 0 L 100,100 Z;
+ M 100,0 L 0, 100 L 50, 0 Z; "/>
+ </path>
+</svg>
+
+<script>
+ async_test(function(t) {
+ window.onload = t.step_func(function() {
+ window.requestAnimationFrame(t.step_func_done(function() {
+ let path = document.querySelector("path");
+ assert_not_equals(window.getComputedStyle(path).d, "none");
+ }));
+ });
+ });
+</script>
diff --git a/tests/wpt/web-platform-tests/svg/pservers/parsing/stop-color-invalid.svg b/tests/wpt/web-platform-tests/svg/pservers/parsing/stop-color-invalid.svg
new file mode 100644
index 00000000000..4eee5444867
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/pservers/parsing/stop-color-invalid.svg
@@ -0,0 +1,24 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
+ <title>SVG Paint Servers: parsing stop-color with invalid values</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/pservers.html#StopColorProperty"/>
+ </metadata>
+ <g id="target" style="color: blue"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/parsing-testcommon.js"/>
+ <script><![CDATA[
+
+test_invalid_value("stop-color", "auto");
+test_invalid_value("stop-color", "123");
+test_invalid_value("stop-color", "#12");
+test_invalid_value("stop-color", "#123456789");
+test_invalid_value("stop-color", "rgb");
+test_invalid_value("stop-color", "rgb(1)");
+test_invalid_value("stop-color", "rgb(1,2,3,4,5)");
+test_invalid_value("stop-color", "hsla(1,2,3,4,5)");
+test_invalid_value("stop-color", "rgb(10%, 20, 30%)");
+test_invalid_value("stop-color", "rgba(-2, 300, 400%, -0.5)");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/pservers/parsing/stop-color-valid.svg b/tests/wpt/web-platform-tests/svg/pservers/parsing/stop-color-valid.svg
new file mode 100644
index 00000000000..80d6c23b83c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/pservers/parsing/stop-color-valid.svg
@@ -0,0 +1,24 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
+ <title>SVG Paint Servers: parsing stop-color with valid values</title>
+ <metadata>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/pservers.html#StopColorProperty"/>
+ </metadata>
+ <g id="target" style="color: blue"></g>
+ <h:script src="/resources/testharness.js"/>
+ <h:script src="/resources/testharnessreport.js"/>
+ <h:script src="/css/support/parsing-testcommon.js"/>
+ <script><![CDATA[
+
+test_valid_value("stop-color", "currentcolor");
+test_valid_value("stop-color", "white");
+test_valid_value("stop-color", "transparent");
+test_valid_value("stop-color", "rgb(255, 255, 255)");
+test_valid_value("stop-color", "#ffffff", "rgb(255, 255, 255)");
+test_valid_value("stop-color", "rgba(255, 255, 255, 1.0)", "rgb(255, 255, 255)");
+test_valid_value("stop-color", "rgba(255, 255, 255, 0.4)");
+test_valid_value("stop-color", "hsl(0deg, 100%, 100%)", "rgb(255, 255, 255)");
+test_valid_value("stop-color", "hsla(0deg, 100%, 100%, 1.0)", "rgb(255, 255, 255)");
+test_valid_value("stop-color", "hsla(0deg, 100%, 100%, 0.4)", "rgba(255, 255, 255, 0.4)");
+
+ ]]></script>
+</svg>
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
index 898447df6f5..99d46108eb0 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
@@ -1,6 +1,7 @@
import json
import os
import socket
+import sys
import threading
import time
import traceback
@@ -232,10 +233,14 @@ class WebDriverProtocol(Protocol):
def teardown(self):
self.logger.debug("Hanging up on WebDriver session")
try:
- self.webdriver.quit()
- except Exception:
- pass
- del self.webdriver
+ self.webdriver.end()
+ except Exception as e:
+ message = str(getattr(e, "message", ""))
+ if message:
+ message += "\n"
+ message += traceback.format_exc(e)
+ self.logger.debug(message)
+ self.webdriver = None
def is_alive(self):
try:
@@ -277,7 +282,10 @@ class WebDriverRun(object):
# it can if self._run fails to set self.result due to raising
self.result = False, ("INTERNAL-ERROR", "self._run didn't set a result")
else:
- self.result = False, ("EXTERNAL-TIMEOUT", None)
+ message = "Waiting on browser:\n"
+ # get a traceback for the current stack of the executor thread
+ message += "".join(traceback.format_stack(sys._current_frames()[executor.ident]))
+ self.result = False, ("EXTERNAL-TIMEOUT", message)
return self.result
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/webdriver_server.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/webdriver_server.py
index be991701434..8b711272c7b 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/webdriver_server.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/webdriver_server.py
@@ -81,6 +81,7 @@ class WebDriverServer(object):
self._proc.wait()
def stop(self, force=False):
+ self.logger.debug("Stopping WebDriver")
if self.is_alive:
return self._proc.kill()
return not self.is_alive
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py
index cf3b21905b7..9de87924607 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/__init__.py
@@ -1,12 +1,12 @@
def element_rect(session, element):
return session.execute_script("""
- let devicePixelRatio = window.devicePixelRatio;
- let rect = arguments[0].getBoundingClientRect();
+ let {devicePixelRatio} = window;
+ let {left, top, width, height} = arguments[0].getBoundingClientRect();
return {
- x: Math.floor((rect.left + window.pageXOffset) * devicePixelRatio),
- y: Math.floor((rect.top + window.pageYOffset) * devicePixelRatio),
- width: Math.floor(rect.width * devicePixelRatio),
- height: Math.floor(rect.height * devicePixelRatio),
+ x: Math.floor((left + window.pageXOffset) * devicePixelRatio),
+ y: Math.floor((top + window.pageYOffset) * devicePixelRatio),
+ width: Math.floor(width * devicePixelRatio),
+ height: Math.floor(height * devicePixelRatio),
};
""", args=(element,))
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/iframe.py b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/iframe.py
new file mode 100644
index 00000000000..d081a14cdeb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/iframe.py
@@ -0,0 +1,54 @@
+import pytest
+
+from tests.support.asserts import assert_success
+from tests.support.image import png_dimensions
+from tests.support.inline import iframe, inline
+
+from . import element_rect
+
+
+DEFAULT_CSS_STYLE = """
+ <style>
+ div, iframe {
+ display: block;
+ border: 1px solid blue;
+ width: 10em;
+ height: 10em;
+ }
+ </style>
+"""
+
+DEFAULT_CONTENT = "<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div>"
+
+
+def take_element_screenshot(session, element_id):
+ return session.transport.send(
+ "GET",
+ "session/{session_id}/element/{element_id}/screenshot".format(
+ session_id=session.session_id,
+ element_id=element_id,
+ )
+ )
+
+
+@pytest.mark.parametrize("domain", ["", "alt"], ids=["same_origin", "cross_origin"])
+def test_source_origin(session, url, domain):
+ session.url = inline("""{0}{1}""".format(DEFAULT_CSS_STYLE, DEFAULT_CONTENT))
+ element = session.find.css("div", all=False)
+ rect = element_rect(session, element)
+
+ response = take_element_screenshot(session, element.id)
+ reference_screenshot = assert_success(response)
+ assert png_dimensions(reference_screenshot) == (rect["width"], rect["height"])
+
+ iframe_content = "<style>body {{ margin: 0; }}</style>{}".format(DEFAULT_CONTENT)
+ session.url = inline("""{0}{1}""".format(
+ DEFAULT_CSS_STYLE, iframe(iframe_content, domain=domain)))
+ frame_element = session.find.css("iframe", all=False)
+ frame_rect = element_rect(session, frame_element)
+
+ response = take_element_screenshot(session, frame_element.id)
+ screenshot = assert_success(response)
+ assert png_dimensions(screenshot) == (frame_rect["width"], frame_rect["height"])
+
+ assert screenshot == reference_screenshot
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py
index 35a1ffe75f0..fd460b656ae 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/take_element_screenshot/screenshot.py
@@ -1,4 +1,4 @@
-from tests.support.asserts import assert_error, assert_png, assert_success
+from tests.support.asserts import assert_error, assert_success
from tests.support.image import png_dimensions
from tests.support.inline import inline
@@ -35,7 +35,6 @@ def test_format_and_dimensions(session):
rect = element_rect(session, element)
response = take_element_screenshot(session, element.id)
- value = assert_success(response)
+ screenshot = assert_success(response)
- assert_png(value)
- assert png_dimensions(value) == (rect["width"], rect["height"])
+ assert png_dimensions(screenshot) == (rect["width"], rect["height"])
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py
index fe057a4932e..c07f8d16703 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/__init__.py
@@ -1,2 +1,9 @@
-def document_dimensions(session):
- return tuple(session.execute_script("return [window.innerWidth, window.innerHeight];"))
+def viewport_dimensions(session):
+ return tuple(session.execute_script("""
+ let {devicePixelRatio, innerHeight, innerWidth} = window;
+
+ return [
+ Math.floor(innerWidth * devicePixelRatio),
+ Math.floor(innerHeight * devicePixelRatio)
+ ];
+ """))
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/iframe.py b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/iframe.py
new file mode 100644
index 00000000000..5206f2fa173
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/iframe.py
@@ -0,0 +1,45 @@
+import pytest
+
+from tests.support.asserts import assert_success
+from tests.support.image import png_dimensions
+from tests.support.inline import iframe, inline
+
+from . import viewport_dimensions
+
+
+DEFAULT_CSS_STYLE = """
+ <style>
+ div, iframe {
+ display: block;
+ border: 1px solid blue;
+ width: 10em;
+ height: 10em;
+ }
+ </style>
+"""
+
+DEFAULT_CONTENT = "<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div>"
+
+
+def take_screenshot(session):
+ return session.transport.send(
+ "GET", "session/{session_id}/screenshot".format(**vars(session)))
+
+
+@pytest.mark.parametrize("domain", ["", "alt"], ids=["same_origin", "cross_origin"])
+def test_source_origin(session, url, domain):
+ session.url = inline("""{0}{1}""".format(DEFAULT_CSS_STYLE, DEFAULT_CONTENT))
+
+ response = take_screenshot(session)
+ reference_screenshot = assert_success(response)
+ assert png_dimensions(reference_screenshot) == viewport_dimensions(session)
+
+ iframe_content = "<style>body {{ margin: 0; }}</style>{}".format(DEFAULT_CONTENT)
+ session.url = inline("""{0}{1}""".format(
+ DEFAULT_CSS_STYLE, iframe(iframe_content, domain=domain)))
+
+ response = take_screenshot(session)
+ screenshot = assert_success(response)
+ assert png_dimensions(screenshot) == viewport_dimensions(session)
+
+ assert screenshot == reference_screenshot
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/screenshot.py b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/screenshot.py
index 07879530120..ca6e0272637 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/screenshot.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/take_screenshot/screenshot.py
@@ -2,7 +2,7 @@ from tests.support.asserts import assert_error, assert_png, assert_success
from tests.support.image import png_dimensions
from tests.support.inline import inline
-from . import document_dimensions
+from . import viewport_dimensions
def take_screenshot(session):
@@ -22,4 +22,4 @@ def test_format_and_dimensions(session):
value = assert_success(response)
assert_png(value)
- assert png_dimensions(value) == document_dimensions(session)
+ assert png_dimensions(value) == viewport_dimensions(session)
diff --git a/tests/wpt/web-platform-tests/webgpu/framework/version.js b/tests/wpt/web-platform-tests/webgpu/framework/version.js
index b9ec1b4f9f3..9be025609f3 100644
--- a/tests/wpt/web-platform-tests/webgpu/framework/version.js
+++ b/tests/wpt/web-platform-tests/webgpu/framework/version.js
@@ -1,3 +1,3 @@
// AUTO-GENERATED - DO NOT EDIT. See tools/gen_version.
-export const version = '84ef21bec576c9272e64e08727dbdf75a2b0e9d8';
+export const version = 'f690ac56a3291801e817433f43877132bb531d5f';
diff --git a/tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/basic.spec.js b/tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/basic.spec.js
index bb201dbe846..83bb026d963 100644
--- a/tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/basic.spec.js
+++ b/tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/basic.spec.js
@@ -22,7 +22,7 @@ g.test('clear', async t => {
},
usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.OUTPUT_ATTACHMENT
});
- const colorAttachmentView = colorAttachment.createDefaultView();
+ const colorAttachmentView = colorAttachment.createView();
const encoder = t.device.createCommandEncoder({});
const pass = encoder.beginRenderPass({
colorAttachments: [{
diff --git a/tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/rendering.spec.js b/tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/rendering.spec.js
index 762285d1bcc..c8a7d7f5738 100644
--- a/tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/rendering.spec.js
+++ b/tests/wpt/web-platform-tests/webgpu/suites/cts/command_buffer/render/rendering.spec.js
@@ -20,7 +20,7 @@ g.test('fullscreen quad', async t => {
},
usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.OUTPUT_ATTACHMENT
});
- const colorAttachmentView = colorAttachment.createDefaultView();
+ const colorAttachmentView = colorAttachment.createView();
const vertexModule = t.device.createShaderModule({
code:
/* GLSL(
diff --git a/tests/wpt/web-platform-tests/workers/README.md b/tests/wpt/web-platform-tests/workers/README.md
index b78a05ebdbe..58ee7cca1ab 100644
--- a/tests/wpt/web-platform-tests/workers/README.md
+++ b/tests/wpt/web-platform-tests/workers/README.md
@@ -6,6 +6,9 @@ These are the workers (`Worker`, `SharedWorker`) tests for the
See also
[testharness.js API > Web Workers](https://web-platform-tests.org/writing-tests/testharness-api.html#web-workers).
+Note that because workers are defined in the HTML Standard, the idlharness.js
+tests are in [/html/dom]([/html/dom) instead of here.
+
## Writing `*.any.js`
The easiest and most recommended way to write tests for workers
diff --git a/tests/wpt/web-platform-tests/workers/interfaces.worker.js b/tests/wpt/web-platform-tests/workers/interfaces.worker.js
deleted file mode 100644
index fc9f3606fae..00000000000
--- a/tests/wpt/web-platform-tests/workers/interfaces.worker.js
+++ /dev/null
@@ -1,20 +0,0 @@
-"use strict";
-
-importScripts("/resources/testharness.js");
-importScripts("/resources/WebIDLParser.js", "/resources/idlharness.js");
-
-var request = new XMLHttpRequest();
-request.onload = function() {
- var idlArray = new IdlArray();
- var idls = request.responseText;
- idlArray.add_idls(idls);
- idlArray.add_objects({
- DedicatedWorkerGlobalScope: ['self'],
- WorkerNavigator: ['self.navigator'],
- WorkerLocation: ['self.location'],
- });
- idlArray.test();
- done();
-};
-request.open("GET", "/interfaces/dedicated-workers.idl");
-request.send();