aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorServo WPT Sync <32481905+servo-wpt-sync@users.noreply.github.com>2024-01-01 15:22:51 -0500
committerGitHub <noreply@github.com>2024-01-01 20:22:51 +0000
commitf58541e65263daf60d3f5c3f8ad075b09d25223b (patch)
tree62beb0b6d04b2cde5bd37e15b8bea3d6dea53836
parent7964a4f582d5697e0ea55203dd4ec25d69dbed97 (diff)
downloadservo-f58541e65263daf60d3f5c3f8ad075b09d25223b.tar.gz
servo-f58541e65263daf60d3f5c3f8ad075b09d25223b.zip
Sync WPT with upstream (01-01-2024) (#30962)
* Update web-platform-tests to revision b'2a639a9fe4cdefd4ecd124a3f30caf631150eea5' * Update expectations --------- Co-authored-by: sagudev <16504129+sagudev@users.noreply.github.com>
-rw-r--r--tests/wpt/meta-legacy-layout/FileAPI/url/url-in-tags-revoke.window.js.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/WebCryptoAPI/import_export/ec_importKey.https.any.js.ini180
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/linebox/inline-negative-margin-001.html.ini5
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-color/animation/opacity-animation-ending-correctly-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-color/oklch-l-over-1-1.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-color/oklch-l-over-1-2.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transitions/parsing/transition-computed.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transitions/render-blocking/no-transition-from-ua-to-blocking-stylesheet.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/round-function.html.ini228
-rw-r--r--tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/selectors/invalidation/part-dir.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/selectors/invalidation/part-lang.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/selectors/invalidation/state-in-has.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/css/selectors/parsing/parse-part.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini (renamed from tests/wpt/meta/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini (renamed from tests/wpt/meta/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.js.ini1
-rw-r--r--tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini1
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini (renamed from tests/wpt/meta/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/text-plain.window.js.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/forms/the-input-element/range.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/html/syntax/parsing/DOMContentLoaded-defer.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini5
-rw-r--r--tests/wpt/meta-legacy-layout/streams/readable-streams/crashtests/strategy-worker-terminate.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/webmessaging/with-ports/017.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/workers/semantics/run-a-worker/003.html.ini1
-rw-r--r--tests/wpt/meta/MANIFEST.json203
-rw-r--r--tests/wpt/meta/WebCryptoAPI/import_export/ec_importKey.https.any.js.ini180
-rw-r--r--tests/wpt/meta/css/css-color/animation/opacity-animation-ending-correctly-002.html.ini2
-rw-r--r--tests/wpt/meta/css/css-color/oklch-l-over-1-1.html.ini2
-rw-r--r--tests/wpt/meta/css/css-color/oklch-l-over-1-2.html.ini2
-rw-r--r--tests/wpt/meta/css/css-fonts/variations/at-font-face-font-matching.html.ini24
-rw-r--r--tests/wpt/meta/css/css-transitions/parsing/transition-computed.html.ini6
-rw-r--r--tests/wpt/meta/css/css-values/round-function.html.ini228
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/part-dir.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/part-lang.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/state-in-has.html.ini4
-rw-r--r--tests/wpt/meta/css/selectors/parsing/parse-part.html.ini6
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini3
-rw-r--r--tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html.ini6
-rw-r--r--tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini3
-rw-r--r--tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-referrer.window.js.ini4
-rw-r--r--tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini3
-rw-r--r--tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini3
-rw-r--r--tests/wpt/meta/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini3
-rw-r--r--tests/wpt/meta/html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.js.ini1
-rw-r--r--tests/wpt/meta/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html.ini3
-rw-r--r--tests/wpt/meta/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini5
-rw-r--r--tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini3
-rw-r--r--tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini3
-rw-r--r--tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini3
-rw-r--r--tests/wpt/meta/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow.html.ini2
-rw-r--r--tests/wpt/meta/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini3
-rw-r--r--tests/wpt/meta/html/semantics/forms/form-submission-0/text-plain.window.js.ini3
-rw-r--r--tests/wpt/meta/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini3
-rw-r--r--tests/wpt/meta/html/semantics/forms/the-input-element/range.html.ini3
-rw-r--r--tests/wpt/meta/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini7
-rw-r--r--tests/wpt/meta/html/syntax/parsing/DOMContentLoaded-defer.html.ini3
-rw-r--r--tests/wpt/meta/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini3
-rw-r--r--tests/wpt/meta/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini5
-rw-r--r--tests/wpt/meta/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini6
-rw-r--r--tests/wpt/meta/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini1
-rw-r--r--tests/wpt/meta/webmessaging/with-ports/017.html.ini4
-rw-r--r--tests/wpt/tests/WebCryptoAPI/import_export/ec_importKey.https.any.js22
-rw-r--r--tests/wpt/tests/content-security-policy/nonce-hiding/dangling-html-or-body.html29
-rw-r--r--tests/wpt/tests/content-security-policy/nonce-hiding/dangling-html-or-body.html.headers1
-rw-r--r--tests/wpt/tests/css/css-color/oklch-l-over-1-1.html17
-rw-r--r--tests/wpt/tests/css/css-color/oklch-l-over-1-2.html17
-rw-r--r--tests/wpt/tests/css/css-color/oklch-l-over-1-ref.html11
-rw-r--r--tests/wpt/tests/css/css-contain/content-visibility/animation-display-lock.html8
-rw-r--r--tests/wpt/tests/css/css-contain/content-visibility/content-visibility-vs-scrollIntoView-003.html11
-rw-r--r--tests/wpt/tests/css/css-grid/stretch-grid-item-button-overflow-ref.html78
-rw-r--r--tests/wpt/tests/css/css-grid/stretch-grid-item-button-overflow.html82
-rw-r--r--tests/wpt/tests/css/css-grid/stretch-grid-item-text-input-overflow-ref.html79
-rw-r--r--tests/wpt/tests/css/css-grid/stretch-grid-item-text-input-overflow.html82
-rw-r--r--tests/wpt/tests/css/css-position/sticky/position-sticky-in-fixed-container-ref.html40
-rw-r--r--tests/wpt/tests/css/css-position/sticky/position-sticky-in-fixed-container.html40
-rw-r--r--tests/wpt/tests/css/css-transitions/parsing/transition-behavior.html24
-rw-r--r--tests/wpt/tests/css/css-transitions/parsing/transition-computed.html23
-rw-r--r--tests/wpt/tests/css/css-values/round-function.html89
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/part-dir.html63
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/part-lang.html73
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/state-in-has.html58
-rw-r--r--tests/wpt/tests/css/selectors/parsing/parse-part.html4
-rw-r--r--tests/wpt/tests/editing/crashtests/delete-from-ruby-at-start-of-button.html29
-rw-r--r--tests/wpt/tests/editing/data/delete.js27
-rw-r--r--tests/wpt/tests/editing/data/forwarddelete.js27
-rw-r--r--tests/wpt/tests/editing/data/inserthtml.js13
-rw-r--r--tests/wpt/tests/editing/data/insertparagraph.js11
-rw-r--r--tests/wpt/tests/editing/data/multitest.js26
-rw-r--r--tests/wpt/tests/html/dom/aria-attribute-reflection.html7
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-input-element/range.html4
-rw-r--r--tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-current-ref.html109
-rw-r--r--tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-current.html214
-rw-r--r--tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-in-effect-ref.html109
-rw-r--r--tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-in-effect.html214
-rw-r--r--tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-none-ref.html48
-rw-r--r--tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-none.html103
114 files changed, 2933 insertions, 140 deletions
diff --git a/tests/wpt/meta-legacy-layout/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/meta-legacy-layout/FileAPI/url/url-in-tags-revoke.window.js.ini
index 282ab0b2525..cdeaf7f7080 100644
--- a/tests/wpt/meta-legacy-layout/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/meta-legacy-layout/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -7,7 +7,7 @@
expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.]
- expected: FAIL
+ expected: TIMEOUT
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/WebCryptoAPI/import_export/ec_importKey.https.any.js.ini b/tests/wpt/meta-legacy-layout/WebCryptoAPI/import_export/ec_importKey.https.any.js.ini
index b3b3f10b250..3a18f6eda12 100644
--- a/tests/wpt/meta-legacy-layout/WebCryptoAPI/import_export/ec_importKey.https.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/WebCryptoAPI/import_export/ec_importKey.https.any.js.ini
@@ -647,6 +647,96 @@
[Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits\])]
expected: FAIL
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-256}, true, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-256}, false, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-384}, true, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-384}, false, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-521}, true, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-521}, false, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
[ec_importKey.https.any.worker.html]
[Good parameters: P-256 bits (spki, buffer(91), {name: ECDSA, namedCurve: P-256}, true, [\])]
@@ -1296,3 +1386,93 @@
[Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits\])]
expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-256}, true, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-256}, false, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-384}, true, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-384}, false, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-521}, true, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-521}, false, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/linebox/inline-negative-margin-001.html.ini b/tests/wpt/meta-legacy-layout/css/CSS2/linebox/inline-negative-margin-001.html.ini
index a057f038339..5e3a96e5999 100644
--- a/tests/wpt/meta-legacy-layout/css/CSS2/linebox/inline-negative-margin-001.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/linebox/inline-negative-margin-001.html.ini
@@ -8,8 +8,5 @@
[[data-expected-height\] 3]
expected: FAIL
- [[data-expected-height\] 1]
- expected: FAIL
-
- [[data-expected-height\] 2]
+ [[data-expected-height\] 4]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-color/animation/opacity-animation-ending-correctly-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-color/animation/opacity-animation-ending-correctly-001.html.ini
deleted file mode 100644
index 304b1579ca4..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-color/animation/opacity-animation-ending-correctly-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[opacity-animation-ending-correctly-001.html]
- expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/css/css-color/oklch-l-over-1-1.html.ini b/tests/wpt/meta-legacy-layout/css/css-color/oklch-l-over-1-1.html.ini
new file mode 100644
index 00000000000..3a1231976ac
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-color/oklch-l-over-1-1.html.ini
@@ -0,0 +1,2 @@
+[oklch-l-over-1-1.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-color/oklch-l-over-1-2.html.ini b/tests/wpt/meta-legacy-layout/css/css-color/oklch-l-over-1-2.html.ini
new file mode 100644
index 00000000000..9f918b7b99f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-color/oklch-l-over-1-2.html.ini
@@ -0,0 +1,2 @@
+[oklch-l-over-1-2.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transitions/parsing/transition-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-transitions/parsing/transition-computed.html.ini
index 715a238447f..260afeb675a 100644
--- a/tests/wpt/meta-legacy-layout/css/css-transitions/parsing/transition-computed.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-transitions/parsing/transition-computed.html.ini
@@ -43,3 +43,9 @@
[Default transition value]
expected: FAIL
+
+ [Property transition value 'all, all']
+ expected: FAIL
+
+ [Transition with a delay but no duration]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transitions/render-blocking/no-transition-from-ua-to-blocking-stylesheet.html.ini b/tests/wpt/meta-legacy-layout/css/css-transitions/render-blocking/no-transition-from-ua-to-blocking-stylesheet.html.ini
deleted file mode 100644
index e35a452a186..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-transitions/render-blocking/no-transition-from-ua-to-blocking-stylesheet.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[no-transition-from-ua-to-blocking-stylesheet.html]
- expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/round-function.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/round-function.html.ini
index 97413927e24..ec981e25fe1 100644
--- a/tests/wpt/meta-legacy-layout/css/css-values/round-function.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-values/round-function.html.ini
@@ -610,3 +610,231 @@
[calc(0px - round(to-zero, -18px, 10px)) should be used-value-equivalent to 10px]
expected: FAIL
+
+ [round(23, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(18, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(15, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(13, 10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(-13, 10) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(-18, 10) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [round(nearest, 23, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(nearest, 18, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(nearest, 15, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(nearest, 13, 10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(nearest, -13, 10) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(nearest, -18, 10) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [round(down, 23, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(down, 18, 10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(down, 15, 10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(down, 13, 10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(down, -13, 10) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [round(down, -18, 10) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [round(up, 23, 10) should be used-value-equivalent to 30]
+ expected: FAIL
+
+ [round(up, 18, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(up, 15, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(up, 13, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(up, -13, 10) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(up, -18, 10) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(to-zero, 23, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(to-zero, 18, 10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(to-zero, 15, 10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(to-zero, 13, 10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(to-zero, -13, 10) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(to-zero, -18, 10) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(23, -10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(18, -10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(15, -10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(13, -10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(-13, -10) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(-18, -10) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [round(10, 5) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(nearest, 10, 5) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(down, 10, 5) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(up, 10, 5) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(to-zero, 10, 5) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(-10, 5) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(nearest, -10, 5) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(down, -10, 5) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(up, -10, 5) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(to-zero, -10, 5) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(23, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(18, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(15, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(13, 10)) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(-13, 10)) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [calc(0 - round(-18, 10)) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [calc(0 - round(nearest, 23, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(nearest, 18, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(nearest, 15, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(nearest, 13, 10)) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(nearest, -13, 10)) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [calc(0 - round(nearest, -18, 10)) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [calc(0 - round(down, 23, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(down, 18, 10)) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(down, 15, 10)) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(down, 13, 10)) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(down, -13, 10)) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [calc(0 - round(down, -18, 10)) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [calc(0 - round(up, 23, 10)) should be used-value-equivalent to -30]
+ expected: FAIL
+
+ [calc(0 - round(up, 18, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(up, 15, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(up, 13, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(up, -13, 10)) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [calc(0 - round(up, -18, 10)) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [calc(0 - round(to-zero, 23, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(to-zero, 18, 10)) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(to-zero, 15, 10)) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(to-zero, 13, 10)) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(to-zero, -13, 10)) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [calc(0 - round(to-zero, -18, 10)) should be used-value-equivalent to 10]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
index d52a3e77a70..314dca9c1f5 100644
--- a/tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
@@ -1,6 +1,3 @@
[MediaQueryList-addListener-removeListener.html]
[listeners are called when <iframe> is resized]
expected: FAIL
-
- [listeners are called correct number of times]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini b/tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini
index f4121525268..647c7fb29b2 100644
--- a/tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini
@@ -4,3 +4,6 @@
[Make sure the page is ready for animation.]
expected: FAIL
+
+ [Smooth scrolling while doing history navigation.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/selectors/invalidation/part-dir.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/part-dir.html.ini
new file mode 100644
index 00000000000..282bbbc4feb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/part-dir.html.ini
@@ -0,0 +1,2 @@
+[part-dir.html]
+ expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/css/selectors/invalidation/part-lang.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/part-lang.html.ini
new file mode 100644
index 00000000000..397cee29510
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/part-lang.html.ini
@@ -0,0 +1,2 @@
+[part-lang.html]
+ expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/css/selectors/invalidation/state-in-has.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/state-in-has.html.ini
new file mode 100644
index 00000000000..1fc3633c748
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/state-in-has.html.ini
@@ -0,0 +1,4 @@
+[state-in-has.html]
+ expected: ERROR
+ [Test :has() invalidation with :state() pseudo-classes]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/selectors/parsing/parse-part.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/parsing/parse-part.html.ini
index 43cb05fcda9..9b36dc69a56 100644
--- a/tests/wpt/meta-legacy-layout/css/selectors/parsing/parse-part.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/selectors/parsing/parse-part.html.ini
@@ -52,3 +52,9 @@
[":dir(ltr)::part(foo)" should be a valid selector]
expected: FAIL
+
+ ["::part(foo):lang(en)" should be a valid selector]
+ expected: FAIL
+
+ ["::part(foo):dir(ltr)" should be a valid selector]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini
index f9de5391ad6..53e4435fa09 100644
--- a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini
+++ b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini
@@ -146,3 +146,15 @@
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL
+
+ [background-image sec-fetch-site - Not sent to non-trustworthy same-origin destination]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - Not sent to non-trustworthy cross-site destination]
+ expected: FAIL
+
+ [background-image sec-fetch-site - HTTPS downgrade (header not sent)]
+ expected: TIMEOUT
+
+ [border-image sec-fetch-site - HTTPS downgrade (header not sent)]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini
index 1bca09f21d6..5f9a07f92f0 100644
--- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini
@@ -2,8 +2,5 @@
[Navigating to a different document with window.open]
expected: FAIL
- [Navigating to a different document with link click]
- expected: FAIL
-
[Navigating to a different document with form submission]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini
index d19311abec9..51fd557bd7f 100644
--- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini
@@ -7,9 +7,3 @@
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank#foo']
expected: FAIL
-
- [load & pageshow events do not fire on contentWindow of <iframe> element created with src='']
- expected: FAIL
-
- [load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank']
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini
deleted file mode 100644
index 7dc346632a4..00000000000
--- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[navigation-unload-same-origin.window.html]
- [Same-origin navigation started from unload handler must be ignored]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini
deleted file mode 100644
index 60a4fa51f8a..00000000000
--- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[a-click.html]
- [aElement.click() before the load event must NOT replace]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
deleted file mode 100644
index 5d17a8e9419..00000000000
--- a/tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[traverse_the_history_2.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
diff --git a/tests/wpt/meta/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
index d6188c03424..d6188c03424 100644
--- a/tests/wpt/meta/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
diff --git a/tests/wpt/meta/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini
index 4b4820d1729..4b4820d1729 100644
--- a/tests/wpt/meta/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math.html.ini
deleted file mode 100644
index addd810a23d..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[canvas.2d.disconnected-font-size-math.html]
- expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.js.ini b/tests/wpt/meta-legacy-layout/html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.js.ini
index 962b70e3442..8b8af2b9c2e 100644
--- a/tests/wpt/meta-legacy-layout/html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.js.ini
+++ b/tests/wpt/meta-legacy-layout/html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.js.ini
@@ -1,4 +1,3 @@
[document-base-url-window-initiator-is-not-opener.https.window.html]
- expected: [FAIL, PASS, TIMEOUT]
[window.open() gets base url from initiator not opener.]
expected: [FAIL, PASS, TIMEOUT]
diff --git a/tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
index 8acae84e1e4..d169bd2e9fa 100644
--- a/tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
@@ -1,5 +1,4 @@
[supported-elements.html]
- expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
@@ -10,7 +9,7 @@
expected: FAIL
[Area element should support autofocus]
- expected: TIMEOUT
+ expected: FAIL
[Host element with delegatesFocus should support autofocus]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
index e5994e21efc..25d9964f057 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
@@ -1,5 +1,4 @@
[iframe_sandbox_popups_escaping-1.html]
type: testharness
- expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
index 6f7461b9472..f9138fb999a 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
@@ -1,4 +1,5 @@
[iframe_sandbox_popups_nonescaping-1.html]
type: testharness
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: FAIL
+ expected: NOTRUN
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
index d5fd800f09d..ff6467094b8 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
@@ -1,4 +1,3 @@
[iframe_sandbox_popups_nonescaping-3.html]
- expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/meta/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini
index 7682a4830bf..7682a4830bf 100644
--- a/tests/wpt/meta/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/text-plain.window.js.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/text-plain.window.js.ini
index 1f6bcc936e8..eb09f8a4ada 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/text-plain.window.js.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/text-plain.window.js.ini
@@ -178,3 +178,9 @@
[text/plain: backslash in name (formdata event)]
expected: FAIL
+
+ [text/plain: \\r\\n in name (formdata event)]
+ expected: FAIL
+
+ [text/plain: single quote in name (normal form)]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/the-input-element/range.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-input-element/range.html.ini
index d29bdc28652..9517557c3a6 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/forms/the-input-element/range.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-input-element/range.html.ini
@@ -5,3 +5,6 @@
[Skip ASCII whitespace within input]
expected: FAIL
+
+ [range overflow styles]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
index cc18f512574..071b4378add 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
@@ -11,6 +11,3 @@
[Check that rel=noopener with target=_parent does a normal load]
expected: FAIL
-
- [Check that rel=noopener with target=_self does a normal load]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini
new file mode 100644
index 00000000000..6339abba6d9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini
@@ -0,0 +1,4 @@
+[async-script.html?reload]
+ expected: ERROR
+
+[async-script.html?default]
diff --git a/tests/wpt/meta-legacy-layout/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/meta-legacy-layout/html/syntax/parsing/DOMContentLoaded-defer.html.ini
deleted file mode 100644
index b8bdf33cb65..00000000000
--- a/tests/wpt/meta-legacy-layout/html/syntax/parsing/DOMContentLoaded-defer.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[DOMContentLoaded-defer.html]
- [The end: DOMContentLoaded and defer scripts]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini
new file mode 100644
index 00000000000..fc0233f5241
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini
@@ -0,0 +1,3 @@
+[module-delayed.html]
+ [async document.write in a module]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini
index 6dcac6f75ac..7237f5792de 100644
--- a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini
@@ -4,7 +4,7 @@
expected: FAIL
[Rejection handler on pending-then-rejected promise]
- expected: FAIL
+ expected: TIMEOUT
[Thenable resolution]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
index 8bcf3a07de4..31bfd644df0 100644
--- a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
@@ -1,10 +1,9 @@
[promise-job-entry.html]
- expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
[Rejection handler on pending-then-rejected promise]
- expected: TIMEOUT
+ expected: FAIL
[Sanity check: this all works as expected with no promises involved]
expected: FAIL
@@ -16,4 +15,4 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/streams/readable-streams/crashtests/strategy-worker-terminate.html.ini b/tests/wpt/meta-legacy-layout/streams/readable-streams/crashtests/strategy-worker-terminate.html.ini
deleted file mode 100644
index 964697e81e9..00000000000
--- a/tests/wpt/meta-legacy-layout/streams/readable-streams/crashtests/strategy-worker-terminate.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[strategy-worker-terminate.html]
- expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/meta-legacy-layout/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
index 507ad3c1831..b00949498c2 100644
--- a/tests/wpt/meta-legacy-layout/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
+++ b/tests/wpt/meta-legacy-layout/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
@@ -925,3 +925,9 @@
[X SNR (-103.80436093960746 dB) is not greater than or equal to 65.737. Got -103.80436093960746.]
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[15073\]\t-5.6928118767401656e-15\t6.4605611562728882e-1\t6.4605611562729448e-1\t1.0000000000000087e+0\t3.8985999999999999e-3\n\t[15074\]\t2.5936898589134216e-1\t5.9696805477142334e-1\t3.3759906888008118e-1\t5.6552283858697683e-1\t3.8985999999999999e-3\n\tMax AbsError of 6.4605611562729448e-1 at index of 15073.\n\tMax RelError of 1.0000000000000087e+0 at index of 15073.\n]
+ expected: FAIL
+
+ [X SNR (46.132795778267024 dB) is not greater than or equal to 65.737. Got 46.132795778267024.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/webmessaging/with-ports/017.html.ini b/tests/wpt/meta-legacy-layout/webmessaging/with-ports/017.html.ini
new file mode 100644
index 00000000000..c7946fc91b4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/webmessaging/with-ports/017.html.ini
@@ -0,0 +1,4 @@
+[017.html]
+ expected: TIMEOUT
+ [origin of the script that invoked the method, about:blank]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/workers/semantics/run-a-worker/003.html.ini b/tests/wpt/meta-legacy-layout/workers/semantics/run-a-worker/003.html.ini
index f4318e59a8d..e083d83077b 100644
--- a/tests/wpt/meta-legacy-layout/workers/semantics/run-a-worker/003.html.ini
+++ b/tests/wpt/meta-legacy-layout/workers/semantics/run-a-worker/003.html.ini
@@ -1,5 +1,4 @@
[003.html]
type: testharness
- expected: ERROR
[shared]
expected: FAIL
diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json
index 368180deb31..95fac131cbc 100644
--- a/tests/wpt/meta/MANIFEST.json
+++ b/tests/wpt/meta/MANIFEST.json
@@ -5187,6 +5187,13 @@
{}
]
],
+ "delete-from-ruby-at-start-of-button.html": [
+ "0159e5281594b6736b5bacae4d9f4f0d3e35c53c",
+ [
+ null,
+ {}
+ ]
+ ],
"delete-immediately-after-changing-input-type-from-time.html": [
"e608b8c86612d73f731d3127127e768328c7644c",
[
@@ -155355,6 +155362,32 @@
{}
]
],
+ "oklch-l-over-1-1.html": [
+ "4eb3cda8462639e740c4e606252fc9784dab580e",
+ [
+ null,
+ [
+ [
+ "/css/css-color/oklch-l-over-1-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "oklch-l-over-1-2.html": [
+ "de8b1a6cdd05c32267cded3a633456db04127888",
+ [
+ null,
+ [
+ [
+ "/css/css-color/oklch-l-over-1-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"opacity-overlapping-letters.html": [
"65ab3742de39205341e04b18001deea3f7be192d",
[
@@ -195484,6 +195517,19 @@
{}
]
],
+ "stretch-grid-item-button-overflow.html": [
+ "0b86a7e9ac9ca874c3b4a3121cec61f3ec40a766",
+ [
+ null,
+ [
+ [
+ "/css/css-grid/stretch-grid-item-button-overflow-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"stretch-grid-item-checkbox-input.html": [
"c6a34a8288db1e034dfba0856ef0e4f9ec16d8f8",
[
@@ -195510,6 +195556,19 @@
{}
]
],
+ "stretch-grid-item-text-input-overflow.html": [
+ "0814b3dcf058f4fba01ba6517480078469a492f7",
+ [
+ null,
+ [
+ [
+ "/css/css-grid/stretch-grid-item-text-input-overflow-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"subgrid": {
"abs-pos-001.html": [
"e524ec2d767c043516546733411d7e25e6eff05b",
@@ -225064,6 +225123,19 @@
}
]
],
+ "position-sticky-in-fixed-container.html": [
+ "359ec2fd337e76e5ba1540754c87375c4090c1e2",
+ [
+ null,
+ [
+ [
+ "/css/css-position/sticky/position-sticky-in-fixed-container-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"position-sticky-inline.html": [
"6bd49befe5a66f66ea554d066ae52e5b7bb40ab9",
[
@@ -342578,7 +342650,46 @@
{}
]
]
- }
+ },
+ "side-effects-of-animations-current.html": [
+ "b0de72bdbf9bcffef88ca5dc12bbe0f9ef239823",
+ [
+ null,
+ [
+ [
+ "/web-animations/animation-model/side-effects-of-animations-current-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "side-effects-of-animations-in-effect.html": [
+ "ff53c98d79373bd048f5ec96051cb129d7ed5795",
+ [
+ null,
+ [
+ [
+ "/web-animations/animation-model/side-effects-of-animations-in-effect-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "side-effects-of-animations-none.html": [
+ "b460ecc27fd1487075b9871e656e5a3bdbfb5399",
+ [
+ null,
+ [
+ [
+ "/web-animations/animation-model/side-effects-of-animations-none-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ]
},
"responsive": {
"toggle-animated-iframe-visibility.html": [
@@ -369849,6 +369960,10 @@
}
},
"nonce-hiding": {
+ "dangling-html-or-body.html.headers": [
+ "67d4c81e589d487b25bdb73a89f8ba1c49a0c431",
+ []
+ ],
"nonces.html.headers": [
"daf482b5aba4ff052b94c99f422910727c600aae",
[]
@@ -393205,6 +393320,10 @@
"fd1deb36f4a7632beaf6cda83b4fa2ba9f46cf96",
[]
],
+ "oklch-l-over-1-ref.html": [
+ "2c7815c5f0e408197241367e2bb38e7b7df8dfdc",
+ []
+ ],
"opacity-overlapping-letters-ref.html": [
"bab1f80f685f9e52ea74b8b98f5153dcd9516624",
[]
@@ -407153,6 +407272,10 @@
[]
]
},
+ "stretch-grid-item-button-overflow-ref.html": [
+ "900c794af10e750ce98b50dd5d15016d963f471e",
+ []
+ ],
"stretch-grid-item-checkbox-input-ref.html": [
"6a75b0fcfb985a932c3cad3e982af38cba8047dd",
[]
@@ -407161,6 +407284,10 @@
"401a2bfc72d354d9ea3e1d11d5b09649cc4fce00",
[]
],
+ "stretch-grid-item-text-input-overflow-ref.html": [
+ "ebc0c8ef9cee175211c0e7823b611b40c452ab50",
+ []
+ ],
"subgrid": {
"WEB_FEATURES.yml": [
"9fffbbfce96606a6ee1ec889e01b80ff976ba42a",
@@ -412704,6 +412831,10 @@
"88d45a7e6db3fbf7c52b28a0602686f27f1e64af",
[]
],
+ "position-sticky-in-fixed-container-ref.html": [
+ "7d8e1489951bbdcdceef43c3c98f41f1ddd3bab0",
+ []
+ ],
"position-sticky-inline-ref.html": [
"d3b4869afe639ba723f97a73767e66df8a6c5707",
[]
@@ -431794,7 +431925,7 @@
[]
],
"delete.js": [
- "3c2855e28f535ec95ef3c870169d067cdb6efa23",
+ "131c99b1d5af0fcef45c270ea76596bc31af12a0",
[]
],
"fontname.js": [
@@ -431814,7 +431945,7 @@
[]
],
"forwarddelete.js": [
- "5e76ee898853bd77ab812566494dbed20b422f9d",
+ "ea590a4fbba137fa1b265f15effe5bd03a7f2225",
[]
],
"hilitecolor.js": [
@@ -431834,7 +431965,7 @@
[]
],
"inserthtml.js": [
- "841f5493c90ee915f435028252e23b6c993ad3bd",
+ "350f0a15569cdfe06f94b7bb65a59e804fb3a669",
[]
],
"insertimage.js": [
@@ -431850,7 +431981,7 @@
[]
],
"insertparagraph.js": [
- "608b7ceccebafe6aadba0a9c02a97bee1b56e395",
+ "7a5fe7158b2c6db56da0b97bf759dba33680bfe6",
[]
],
"inserttext.js": [
@@ -431886,7 +432017,7 @@
[]
],
"multitest.js": [
- "aeda7b2e7b6bc26eb851ed361f5a1338160b6dfc",
+ "e85f54addfc80919bed813b8a9236ee3fd508360",
[]
],
"outdent.js": [
@@ -482814,7 +482945,19 @@
"1e7f250c48fb093160a509b3d98c0b265085179f",
[]
]
- }
+ },
+ "side-effects-of-animations-current-ref.html": [
+ "acc0465b074c2dddfeb1ac427d49a55e5dcecd64",
+ []
+ ],
+ "side-effects-of-animations-in-effect-ref.html": [
+ "24160cb267788196430c4299e12dc6c010183fc0",
+ []
+ ],
+ "side-effects-of-animations-none-ref.html": [
+ "4d1ea997f4cb6923f6c1a22409469652d7170d87",
+ []
+ ]
},
"resources": {
"easing-tests.js": [
@@ -503013,7 +503156,7 @@
],
"import_export": {
"ec_importKey.https.any.js": [
- "31f062e313f6fe9dc735fc9a5588df0c098fde98",
+ "a01bfbb0ef2e1881e83aaefe76f1ca39805c9304",
[
"WebCryptoAPI/import_export/ec_importKey.https.any.html",
{
@@ -520078,6 +520221,13 @@
]
},
"nonce-hiding": {
+ "dangling-html-or-body.html": [
+ "4ba65e05b885cbc780fab7f1650689016f257ac2",
+ [
+ null,
+ {}
+ ]
+ ],
"nonce-hiding-move-document.html": [
"49de893ba03fbd25125fcf13eff8c352e4992d85",
[
@@ -531817,7 +531967,7 @@
},
"content-visibility": {
"animation-display-lock.html": [
- "7960ba0f59dbaa5f9ce8a7f23b05111d9731c4ed",
+ "0a03768fc358dfc8169f1c91e6ac4935ea5cd6cb",
[
null,
{}
@@ -532192,7 +532342,7 @@
]
],
"content-visibility-vs-scrollIntoView-003.html": [
- "65e48663a917d029238feb767395c132ecf8a43d",
+ "93b085a5318c0cc2fcaf44fbb1fe3f50485b6319",
[
null,
{}
@@ -553121,14 +553271,14 @@
],
"parsing": {
"transition-behavior.html": [
- "08ad3a6adf4da0cea53b4d3110eba16221d6ba6d",
+ "6e4729f9dba2bfe6eff05af07a218598b479cc66",
[
null,
{}
]
],
"transition-computed.html": [
- "a82551372f160fa77fdd0dcc7ac7d62d546db20d",
+ "51ec1baa8ab1a3b91c2c591bf4b7f3cebaaeb0cb",
[
null,
{}
@@ -557240,7 +557390,7 @@
]
],
"round-function.html": [
- "d21f56d6c8a70b9f0c5e6ac0f88232467d1b8cd2",
+ "29ec60ea44585b87386d0cc5b6e4df2b5b1230a2",
[
null,
{}
@@ -562966,6 +563116,20 @@
{}
]
],
+ "part-dir.html": [
+ "6672d267be3dfd97430a5f5eb63bac2c0e1a48d9",
+ [
+ null,
+ {}
+ ]
+ ],
+ "part-lang.html": [
+ "438098b8ef5b1867261235b21816ed073e091d91",
+ [
+ null,
+ {}
+ ]
+ ],
"placeholder-shown.html": [
"71233ed2a28c46930c6e56755676404fa6aaa9f3",
[
@@ -563001,6 +563165,13 @@
{}
]
],
+ "state-in-has.html": [
+ "15dec18feb59392a4e8c5e22224addca1701b92d",
+ [
+ null,
+ {}
+ ]
+ ],
"subject-has-invalidation-with-display-none-anchor-element.html": [
"6c87560c691c7ee21f613b531e0209600939e495",
[
@@ -563287,7 +563458,7 @@
]
],
"parse-part.html": [
- "d6ee5d54d839070b36955a6b303a7d337ec471bf",
+ "f0bec6fbc9b9ace2b7489ed4b655711f43abd470",
[
null,
{}
@@ -645293,7 +645464,7 @@
},
"dom": {
"aria-attribute-reflection.html": [
- "e201d4660eb754b9560d1b48f22dd2c063d04658",
+ "8970938ac92162ecaeb0608d8bc42905fb2818f7",
[
null,
{}
@@ -657406,7 +657577,7 @@
]
],
"range.html": [
- "093c60ba577816355f7934a418d103c6057fc920",
+ "27cc6abe9c1221f66bacb2cebebce08c839f85a2",
[
null,
{}
diff --git a/tests/wpt/meta/WebCryptoAPI/import_export/ec_importKey.https.any.js.ini b/tests/wpt/meta/WebCryptoAPI/import_export/ec_importKey.https.any.js.ini
index b3b3f10b250..3a18f6eda12 100644
--- a/tests/wpt/meta/WebCryptoAPI/import_export/ec_importKey.https.any.js.ini
+++ b/tests/wpt/meta/WebCryptoAPI/import_export/ec_importKey.https.any.js.ini
@@ -647,6 +647,96 @@
[Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits\])]
expected: FAIL
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-256}, true, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-256}, false, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-384}, true, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-384}, false, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-521}, true, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-521}, false, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
[ec_importKey.https.any.worker.html]
[Good parameters: P-256 bits (spki, buffer(91), {name: ECDSA, namedCurve: P-256}, true, [\])]
@@ -1296,3 +1386,93 @@
[Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits\])]
expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-256}, true, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-256}, false, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-256 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-384}, true, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-384}, false, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-384 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-521}, true, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, alg), {name: ECDH, namedCurve: P-521}, false, [\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveBits\])]
+ expected: FAIL
+
+ [ECDH any JWK alg: P-521 bits (jwk, object(kty, crv, x, y, d, alg), {name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits\])]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-color/animation/opacity-animation-ending-correctly-002.html.ini b/tests/wpt/meta/css/css-color/animation/opacity-animation-ending-correctly-002.html.ini
deleted file mode 100644
index eb3cf41a070..00000000000
--- a/tests/wpt/meta/css/css-color/animation/opacity-animation-ending-correctly-002.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[opacity-animation-ending-correctly-002.html]
- expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-color/oklch-l-over-1-1.html.ini b/tests/wpt/meta/css/css-color/oklch-l-over-1-1.html.ini
new file mode 100644
index 00000000000..3a1231976ac
--- /dev/null
+++ b/tests/wpt/meta/css/css-color/oklch-l-over-1-1.html.ini
@@ -0,0 +1,2 @@
+[oklch-l-over-1-1.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-color/oklch-l-over-1-2.html.ini b/tests/wpt/meta/css/css-color/oklch-l-over-1-2.html.ini
new file mode 100644
index 00000000000..9f918b7b99f
--- /dev/null
+++ b/tests/wpt/meta/css/css-color/oklch-l-over-1-2.html.ini
@@ -0,0 +1,2 @@
+[oklch-l-over-1-2.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-fonts/variations/at-font-face-font-matching.html.ini b/tests/wpt/meta/css/css-fonts/variations/at-font-face-font-matching.html.ini
index 16cb4cf699b..a29e2657d89 100644
--- a/tests/wpt/meta/css/css-fonts/variations/at-font-face-font-matching.html.ini
+++ b/tests/wpt/meta/css/css-fonts/variations/at-font-face-font-matching.html.ini
@@ -301,3 +301,27 @@
[Matching font-style: 'oblique -21deg' should prefer 'oblique -21deg' over 'oblique -60deg -40deg']
expected: FAIL
+
+ [Matching font-style: 'italic' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 20deg' should prefer 'oblique 20deg' over 'oblique 30deg 60deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 20deg' should prefer 'oblique 40deg 50deg' over 'oblique 10deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 20deg' should prefer 'oblique -50deg -20deg' over 'oblique -40deg -30deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 21deg' should prefer 'oblique 20deg' over 'oblique 10deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 0deg' should prefer 'oblique -50deg -20deg' over 'oblique -40deg -30deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -10deg' should prefer 'oblique -5deg' over 'oblique -1deg 0deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -20deg' should prefer 'oblique -10deg' over 'italic']
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-transitions/parsing/transition-computed.html.ini b/tests/wpt/meta/css/css-transitions/parsing/transition-computed.html.ini
index 7ba4f25deff..b44ff35fa69 100644
--- a/tests/wpt/meta/css/css-transitions/parsing/transition-computed.html.ini
+++ b/tests/wpt/meta/css/css-transitions/parsing/transition-computed.html.ini
@@ -22,3 +22,9 @@
[Default transition value]
expected: FAIL
+
+ [Property transition value 'all, all']
+ expected: FAIL
+
+ [Transition with a delay but no duration]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/round-function.html.ini b/tests/wpt/meta/css/css-values/round-function.html.ini
index 602b55fab9c..15fe573f603 100644
--- a/tests/wpt/meta/css/css-values/round-function.html.ini
+++ b/tests/wpt/meta/css/css-values/round-function.html.ini
@@ -322,3 +322,231 @@
[calc(0px - round(to-zero, -18px, 10px)) should be used-value-equivalent to 10px]
expected: FAIL
+
+ [round(23, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(18, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(15, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(13, 10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(-13, 10) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(-18, 10) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [round(nearest, 23, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(nearest, 18, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(nearest, 15, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(nearest, 13, 10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(nearest, -13, 10) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(nearest, -18, 10) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [round(down, 23, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(down, 18, 10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(down, 15, 10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(down, 13, 10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(down, -13, 10) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [round(down, -18, 10) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [round(up, 23, 10) should be used-value-equivalent to 30]
+ expected: FAIL
+
+ [round(up, 18, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(up, 15, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(up, 13, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(up, -13, 10) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(up, -18, 10) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(to-zero, 23, 10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(to-zero, 18, 10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(to-zero, 15, 10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(to-zero, 13, 10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(to-zero, -13, 10) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(to-zero, -18, 10) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(23, -10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(18, -10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(15, -10) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [round(13, -10) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(-13, -10) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(-18, -10) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [round(10, 5) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(nearest, 10, 5) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(down, 10, 5) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(up, 10, 5) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(to-zero, 10, 5) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [round(-10, 5) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(nearest, -10, 5) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(down, -10, 5) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(up, -10, 5) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [round(to-zero, -10, 5) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(23, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(18, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(15, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(13, 10)) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(-13, 10)) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [calc(0 - round(-18, 10)) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [calc(0 - round(nearest, 23, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(nearest, 18, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(nearest, 15, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(nearest, 13, 10)) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(nearest, -13, 10)) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [calc(0 - round(nearest, -18, 10)) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [calc(0 - round(down, 23, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(down, 18, 10)) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(down, 15, 10)) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(down, 13, 10)) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(down, -13, 10)) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [calc(0 - round(down, -18, 10)) should be used-value-equivalent to 20]
+ expected: FAIL
+
+ [calc(0 - round(up, 23, 10)) should be used-value-equivalent to -30]
+ expected: FAIL
+
+ [calc(0 - round(up, 18, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(up, 15, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(up, 13, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(up, -13, 10)) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [calc(0 - round(up, -18, 10)) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [calc(0 - round(to-zero, 23, 10)) should be used-value-equivalent to -20]
+ expected: FAIL
+
+ [calc(0 - round(to-zero, 18, 10)) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(to-zero, 15, 10)) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(to-zero, 13, 10)) should be used-value-equivalent to -10]
+ expected: FAIL
+
+ [calc(0 - round(to-zero, -13, 10)) should be used-value-equivalent to 10]
+ expected: FAIL
+
+ [calc(0 - round(to-zero, -18, 10)) should be used-value-equivalent to 10]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/part-dir.html.ini b/tests/wpt/meta/css/selectors/invalidation/part-dir.html.ini
new file mode 100644
index 00000000000..282bbbc4feb
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/part-dir.html.ini
@@ -0,0 +1,2 @@
+[part-dir.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/invalidation/part-lang.html.ini b/tests/wpt/meta/css/selectors/invalidation/part-lang.html.ini
new file mode 100644
index 00000000000..397cee29510
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/part-lang.html.ini
@@ -0,0 +1,2 @@
+[part-lang.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/selectors/invalidation/state-in-has.html.ini b/tests/wpt/meta/css/selectors/invalidation/state-in-has.html.ini
new file mode 100644
index 00000000000..1fc3633c748
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/state-in-has.html.ini
@@ -0,0 +1,4 @@
+[state-in-has.html]
+ expected: ERROR
+ [Test :has() invalidation with :state() pseudo-classes]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/parsing/parse-part.html.ini b/tests/wpt/meta/css/selectors/parsing/parse-part.html.ini
index 43cb05fcda9..9b36dc69a56 100644
--- a/tests/wpt/meta/css/selectors/parsing/parse-part.html.ini
+++ b/tests/wpt/meta/css/selectors/parsing/parse-part.html.ini
@@ -52,3 +52,9 @@
[":dir(ltr)::part(foo)" should be a valid selector]
expected: FAIL
+
+ ["::part(foo):lang(en)" should be a valid selector]
+ expected: FAIL
+
+ ["::part(foo):dir(ltr)" should be a valid selector]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini
index 410ec4c1d39..4648085f98d 100644
--- a/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini
+++ b/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini
@@ -41,3 +41,6 @@
[sec-fetch-site - HTTPS downgrade-upgrade, no attributes]
expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination, no attributes]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html.ini b/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html.ini
new file mode 100644
index 00000000000..3e07e6b7d1f
--- /dev/null
+++ b/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html.ini
@@ -0,0 +1,6 @@
+[empty-iframe-load-event.html]
+ [Check execution order from nested timeout]
+ expected: FAIL
+
+ [Check execution order on load handler]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini b/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini
index 574b2fd8927..c2a30741798 100644
--- a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini
+++ b/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini
@@ -7,3 +7,6 @@
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank']
expected: FAIL
+
+ [load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank#foo']
+ expected: FAIL
diff --git a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-referrer.window.js.ini b/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-referrer.window.js.ini
index bcda478adb1..5a245d61359 100644
--- a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-referrer.window.js.ini
+++ b/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-referrer.window.js.ini
@@ -1,10 +1,6 @@
[javascript-url-referrer.window.html]
- expected: TIMEOUT
[unsafe-url referrer policy used to create the starting page]
expected: FAIL
[origin referrer policy used to create the starting page]
expected: FAIL
-
- [no-referrer referrer policy used to create the starting page]
- expected: TIMEOUT
diff --git a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini b/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini
index f27acdd3b9d..5031c9a6429 100644
--- a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini
+++ b/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini
@@ -4,3 +4,6 @@
[Test javascript URL string return values in direct and indirect (target) frame contexts. 9]
expected: FAIL
+
+ [0041 set in href="" targeting a frame and clicked]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini b/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini
deleted file mode 100644
index 60a4fa51f8a..00000000000
--- a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[a-click.html]
- [aElement.click() before the load event must NOT replace]
- expected: FAIL
diff --git a/tests/wpt/meta/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/meta/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
deleted file mode 100644
index 5d17a8e9419..00000000000
--- a/tests/wpt/meta/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[traverse_the_history_2.html]
- [Multiple history traversals, last would be aborted]
- expected: FAIL
diff --git a/tests/wpt/meta/html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.js.ini b/tests/wpt/meta/html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.js.ini
index 962b70e3442..8b8af2b9c2e 100644
--- a/tests/wpt/meta/html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.js.ini
+++ b/tests/wpt/meta/html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.js.ini
@@ -1,4 +1,3 @@
[document-base-url-window-initiator-is-not-opener.https.window.html]
- expected: [FAIL, PASS, TIMEOUT]
[window.open() gets base url from initiator not opener.]
expected: [FAIL, PASS, TIMEOUT]
diff --git a/tests/wpt/meta/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html.ini b/tests/wpt/meta/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html.ini
index fdc27d37788..830aeb8ae48 100644
--- a/tests/wpt/meta/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html.ini
+++ b/tests/wpt/meta/html/interaction/focus/the-autofocus-attribute/autofocus-dialog.html.ini
@@ -1,6 +1,7 @@
[autofocus-dialog.html]
+ expected: TIMEOUT
[<dialog> can contain autofocus, without stopping page autofocus content from working]
expected: FAIL
[<dialog>-contained autofocus element gets focused when the dialog is shown]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/meta/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
index 16db1ea9c58..ddd65fdcec8 100644
--- a/tests/wpt/meta/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
+++ b/tests/wpt/meta/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
@@ -1,16 +1,15 @@
[supported-elements.html]
- expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
[Host element with delegatesFocus including no focusable descendants should be skipped]
- expected: TIMEOUT
+ expected: FAIL
[Element with tabindex should support autofocus]
expected: FAIL
[Area element should support autofocus]
- expected: NOTRUN
+ expected: FAIL
[Host element with delegatesFocus should support autofocus]
expected: FAIL
diff --git a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
index 24903b5f66f..7d28d586f51 100644
--- a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
+++ b/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
@@ -1,4 +1,3 @@
[iframe_sandbox_popups_escaping-1.html]
- expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini b/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
index 26704422bbe..841bafc6eca 100644
--- a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
+++ b/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
@@ -1,4 +1,3 @@
[iframe_sandbox_popups_escaping-2.html]
- expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
index e8872b3585b..bbc1f35d8d9 100644
--- a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
+++ b/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
@@ -1,4 +1,3 @@
[iframe_sandbox_popups_nonescaping-1.html]
- expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/meta/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow.html.ini b/tests/wpt/meta/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow.html.ini
deleted file mode 100644
index b4de496f4a0..00000000000
--- a/tests/wpt/meta/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[image-loading-lazy-slow.html]
- expected: FAIL
diff --git a/tests/wpt/meta/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini b/tests/wpt/meta/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini
index 76507c61aef..dc35eb36afd 100644
--- a/tests/wpt/meta/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini
+++ b/tests/wpt/meta/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini
@@ -53,9 +53,6 @@
[multipart/form-data: \\r in value (formdata event)]
expected: FAIL
- [multipart/form-data: \\r\\n in value (normal form)]
- expected: FAIL
-
[multipart/form-data: \\n\\r in value (normal form)]
expected: FAIL
diff --git a/tests/wpt/meta/html/semantics/forms/form-submission-0/text-plain.window.js.ini b/tests/wpt/meta/html/semantics/forms/form-submission-0/text-plain.window.js.ini
index e7d2bc8560d..4211b5742f1 100644
--- a/tests/wpt/meta/html/semantics/forms/form-submission-0/text-plain.window.js.ini
+++ b/tests/wpt/meta/html/semantics/forms/form-submission-0/text-plain.window.js.ini
@@ -181,3 +181,6 @@
[text/plain: double quote in value (formdata event)]
expected: FAIL
+
+ [text/plain: Basic File test (formdata event)]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini b/tests/wpt/meta/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini
index 0532bf902a1..8f3b9f95aac 100644
--- a/tests/wpt/meta/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini
+++ b/tests/wpt/meta/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini
@@ -149,9 +149,6 @@
[application/x-www-form-urlencoded: 0x00 in name (formdata event)]
expected: FAIL
- [application/x-www-form-urlencoded: backslash in value (normal form)]
- expected: FAIL
-
[application/x-www-form-urlencoded: character not in encoding in filename (formdata event)]
expected: FAIL
diff --git a/tests/wpt/meta/html/semantics/forms/the-input-element/range.html.ini b/tests/wpt/meta/html/semantics/forms/the-input-element/range.html.ini
new file mode 100644
index 00000000000..e13f7b82cd3
--- /dev/null
+++ b/tests/wpt/meta/html/semantics/forms/the-input-element/range.html.ini
@@ -0,0 +1,3 @@
+[range.html]
+ [range overflow styles]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini b/tests/wpt/meta/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
index 90317c9bf28..dcd52d2fee8 100644
--- a/tests/wpt/meta/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
+++ b/tests/wpt/meta/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
@@ -1,13 +1,12 @@
[htmlanchorelement_noopener.html]
- expected: TIMEOUT
[Check that targeting of rel=noopener with a given name reuses an existing window with that name]
expected: FAIL
[Check that rel=noopener with target=_top does a normal load]
- expected: NOTRUN
+ expected: FAIL
[Check that rel=noopener with target=_parent does a normal load]
- expected: NOTRUN
+ expected: FAIL
[Check that rel=noopener with target=_self does a normal load]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/meta/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/meta/html/syntax/parsing/DOMContentLoaded-defer.html.ini
deleted file mode 100644
index b8bdf33cb65..00000000000
--- a/tests/wpt/meta/html/syntax/parsing/DOMContentLoaded-defer.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[DOMContentLoaded-defer.html]
- [The end: DOMContentLoaded and defer scripts]
- expected: FAIL
diff --git a/tests/wpt/meta/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/meta/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
index 1053fb90051..6206f8c0210 100644
--- a/tests/wpt/meta/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
+++ b/tests/wpt/meta/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
@@ -2,6 +2,3 @@
expected: TIMEOUT
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT
-
- [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
- expected: FAIL
diff --git a/tests/wpt/meta/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini b/tests/wpt/meta/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini
index dbe1def99e3..7237f5792de 100644
--- a/tests/wpt/meta/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini
+++ b/tests/wpt/meta/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini
@@ -1,9 +1,10 @@
[promise-job-entry-different-function-realm.html]
+ expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
[Rejection handler on pending-then-rejected promise]
- expected: FAIL
+ expected: TIMEOUT
[Thenable resolution]
expected: FAIL
@@ -12,4 +13,4 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/meta/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
index 225e521d7e4..0df9b9fdb79 100644
--- a/tests/wpt/meta/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
+++ b/tests/wpt/meta/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
@@ -697,3 +697,9 @@
[X SNR (37.10602935320333 dB) is not greater than or equal to 65.737. Got 37.10602935320333.]
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[15073\]\t-6.4641032394576998e+21\t6.4605611562728882e-1\t6.4641032394576998e+21\t1.0005482624649984e+22\t3.8985999999999999e-3\n\t[15074\]\t2.5936898589134216e-1\t5.9696805477142334e-1\t3.3759906888008118e-1\t5.6552283858697683e-1\t3.8985999999999999e-3\n\tMax AbsError of 6.4641032394576998e+21 at index of 15073.\n\tMax RelError of 1.0005482624649984e+22 at index of 15073.\n]
+ expected: FAIL
+
+ [X SNR (-392.77607973643745 dB) is not greater than or equal to 65.737. Got -392.77607973643745.]
+ expected: FAIL
diff --git a/tests/wpt/meta/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini b/tests/wpt/meta/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini
index eed03df37f3..b7537329068 100644
--- a/tests/wpt/meta/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini
+++ b/tests/wpt/meta/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini
@@ -1,4 +1,5 @@
[audiocontext-not-fully-active.html]
+ expected: TIMEOUT
[frame in navigated remote-site frame]
expected: FAIL
diff --git a/tests/wpt/meta/webmessaging/with-ports/017.html.ini b/tests/wpt/meta/webmessaging/with-ports/017.html.ini
new file mode 100644
index 00000000000..c7946fc91b4
--- /dev/null
+++ b/tests/wpt/meta/webmessaging/with-ports/017.html.ini
@@ -0,0 +1,4 @@
+[017.html]
+ expected: TIMEOUT
+ [origin of the script that invoked the method, about:blank]
+ expected: TIMEOUT
diff --git a/tests/wpt/tests/WebCryptoAPI/import_export/ec_importKey.https.any.js b/tests/wpt/tests/WebCryptoAPI/import_export/ec_importKey.https.any.js
index 31f062e313f..a01bfbb0ef2 100644
--- a/tests/wpt/tests/WebCryptoAPI/import_export/ec_importKey.https.any.js
+++ b/tests/wpt/tests/WebCryptoAPI/import_export/ec_importKey.https.any.js
@@ -80,6 +80,9 @@
}
testFormat(format, algorithm, data, curve, usages, extractable);
+ if (vector.name === 'ECDH' && format === 'jwk') {
+ testEcdhJwkAlg(algorithm, { ...data.jwk, alg: 'any alg works here' }, curve, usages, extractable);
+ }
});
});
@@ -90,11 +93,13 @@
var data = keyData[curve];
allValidUsages(vector.privateUsages).forEach(function(usages) {
testFormat(format, algorithm, data, curve, usages, extractable);
+ if (vector.name === 'ECDH' && format === 'jwk') {
+ testEcdhJwkAlg(algorithm, { ...data.jwk, alg: 'any alg works here' }, curve, usages, extractable);
+ }
});
testEmptyUsages(format, algorithm, data, curve, extractable);
});
});
-
});
});
@@ -151,6 +156,21 @@
}, "Empty Usages: " + keySize.toString() + " bits " + parameterString(format, false, keyData, algorithm, extractable, usages));
}
+ // Test ECDH importKey with a JWK format
+ // Should succeed with any "alg" value
+ function testEcdhJwkAlg(algorithm, keyData, keySize, usages, extractable) {
+ const format = "jwk";
+ promise_test(function(test) {
+ return subtle.importKey(format, keyData, algorithm, extractable, usages).
+ then(function(key) {
+ assert_equals(key.constructor, CryptoKey, "Imported a CryptoKey object");
+ assert_goodCryptoKey(key, algorithm, extractable, usages, keyData.d ? 'private' : 'public');
+ }, function(err) {
+ assert_unreached("Threw an unexpected error: " + err.toString());
+ });
+ }, "ECDH any JWK alg: " + keySize.toString() + " bits " + parameterString(format, false, keyData, algorithm, extractable, usages));
+ }
+
// Helper methods follow:
diff --git a/tests/wpt/tests/content-security-policy/nonce-hiding/dangling-html-or-body.html b/tests/wpt/tests/content-security-policy/nonce-hiding/dangling-html-or-body.html
new file mode 100644
index 00000000000..4ba65e05b88
--- /dev/null
+++ b/tests/wpt/tests/content-security-policy/nonce-hiding/dangling-html-or-body.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js" nonce="secret"></script>
+<script src="/resources/testharnessreport.js" nonce="secret"></script>
+
+<!-- `Content-Security-Policy: script-src 'nonce-secret'` delivered via headers -->
+
+<body>
+ <style>body[nonce*=secret]{background:url(/security/resources/abe.png);}</style>
+ <body
+ <script nonce="secret" src="https://example.com/good.js"></script>
+ <script nonce="secret">
+ test(t => {
+ const body = document.querySelector('body');
+ var style = getComputedStyle(body);
+ assert_equals(style['background-image'], 'none');
+ }, "Nonces don't leak via CSS side-channels when a dangling body is injected.");
+ </script>
+
+ <style>html[nonce*=secret]{background:url(/security/resources/abe.png);}</style>
+ <html
+ <script nonce="secret" src="https://example.com/good.js"></script>
+ <script nonce="secret">
+ test(t => {
+ const html = document.querySelector('html');
+ var style = getComputedStyle(html);
+ assert_equals(style['background-image'], 'none');
+ }, "Nonces don't leak via CSS side-channels when a dangling html is injected.");
+ </script>
+</body>
diff --git a/tests/wpt/tests/content-security-policy/nonce-hiding/dangling-html-or-body.html.headers b/tests/wpt/tests/content-security-policy/nonce-hiding/dangling-html-or-body.html.headers
new file mode 100644
index 00000000000..67d4c81e589
--- /dev/null
+++ b/tests/wpt/tests/content-security-policy/nonce-hiding/dangling-html-or-body.html.headers
@@ -0,0 +1 @@
+Content-Security-Policy: script-src 'nonce-secret'
diff --git a/tests/wpt/tests/css/css-color/oklch-l-over-1-1.html b/tests/wpt/tests/css/css-color/oklch-l-over-1-1.html
new file mode 100644
index 00000000000..4eb3cda8462
--- /dev/null
+++ b/tests/wpt/tests/css/css-color/oklch-l-over-1-1.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Color 4: Verify lightness in Oklch is always clamped to a value between 0 to 1</title>
+<link rel="help" href="https://drafts.csswg.org/css-color/#ok-lab">
+<link rel="match" href="oklch-l-over-1-ref.html">
+<meta name="assert" content="oklch() with lightness greater than 1">
+<style>
+ .ref { background-color: oklch(1 0.5 50); width: 100px; height: 100px}
+ /* l = 1.5 should clamp back to 1 */
+ .test { background-color: oklch(1.5 0.5 50); width: 100px; height: 100px}
+</style>
+
+<body>
+ <p>Test passes if you see a single color.</p>
+ <div class="ref"></div>
+ <div class="test"></div>
+</body>
diff --git a/tests/wpt/tests/css/css-color/oklch-l-over-1-2.html b/tests/wpt/tests/css/css-color/oklch-l-over-1-2.html
new file mode 100644
index 00000000000..de8b1a6cdd0
--- /dev/null
+++ b/tests/wpt/tests/css/css-color/oklch-l-over-1-2.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Color 4: Verify lightness in Oklch is always clamped to a value between 0% to 100%</title>
+<link rel="help" href="https://drafts.csswg.org/css-color/#ok-lab">
+<link rel="match" href="oklch-l-over-1-ref.html">
+<meta name="assert" content="oklch() with lightness greater than 100%">
+<style>
+ .ref { background-color: oklch(100% 0.5 50); width: 100px; height: 100px}
+ /* l = 150% should clamp back to 100% */
+ .test { background-color: oklch(150% 0.5 50); width: 100px; height: 100px}
+</style>
+
+<body>
+ <p>Test passes if you see a single color.</p>
+ <div class="ref"></div>
+ <div class="test"></div>
+</body>
diff --git a/tests/wpt/tests/css/css-color/oklch-l-over-1-ref.html b/tests/wpt/tests/css/css-color/oklch-l-over-1-ref.html
new file mode 100644
index 00000000000..2c7815c5f0e
--- /dev/null
+++ b/tests/wpt/tests/css/css-color/oklch-l-over-1-ref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Color 4: Verify lightness in Oklch is always clamped to a value between 0 to 1</title>
+<style>
+ .ref { background-color: oklch(1 0.5 50); width: 100px; height: 200px}
+</style>
+
+<body>
+ <p>Test passes if you see a single color.</p>
+ <div class="ref"></div>
+</body>
diff --git a/tests/wpt/tests/css/css-contain/content-visibility/animation-display-lock.html b/tests/wpt/tests/css/css-contain/content-visibility/animation-display-lock.html
index 7960ba0f59d..0a03768fc35 100644
--- a/tests/wpt/tests/css/css-contain/content-visibility/animation-display-lock.html
+++ b/tests/wpt/tests/css/css-contain/content-visibility/animation-display-lock.html
@@ -52,6 +52,10 @@ function createAnimatingElement(test, name) {
return target;
}
+function waitForEvent(element, eventName) {
+ return new Promise(resolve => element.addEventListener(eventName, resolve, { once: true }));
+}
+
promise_test(async t => {
const container = document.getElementById('container');
const target = createAnimatingElement(t, 'animate');
@@ -73,7 +77,7 @@ promise_test(async t => {
'Animation events do not fire while the animation is ' +
'running in a display locked subtree');
container.style.contentVisibility = 'visible';
- await waitForAnimationFrames(2);
+ await waitForEvent(target, 'animationiteration');
assert_true(animationIterationEvent,
'The animationiteration event fires once the animation is ' +
'no longer display locked');
@@ -171,7 +175,7 @@ promise_test(async t => {
animation.currentTime = 1999;
await animation.ready;
- await waitForAnimationFrames(2);
+ await waitForEvent(animation, 'finish');
assert_true(animationFinishEvent,
'Animation event not blocked on display locked subtree if ' +
diff --git a/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-vs-scrollIntoView-003.html b/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-vs-scrollIntoView-003.html
index 65e48663a91..93b085a5318 100644
--- a/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-vs-scrollIntoView-003.html
+++ b/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-vs-scrollIntoView-003.html
@@ -56,12 +56,13 @@ function tick() {
});
}
-promise_test(async () => {
- await tick();
+function waitForEvent() {
+ return new Promise(resolve => e3.addEventListener('contentvisibilityautostatechange', resolve));
+}
- function waitForEvent() {
- return new Promise(resolve => e3.addEventListener('contentvisibilityautostatechange', resolve));
- }
+promise_test(async (t) => {
+ // Make sure the first event has fired.
+ await waitForEvent();
var eventCounter = 0;
function eventHandler(e) {
diff --git a/tests/wpt/tests/css/css-grid/stretch-grid-item-button-overflow-ref.html b/tests/wpt/tests/css/css-grid/stretch-grid-item-button-overflow-ref.html
new file mode 100644
index 00000000000..900c794af10
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/stretch-grid-item-button-overflow-ref.html
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+ <meta charset="utf-8">
+ <title>CSS Grid Reference: stretching overflow!=visible items</title>
+ <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1348857">
+ <style>
+body,html { color:black; background:white; font:16px/1 monospace; padding:0; margin:0; }
+
+.grid {
+ display: inline-grid;
+ width: 100px;
+ height: 50px;
+ grid: 7px auto 3px / 7px auto 3px;
+ grid-gap: 5px;
+ border:1px solid;
+}
+
+.grid > * {
+ grid-area: 2/2;
+ border:1px solid;
+ appearance: none;
+ min-width:0;
+ min-height:0;
+ box-sizing: border-box;
+}
+
+.m { margin: 17px 3px 5px 7px; }
+
+x { display:block; width:110px; height:5px; background:grey; }
+.h .grid x { width:5px; height:110px; }
+
+br { clear:both; }
+ </style>
+</head>
+<body>
+
+<div class="grid"><button class="oa"></button></div>
+<div class="grid"><button class="os"></button></div>
+<div class="grid"><button class="oh"></button></div>
+<div class="grid"><button class="ov"></button></div>
+<div class="grid"><button class="oc"></button></div>
+
+<br>
+
+<div class="grid"><button class="m oa"></button></div>
+<div class="grid"><button class="m os"></button></div>
+<div class="grid"><button class="m oh"></button></div>
+<div class="grid"><button class="m ov"></button></div>
+<div class="grid"><button class="m oc"></button></div>
+
+<br>
+
+<div class="h">
+
+<div class="grid"><button class="oa"></button></div>
+<div class="grid"><button class="os"></button></div>
+<div class="grid"><button class="oh"></button></div>
+<div class="grid"><button class="ov"></button></div>
+<div class="grid"><button class="oc"></button></div>
+
+<br>
+
+<div class="grid"><button class="m oa"></button></div>
+<div class="grid"><button class="m os"></button></div>
+<div class="grid"><button class="m oh"></button></div>
+<div class="grid"><button class="m ov"></button></div>
+<div class="grid"><button class="m oc"></button></div>
+
+<br>
+
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-grid/stretch-grid-item-button-overflow.html b/tests/wpt/tests/css/css-grid/stretch-grid-item-button-overflow.html
new file mode 100644
index 00000000000..0b86a7e9ac9
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/stretch-grid-item-button-overflow.html
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: stretching overflow!=visible items: stretching rules for scroll containers</title>
+ <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1348857">
+ <link rel="help" href="https://drafts.csswg.org/css-grid/#min-size-auto">
+ <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/7714">
+ <link rel="match" href="stretch-grid-item-button-overflow-ref.html">
+ <style>
+body,html { color:black; background:white; font:16px/1 monospace; padding:0; margin:0; }
+
+.grid {
+ display: inline-grid;
+ width: 100px;
+ height: 50px;
+ grid: 7px auto 3px / 7px auto 3px;
+ grid-gap: 5px;
+ border:1px solid;
+}
+
+.grid > * {
+ grid-area: 2/2;
+ border:1px solid;
+ appearance: none;
+}
+
+.oa { overflow: auto; }
+.os { overflow: scroll; }
+.oh { overflow: hidden; }
+.oc { overflow: clip; }
+.m { margin: 17px 3px 5px 7px; }
+
+x { display:block; width:110px; height:5px; background:grey; }
+.h .grid x { width:5px; height:110px; }
+
+br { clear:both; }
+ </style>
+</head>
+<body>
+
+<div class="grid"><button class="oa"></button></div>
+<div class="grid"><button class="os"></button></div>
+<div class="grid"><button class="oh"></button></div>
+<div class="grid"><button class="oc"></button></div>
+<div class="grid"><button class=" "></button></div>
+
+<br>
+
+<div class="grid"><button class="m oa"></button></div>
+<div class="grid"><button class="m os"></button></div>
+<div class="grid"><button class="m oh"></button></div>
+<div class="grid"><button class="m oc"></button></div>
+<div class="grid"><button class="m "></button></div>
+
+<br>
+
+<div class="h">
+
+<div class="grid"><button class="oa"></button></div>
+<div class="grid"><button class="os"></button></div>
+<div class="grid"><button class="oh"></button></div>
+<div class="grid"><button class="oc"></button></div>
+<div class="grid"><button class=" "></button></div>
+
+<br>
+
+<div class="grid"><button class="m oa"></button></div>
+<div class="grid"><button class="m os"></button></div>
+<div class="grid"><button class="m oh"></button></div>
+<div class="grid"><button class="m oc"></button></div>
+<div class="grid"><button class="m "></button></div>
+
+<br>
+
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-grid/stretch-grid-item-text-input-overflow-ref.html b/tests/wpt/tests/css/css-grid/stretch-grid-item-text-input-overflow-ref.html
new file mode 100644
index 00000000000..ebc0c8ef9ce
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/stretch-grid-item-text-input-overflow-ref.html
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+ <meta charset="utf-8">
+ <title>CSS Grid Reference: stretching overflow!=visible items</title>
+ <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1348857">
+ <style type="text/css">
+body,html { color:black; background:white; font:16px/1 monospace; padding:0; margin:0; }
+
+.grid {
+ display: inline-grid;
+ width: 100px;
+ height: 50px;
+ grid: 7px auto 3px / 7px auto 3px;
+ grid-gap: 5px;
+ border:1px solid;
+}
+
+.grid > * {
+ grid-area: 2/2;
+ border:1px solid;
+ appearance: none;
+ min-width:0;
+ min-height:0;
+ box-sizing: border-box;
+}
+
+input { justify-self: start; }
+.m { align-self: start; margin: 17px 3px 5px 7px; }
+
+x { display:block; width:110px; height:5px; background:grey; }
+.h .grid x { width:5px; height:110px; }
+
+br { clear:both; }
+ </style>
+</head>
+<body>
+
+<div class="grid"><input class="oa"></div>
+<div class="grid"><input class="os"></div>
+<div class="grid"><input class="oh"></div>
+<div class="grid"><input class="ov"></div>
+<div class="grid"><input class="oc"></div>
+
+<br>
+
+<div class="grid"><input class="m oa"></div>
+<div class="grid"><input class="m os"></div>
+<div class="grid"><input class="m oh"></div>
+<div class="grid"><input class="m ov"></div>
+<div class="grid"><input class="m oc"></div>
+
+<br>
+
+<div class="h">
+
+<div class="grid"><input class="oa"></div>
+<div class="grid"><input class="os"></div>
+<div class="grid"><input class="oh"></div>
+<div class="grid"><input class="ov"></div>
+<div class="grid"><input class="oc"></div>
+
+<br>
+
+<div class="grid"><input class="m oa"></div>
+<div class="grid"><input class="m os"></div>
+<div class="grid"><input class="m oh"></div>
+<div class="grid"><input class="m ov"></div>
+<div class="grid"><input class="m oc"></div>
+
+<br>
+
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-grid/stretch-grid-item-text-input-overflow.html b/tests/wpt/tests/css/css-grid/stretch-grid-item-text-input-overflow.html
new file mode 100644
index 00000000000..0814b3dcf05
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/stretch-grid-item-text-input-overflow.html
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: stretching overflow!=visible items: stretching rules for scroll containers don't apply to input</title>
+ <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1348857">
+ <link rel="match" href="stretch-grid-item-text-input-overflow-ref.html">
+ <link rel="help" href="https://drafts.csswg.org/css-grid/#min-size-auto">
+ <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/7714">
+ <style type="text/css">
+body,html { color:black; background:white; font:16px/1 monospace; padding:0; margin:0; }
+
+.grid {
+ display: inline-grid;
+ width: 100px;
+ height: 50px;
+ grid: 7px auto 3px / 7px auto 3px;
+ grid-gap: 5px;
+ border:1px solid;
+}
+
+.grid > * {
+ grid-area: 2/2;
+ border:1px solid;
+ appearance: none;
+}
+
+.oa { overflow: auto; }
+.os { overflow: scroll; }
+.oh { overflow: hidden; }
+.oc { overflow: clip; }
+.m { margin: 17px 3px 5px 7px; }
+
+x { display:block; width:110px; height:5px; background:grey; }
+.h .grid x { width:5px; height:110px; }
+
+br { clear:both; }
+ </style>
+</head>
+<body>
+
+<div class="grid"><input class="oa"></div>
+<div class="grid"><input class="os"></div>
+<div class="grid"><input class="oh"></div>
+<div class="grid"><input class="oc"></div>
+<div class="grid"><input class=" "></div>
+
+<br>
+
+<div class="grid"><input class="m oa"></div>
+<div class="grid"><input class="m os"></div>
+<div class="grid"><input class="m oh"></div>
+<div class="grid"><input class="m oc"></div>
+<div class="grid"><input class="m "></div>
+
+<br>
+
+<div class="h">
+
+<div class="grid"><input class="oa"></div>
+<div class="grid"><input class="os"></div>
+<div class="grid"><input class="oh"></div>
+<div class="grid"><input class="oc"></div>
+<div class="grid"><input class=" "></div>
+
+<br>
+
+<div class="grid"><input class="m oa"></div>
+<div class="grid"><input class="m os"></div>
+<div class="grid"><input class="m oh"></div>
+<div class="grid"><input class="m oc"></div>
+<div class="grid"><input class="m "></div>
+
+<br>
+
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-position/sticky/position-sticky-in-fixed-container-ref.html b/tests/wpt/tests/css/css-position/sticky/position-sticky-in-fixed-container-ref.html
new file mode 100644
index 00000000000..7d8e1489951
--- /dev/null
+++ b/tests/wpt/tests/css/css-position/sticky/position-sticky-in-fixed-container-ref.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<style>
+ .modal {
+ bottom: 0;
+ left: 0;
+ right: 0;
+ position: fixed;
+ }
+
+ .modal-dialog {
+ position: relative;
+ overflow: auto;
+ max-height: 400px;
+ transform: translateY(0);
+ }
+
+ .modal-content {
+ background-color: purple;
+ height: 300px;
+ }
+
+ .modal-footer {
+ height: 100px;
+ background-color: blue;
+ }
+
+ .additional-content {
+ height: 100px;
+ background-color: purple;
+ }
+</style>
+<div class="modal">
+ <div class="modal-dialog">
+ <div class="modal-content"></div>
+ <div class="modal-footer"></div>
+ <div class="additional-content"></div>
+ </div>
+</div>
diff --git a/tests/wpt/tests/css/css-position/sticky/position-sticky-in-fixed-container.html b/tests/wpt/tests/css/css-position/sticky/position-sticky-in-fixed-container.html
new file mode 100644
index 00000000000..359ec2fd337
--- /dev/null
+++ b/tests/wpt/tests/css/css-position/sticky/position-sticky-in-fixed-container.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<link rel="match" href="position-sticky-in-fixed-container-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-position-3/#sticky-pos">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1854010">
+<style>
+ .modal {
+ bottom: 0;
+ left: 0;
+ right: 0;
+ position: fixed;
+ }
+
+ .modal-dialog {
+ position: relative;
+ overflow: auto;
+ max-height: 400px;
+ transform: translateY(0);
+ }
+
+ .modal-content {
+ background-color: purple;
+ height: 400px;
+ }
+
+ .modal-footer {
+ height: 100px;
+ background-color: blue;
+
+ position:sticky;
+ bottom: 0;
+ }
+</style>
+<div class="modal">
+ <div class="modal-dialog">
+ <div class="modal-content"></div>
+ <div class="modal-footer"></div>
+ </div>
+</div>
diff --git a/tests/wpt/tests/css/css-transitions/parsing/transition-behavior.html b/tests/wpt/tests/css/css-transitions/parsing/transition-behavior.html
index 08ad3a6adf4..6e4729f9dba 100644
--- a/tests/wpt/tests/css/css-transitions/parsing/transition-behavior.html
+++ b/tests/wpt/tests/css/css-transitions/parsing/transition-behavior.html
@@ -13,17 +13,17 @@ test_computed_value('transition-behavior', 'normal');
test_valid_value('transition-behavior', 'allow-discrete');
test_computed_value('transition-behavior', 'allow-discrete');
-test_valid_value('transition', 'allow-discrete display', 'display 0s ease 0s allow-discrete');
-test_computed_value('transition', 'allow-discrete display', 'display 0s ease 0s allow-discrete');
+test_valid_value('transition', 'allow-discrete display', 'display allow-discrete');
+test_computed_value('transition', 'allow-discrete display', 'display allow-discrete');
-test_valid_value('transition', 'allow-discrete display 3s', 'display 3s ease 0s allow-discrete');
-test_computed_value('transition', 'allow-discrete display 3s', 'display 3s ease 0s allow-discrete');
+test_valid_value('transition', 'allow-discrete display 3s', 'display 3s allow-discrete');
+test_computed_value('transition', 'allow-discrete display 3s', 'display 3s allow-discrete');
-test_valid_value('transition', 'allow-discrete display 3s 1s', 'display 3s ease 1s allow-discrete');
-test_computed_value('transition', 'allow-discrete display 3s 1s', 'display 3s ease 1s allow-discrete');
+test_valid_value('transition', 'allow-discrete display 3s 1s', 'display 3s 1s allow-discrete');
+test_computed_value('transition', 'allow-discrete display 3s 1s', 'display 3s 1s allow-discrete');
-test_valid_value('transition', 'allow-discrete display 3s ease-in-out', 'display 3s ease-in-out 0s allow-discrete');
-test_computed_value('transition', 'allow-discrete display 3s ease-in-out', 'display 3s ease-in-out 0s allow-discrete');
+test_valid_value('transition', 'allow-discrete display 3s ease-in-out', 'display 3s ease-in-out allow-discrete');
+test_computed_value('transition', 'allow-discrete display 3s ease-in-out', 'display 3s ease-in-out allow-discrete');
test_valid_value('transition', 'allow-discrete display 3s ease-in-out 1s', 'display 3s ease-in-out 1s allow-discrete');
test_computed_value('transition', 'allow-discrete display 3s ease-in-out 1s', 'display 3s ease-in-out 1s allow-discrete');
@@ -44,14 +44,14 @@ test_computed_value('transition', 'display 3s ease-in-out 1s allow-discrete', 'd
// Serialization with multiple shorthands, including different order
test_valid_value('transition',
'allow-discrete display, normal opacity, color',
- 'display 0s ease 0s allow-discrete, opacity 0s ease 0s, color 0s ease 0s');
+ 'display allow-discrete, opacity, color');
test_computed_value('transition',
'allow-discrete display, normal opacity, color',
- 'display 0s ease 0s allow-discrete, opacity 0s ease 0s, color 0s ease 0s');
+ 'display allow-discrete, opacity, color');
test_valid_value('transition',
'normal opacity, color, allow-discrete display',
- 'opacity 0s ease 0s, color 0s ease 0s, display 0s ease 0s allow-discrete');
+ 'opacity, color, display allow-discrete');
test_computed_value('transition',
'normal opacity, color, allow-discrete display',
- 'opacity 0s ease 0s, color 0s ease 0s, display 0s ease 0s allow-discrete');
+ 'opacity, color, display allow-discrete');
</script>
diff --git a/tests/wpt/tests/css/css-transitions/parsing/transition-computed.html b/tests/wpt/tests/css/css-transitions/parsing/transition-computed.html
index a82551372f1..51ec1baa8ab 100644
--- a/tests/wpt/tests/css/css-transitions/parsing/transition-computed.html
+++ b/tests/wpt/tests/css/css-transitions/parsing/transition-computed.html
@@ -16,17 +16,26 @@
// <time> || <easing-function> || <time>
test(() => {
- assert_equals(getComputedStyle(document.getElementById('target')).transition, "all 0s ease 0s");
+ assert_equals(getComputedStyle(document.getElementById('target')).transition, "all");
}, "Default transition value");
-test_computed_value("transition", "1s", "all 1s ease 0s");
-test_computed_value("transition", "cubic-bezier(0, -2, 1, 3)", "all 0s cubic-bezier(0, -2, 1, 3) 0s");
-test_computed_value("transition", "1s -3s", "all 1s ease -3s");
-test_computed_value("transition", "none", "none 0s ease 0s");
-test_computed_value("transition", "top", "top 0s ease 0s");
+test_computed_value("transition", "1s", "1s");
+test_computed_value("transition", "cubic-bezier(0, -2, 1, 3)", "cubic-bezier(0, -2, 1, 3)");
+test_computed_value("transition", "1s -3s", "1s -3s");
+test_computed_value("transition", "none", "none");
+test_computed_value("transition", "top", "top");
test_computed_value("transition", "1s -3s cubic-bezier(0, -2, 1, 3) top", "top 1s cubic-bezier(0, -2, 1, 3) -3s");
-test_computed_value("transition", "1s -3s, cubic-bezier(0, -2, 1, 3) top", "all 1s ease -3s, top 0s cubic-bezier(0, -2, 1, 3) 0s");
+test_computed_value("transition", "1s -3s, cubic-bezier(0, -2, 1, 3) top", "1s -3s, top cubic-bezier(0, -2, 1, 3)");
+
+test_computed_value("transition", "all, all", "all, all");
+
+test(() => {
+ const target = document.getElementById('target');
+ target.style.transition = "initial";
+ target.style.transitionDelay = "1s";
+ assert_equals(getComputedStyle(target).transition, "0s 1s");
+}, "Transition with a delay but no duration");
// TODO: Add test with a single timing-function keyword.
</script>
diff --git a/tests/wpt/tests/css/css-values/round-function.html b/tests/wpt/tests/css/css-values/round-function.html
index d21f56d6c8a..29ec60ea445 100644
--- a/tests/wpt/tests/css/css-values/round-function.html
+++ b/tests/wpt/tests/css/css-values/round-function.html
@@ -18,6 +18,13 @@ test_math_used("round(13px, 10px)", "10px");
test_math_used("round(-13px, 10px)", "-10px");
test_math_used("round(-18px, 10px)", "-20px");
+test_math_used("round(23, 10)", "20", { type: "integer" });
+test_math_used("round(18, 10)", "20", { type: "integer" });
+test_math_used("round(15, 10)", "20", { type: "integer" });
+test_math_used("round(13, 10)", "10", { type: "integer" });
+test_math_used("round(-13, 10)", "-10", { type: "integer" });
+test_math_used("round(-18, 10)", "-20", { type: "integer" });
+
// Test nearest
test_math_used("round(nearest, 23px, 10px)", "20px");
test_math_used("round(nearest, 18px, 10px)", "20px");
@@ -26,6 +33,13 @@ test_math_used("round(nearest, 13px, 10px)", "10px");
test_math_used("round(nearest, -13px, 10px)", "-10px");
test_math_used("round(nearest, -18px, 10px)", "-20px");
+test_math_used("round(nearest, 23, 10)", "20", { type: "integer" });
+test_math_used("round(nearest, 18, 10)", "20", { type: "integer" });
+test_math_used("round(nearest, 15, 10)", "20", { type: "integer" });
+test_math_used("round(nearest, 13, 10)", "10", { type: "integer" });
+test_math_used("round(nearest, -13, 10)", "-10", { type: "integer" });
+test_math_used("round(nearest, -18, 10)", "-20", { type: "integer" });
+
// Test down
test_math_used("round(down, 23px, 10px)", "20px");
test_math_used("round(down, 18px, 10px)", "10px");
@@ -34,6 +48,13 @@ test_math_used("round(down, 13px, 10px)", "10px");
test_math_used("round(down, -13px, 10px)", "-20px");
test_math_used("round(down, -18px, 10px)", "-20px");
+test_math_used("round(down, 23, 10)", "20", { type: "integer" });
+test_math_used("round(down, 18, 10)", "10", { type: "integer" });
+test_math_used("round(down, 15, 10)", "10", { type: "integer" });
+test_math_used("round(down, 13, 10)", "10", { type: "integer" });
+test_math_used("round(down, -13, 10)", "-20", { type: "integer" });
+test_math_used("round(down, -18, 10)", "-20", { type: "integer" });
+
// Test up
test_math_used("round(up, 23px, 10px)", "30px");
test_math_used("round(up, 18px, 10px)", "20px");
@@ -42,6 +63,13 @@ test_math_used("round(up, 13px, 10px)", "20px");
test_math_used("round(up, -13px, 10px)", "-10px");
test_math_used("round(up, -18px, 10px)", "-10px");
+test_math_used("round(up, 23, 10)", "30", { type: "integer" });
+test_math_used("round(up, 18, 10)", "20", { type: "integer" });
+test_math_used("round(up, 15, 10)", "20", { type: "integer" });
+test_math_used("round(up, 13, 10)", "20", { type: "integer" });
+test_math_used("round(up, -13, 10)", "-10", { type: "integer" });
+test_math_used("round(up, -18, 10)", "-10", { type: "integer" });
+
// Test to-zero
test_math_used("round(to-zero, 23px, 10px)", "20px");
test_math_used("round(to-zero, 18px, 10px)", "10px");
@@ -50,6 +78,13 @@ test_math_used("round(to-zero, 13px, 10px)", "10px");
test_math_used("round(to-zero, -13px, 10px)", "-10px");
test_math_used("round(to-zero, -18px, 10px)", "-10px");
+test_math_used("round(to-zero, 23, 10)", "20", { type: "integer" });
+test_math_used("round(to-zero, 18, 10)", "10", { type: "integer" });
+test_math_used("round(to-zero, 15, 10)", "10", { type: "integer" });
+test_math_used("round(to-zero, 13, 10)", "10", { type: "integer" });
+test_math_used("round(to-zero, -13, 10)", "-10", { type: "integer" });
+test_math_used("round(to-zero, -18, 10)", "-10", { type: "integer" });
+
// Test a negative step
test_math_used("round(23px, -10px)", "20px");
test_math_used("round(18px, -10px)", "20px");
@@ -58,6 +93,13 @@ test_math_used("round(13px, -10px)", "10px");
test_math_used("round(-13px, -10px)", "-10px");
test_math_used("round(-18px, -10px)", "-20px");
+test_math_used("round(23, -10)", "20", { type: "integer" });
+test_math_used("round(18, -10)", "20", { type: "integer" });
+test_math_used("round(15, -10)", "20", { type: "integer" });
+test_math_used("round(13, -10)", "10", { type: "integer" });
+test_math_used("round(-13, -10)", "-10", { type: "integer" });
+test_math_used("round(-18, -10)", "-20", { type: "integer" });
+
// Test with value that is an exact multiple of step
test_math_used("round(10px, 5px)", "10px");
test_math_used("round(nearest, 10px, 5px)", "10px");
@@ -65,12 +107,24 @@ test_math_used("round(down, 10px, 5px)", "10px");
test_math_used("round(up, 10px, 5px)", "10px");
test_math_used("round(to-zero, 10px, 5px)", "10px");
+test_math_used("round(10, 5)", "10", { type: "integer" });
+test_math_used("round(nearest, 10, 5)", "10", { type: "integer" });
+test_math_used("round(down, 10, 5)", "10", { type: "integer" });
+test_math_used("round(up, 10, 5)", "10", { type: "integer" });
+test_math_used("round(to-zero, 10, 5)", "10", { type: "integer" });
+
test_math_used("round(-10px, 5px)", "-10px");
test_math_used("round(nearest, -10px, 5px)", "-10px");
test_math_used("round(down, -10px, 5px)", "-10px");
test_math_used("round(up, -10px, 5px)", "-10px");
test_math_used("round(to-zero, -10px, 5px)", "-10px");
+test_math_used("round(-10, 5)", "-10", { type: "integer" });
+test_math_used("round(nearest, -10, 5)", "-10", { type: "integer" });
+test_math_used("round(down, -10, 5)", "-10", { type: "integer" });
+test_math_used("round(up, -10, 5)", "-10", { type: "integer" });
+test_math_used("round(to-zero, -10, 5)", "-10", { type: "integer" });
+
// Test negation of the round operation
test_math_used("calc(0px - round(23px, 10px))", "-20px");
test_math_used("calc(0px - round(18px, 10px))", "-20px");
@@ -79,6 +133,13 @@ test_math_used("calc(0px - round(13px, 10px))", "-10px");
test_math_used("calc(0px - round(-13px, 10px))", "10px");
test_math_used("calc(0px - round(-18px, 10px))", "20px");
+test_math_used("calc(0 - round(23, 10))", "-20", { type: "integer" });
+test_math_used("calc(0 - round(18, 10))", "-20", { type: "integer" });
+test_math_used("calc(0 - round(15, 10))", "-20", { type: "integer" });
+test_math_used("calc(0 - round(13, 10))", "-10", { type: "integer" });
+test_math_used("calc(0 - round(-13, 10))", "10", { type: "integer" });
+test_math_used("calc(0 - round(-18, 10))", "20", { type: "integer" });
+
// Test negation of nearest
test_math_used("calc(0px - round(nearest, 23px, 10px))", "-20px");
test_math_used("calc(0px - round(nearest, 18px, 10px))", "-20px");
@@ -87,6 +148,13 @@ test_math_used("calc(0px - round(nearest, 13px, 10px))", "-10px");
test_math_used("calc(0px - round(nearest, -13px, 10px))", "10px");
test_math_used("calc(0px - round(nearest, -18px, 10px))", "20px");
+test_math_used("calc(0 - round(nearest, 23, 10))", "-20", { type: "integer" });
+test_math_used("calc(0 - round(nearest, 18, 10))", "-20", { type: "integer" });
+test_math_used("calc(0 - round(nearest, 15, 10))", "-20", { type: "integer" });
+test_math_used("calc(0 - round(nearest, 13, 10))", "-10", { type: "integer" });
+test_math_used("calc(0 - round(nearest, -13, 10))", "10", { type: "integer" });
+test_math_used("calc(0 - round(nearest, -18, 10))", "20", { type: "integer" });
+
// Test negation of down
test_math_used("calc(0px - round(down, 23px, 10px))", "-20px");
test_math_used("calc(0px - round(down, 18px, 10px))", "-10px");
@@ -95,6 +163,13 @@ test_math_used("calc(0px - round(down, 13px, 10px))", "-10px");
test_math_used("calc(0px - round(down, -13px, 10px))", "20px");
test_math_used("calc(0px - round(down, -18px, 10px))", "20px");
+test_math_used("calc(0 - round(down, 23, 10))", "-20", { type: "integer" });
+test_math_used("calc(0 - round(down, 18, 10))", "-10", { type: "integer" });
+test_math_used("calc(0 - round(down, 15, 10))", "-10", { type: "integer" });
+test_math_used("calc(0 - round(down, 13, 10))", "-10", { type: "integer" });
+test_math_used("calc(0 - round(down, -13, 10))", "20", { type: "integer" });
+test_math_used("calc(0 - round(down, -18, 10))", "20", { type: "integer" });
+
// Test negation of up
test_math_used("calc(0px - round(up, 23px, 10px))", "-30px");
test_math_used("calc(0px - round(up, 18px, 10px))", "-20px");
@@ -103,6 +178,13 @@ test_math_used("calc(0px - round(up, 13px, 10px))", "-20px");
test_math_used("calc(0px - round(up, -13px, 10px))", "10px");
test_math_used("calc(0px - round(up, -18px, 10px))", "10px");
+test_math_used("calc(0 - round(up, 23, 10))", "-30", { type: "integer" });
+test_math_used("calc(0 - round(up, 18, 10))", "-20", { type: "integer" });
+test_math_used("calc(0 - round(up, 15, 10))", "-20", { type: "integer" });
+test_math_used("calc(0 - round(up, 13, 10))", "-20", { type: "integer" });
+test_math_used("calc(0 - round(up, -13, 10))", "10", { type: "integer" });
+test_math_used("calc(0 - round(up, -18, 10))", "10", { type: "integer" });
+
// Test negation of to-zero
test_math_used("calc(0px - round(to-zero, 23px, 10px))", "-20px");
test_math_used("calc(0px - round(to-zero, 18px, 10px))", "-10px");
@@ -111,6 +193,13 @@ test_math_used("calc(0px - round(to-zero, 13px, 10px))", "-10px");
test_math_used("calc(0px - round(to-zero, -13px, 10px))", "10px");
test_math_used("calc(0px - round(to-zero, -18px, 10px))", "10px");
+test_math_used("calc(0 - round(to-zero, 23, 10))", "-20", { type: "integer" });
+test_math_used("calc(0 - round(to-zero, 18, 10))", "-10", { type: "integer" });
+test_math_used("calc(0 - round(to-zero, 15, 10))", "-10", { type: "integer" });
+test_math_used("calc(0 - round(to-zero, 13, 10))", "-10", { type: "integer" });
+test_math_used("calc(0 - round(to-zero, -13, 10))", "10", { type: "integer" });
+test_math_used("calc(0 - round(to-zero, -18, 10))", "10", { type: "integer" });
+
// Extreme cases:
// 0 step is NaN
diff --git a/tests/wpt/tests/css/selectors/invalidation/part-dir.html b/tests/wpt/tests/css/selectors/invalidation/part-dir.html
new file mode 100644
index 00000000000..6672d267be3
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/part-dir.html
@@ -0,0 +1,63 @@
+<!doctype html>
+<title>::part():dir() invalidation</title>
+<link rel="author" title="Keith Cirkel" href="mailto:wpt@keithcirkel.co.uk" />
+<link rel="help" href="https://drafts.csswg.org/css-shadow-parts/#part" />
+<link rel="help" href="https://github.com/whatwg/html/pull/8467" />
+<style>
+ my-element::part(inner) {
+ background-color: #ff0000;
+ }
+ my-element::part(inner):dir(ltr) {
+ background-color: #00ff00;
+ }
+ my-element::part(inner):dir(rtl) {
+ background-color: #0000ff;
+ }
+</style>
+<body>
+ <my-element id="subject"></my-element>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script>
+ const RED = "rgb(255, 0, 0)";
+ const GREEN = "rgb(0, 255, 0)";
+ const BLUE = "rgb(0, 0, 255)";
+ customElements.define(
+ "my-element",
+ class MyElement extends HTMLElement {
+ connectedCallback() {
+ this.attachShadow({
+ mode: "open",
+ }).innerHTML = `<div part="inner">Test</div>`;
+ this.elementInternals = this.attachInternals();
+ }
+
+ get inner() {
+ return this.shadowRoot.querySelector("[part=inner]");
+ }
+ },
+ );
+
+ test((t) => {
+ t.add_cleanup(() => {
+ subject.inner.lang = null;
+ });
+ assert_equals(getComputedStyle(subject.inner).backgroundColor, GREEN);
+ subject.inner.dir = "rtl";
+ assert_equals(getComputedStyle(subject.inner).backgroundColor, BLUE);
+ subject.inner.dir = "ltr";
+ assert_equals(getComputedStyle(subject.inner).backgroundColor, GREEN);
+ }, "::part():dir() invalidation");
+
+ test((t) => {
+ t.add_cleanup(() => {
+ subject.removeAttribute("dir");
+ });
+ assert_equals(getComputedStyle(subject.inner).backgroundColor, GREEN);
+ subject.inner.setAttribute("dir", "rtl");
+ assert_equals(getComputedStyle(subject.inner).backgroundColor, BLUE);
+ subject.inner.removeAttribute("dir");
+ assert_equals(getComputedStyle(subject.inner).backgroundColor, GREEN);
+ }, "::part():dir() invalidation from setAttribute");
+ </script>
+</body>
diff --git a/tests/wpt/tests/css/selectors/invalidation/part-lang.html b/tests/wpt/tests/css/selectors/invalidation/part-lang.html
new file mode 100644
index 00000000000..438098b8ef5
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/part-lang.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<title>::part():lang() invalidation</title>
+<link rel="author" title="Keith Cirkel" href="mailto:wpt@keithcirkel.co.uk" />
+<link rel="help" href="https://drafts.csswg.org/css-shadow-parts/#part" />
+<link rel="help" href="https://github.com/whatwg/html/pull/8467" />
+<style>
+ my-element::part(inner) {
+ background-color: #ff0000;
+ }
+ my-element::part(inner):lang(en) {
+ background-color: #00ffff;
+ }
+ my-element::part(inner):lang(en-GB) {
+ background-color: #00ff00;
+ }
+ my-element::part(inner):lang(fr) {
+ background-color: #0000ff;
+ }
+</style>
+<body>
+ <my-element id="subject" lang="en"></my-element>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script>
+ const RED = "rgb(255, 0, 0)";
+ const GREEN = "rgb(0, 255, 0)";
+ const BLUE = "rgb(0, 0, 255)";
+ const AQUA = "rgb(0, 255, 255)";
+ customElements.define(
+ "my-element",
+ class MyElement extends HTMLElement {
+ connectedCallback() {
+ this.attachShadow({
+ mode: "open",
+ }).innerHTML = `<div part="inner">Test</div>`;
+ this.elementInternals = this.attachInternals();
+ }
+
+ get inner() {
+ return this.shadowRoot.querySelector("[part=inner]");
+ }
+ },
+ );
+
+ test((t) => {
+ t.add_cleanup(() => {
+ subject.inner.removeAttribute("lang");
+ });
+ assert_equals(getComputedStyle(subject.inner).backgroundColor, AQUA);
+ subject.inner.lang = "en-GB";
+ assert_equals(getComputedStyle(subject.inner).backgroundColor, GREEN);
+ subject.inner.lang = "fr";
+ assert_equals(getComputedStyle(subject.inner).backgroundColor, BLUE);
+ subject.inner.lang = "en";
+ assert_equals(getComputedStyle(subject.inner).backgroundColor, AQUA);
+ }, "::part():lang() invalidation");
+
+ test((t) => {
+ t.add_cleanup(() => {
+ subject.inner.removeAttribute("lang");
+ });
+ assert_equals(getComputedStyle(subject.inner).backgroundColor, AQUA);
+ subject.inner.setAttribute("lang", "en-GB");
+ assert_equals(getComputedStyle(subject.inner).backgroundColor, GREEN);
+ subject.inner.setAttribute("lang", "en");
+ assert_equals(getComputedStyle(subject.inner).backgroundColor, AQUA);
+ subject.inner.setAttribute("lang", "fr");
+ assert_equals(getComputedStyle(subject.inner).backgroundColor, BLUE);
+ subject.inner.removeAttribute("lang");
+ assert_equals(getComputedStyle(subject.inner).backgroundColor, AQUA);
+ }, "::part():lang() invalidation from setAttribute");
+ </script>
+</body>
diff --git a/tests/wpt/tests/css/selectors/invalidation/state-in-has.html b/tests/wpt/tests/css/selectors/invalidation/state-in-has.html
new file mode 100644
index 00000000000..15dec18feb5
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/state-in-has.html
@@ -0,0 +1,58 @@
+<!doctype html>
+<title>:has() invalidation with :state() pseudo-class</title>
+<link rel="author" title="Keith Cirkel" href="mailto:wpt@keithcirkel.co.uk" />
+<link rel="help" href="https://drafts.csswg.org/selectors/#relational" />
+<link rel="help" href="https://github.com/whatwg/html/pull/8467" />
+<style>
+ #subject {
+ background-color: #f00;
+ }
+ #subject:has(:state(--green)) {
+ background-color: #0f0;
+ }
+ #subject:has(:state(--blue)) {
+ background-color: #00f;
+ }
+</style>
+<body>
+ Test :state() pseudo-class invalidation with :has()
+ <div id="subject">
+ <my-element id="child"></my-element>
+ </div>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script>
+ const RED = "rgb(255, 0, 0)";
+ const GREEN = "rgb(0, 255, 0)";
+ const BLUE = "rgb(0, 0, 255)";
+
+ test(() => {
+ customElements.define(
+ "my-element",
+ class MyElement extends HTMLElement {
+ connectedCallback() {
+ this.elementInternals = this.attachInternals();
+ }
+ },
+ );
+ assert_equals(getComputedStyle(subject).backgroundColor, RED);
+ child.elementInternals.states.add("--green");
+ assert_equals(getComputedStyle(subject).backgroundColor, GREEN);
+ child.elementInternals.states.clear();
+ assert_equals(getComputedStyle(subject).backgroundColor, RED);
+
+ child.elementInternals.states.add("--blue");
+ assert_equals(getComputedStyle(subject).backgroundColor, BLUE);
+ child.elementInternals.states.clear();
+ assert_equals(getComputedStyle(subject).backgroundColor, RED);
+
+ child.elementInternals.states.add("--green");
+ child.elementInternals.states.add("--blue");
+ assert_equals(getComputedStyle(subject).backgroundColor, BLUE);
+ child.elementInternals.states.delete("--blue");
+ assert_equals(getComputedStyle(subject).backgroundColor, GREEN);
+ child.elementInternals.states.delete("--green");
+ assert_equals(getComputedStyle(subject).backgroundColor, RED);
+ }, "Test :has() invalidation with :state() pseudo-classes");
+ </script>
+</body>
diff --git a/tests/wpt/tests/css/selectors/parsing/parse-part.html b/tests/wpt/tests/css/selectors/parsing/parse-part.html
index d6ee5d54d83..f0bec6fbc9b 100644
--- a/tests/wpt/tests/css/selectors/parsing/parse-part.html
+++ b/tests/wpt/tests/css/selectors/parsing/parse-part.html
@@ -24,11 +24,11 @@
test_valid_selector("::part(foo):is(:focus)");
test_valid_selector(":lang(en)::part(foo)");
test_valid_selector(":dir(ltr)::part(foo)");
+ test_valid_selector("::part(foo):lang(en)");
+ test_valid_selector("::part(foo):dir(ltr)");
test_invalid_selector(":part()");
test_invalid_selector(":part(0)");
test_invalid_selector(":part('foo')");
test_invalid_selector(":part([foo])");
- test_invalid_selector("::part(foo):lang(en)");
- test_invalid_selector("::part(foo):dir(ltr)");
test_invalid_selector('::part(foo) + ::part(bar)');
</script>
diff --git a/tests/wpt/tests/editing/crashtests/delete-from-ruby-at-start-of-button.html b/tests/wpt/tests/editing/crashtests/delete-from-ruby-at-start-of-button.html
new file mode 100644
index 00000000000..0159e528159
--- /dev/null
+++ b/tests/wpt/tests/editing/crashtests/delete-from-ruby-at-start-of-button.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf-8">
+<style>
+*:last-child {
+ white-space: pre-wrap;
+}
+</style>
+<script>
+addEventListener("DOMContentLoaded", () => {
+ getSelection().collapse(document.querySelector("ruby"));
+ document.designMode = "on";
+ document.execCommand("delete");
+});
+</script>
+</head>
+<body>
+<label contenteditable="true"></label>
+<bdi style="white-space: nowrap">
+<button>
+<kbd>
+<ruby>
+</ruby>
+</kbd>
+</button>
+</bdi>
+</body>
+</html>
diff --git a/tests/wpt/tests/editing/data/delete.js b/tests/wpt/tests/editing/data/delete.js
index 3c2855e28f5..131c99b1d5a 100644
--- a/tests/wpt/tests/editing/data/delete.js
+++ b/tests/wpt/tests/editing/data/delete.js
@@ -3074,4 +3074,31 @@ var browserTests = [
"<div style=\"display:grid\"><span>abc</span><span><br></span></div>",
[true],
{}],
+// Do not delete non-editable when deleting an editable character
+["<b>X[]<span contenteditable=false>abc</span></b><i>def</i>",
+ [["delete",""]],
+ "<b><span contenteditable=\"false\">abc</span></b><i>def</i>",
+ [true],
+ {}],
+["<b><span contenteditable=false>abc</span>X[]</b><i>def</i>",
+ [["delete",""]],
+ "<b><span contenteditable=\"false\">abc</span></b><i>def</i>",
+ [true],
+ {}],
+["<p>X[]<span contenteditable=false>abc</span></p>",
+ [["delete",""]],
+ "<p><span contenteditable=\"false\">abc</span></p>",
+ [true],
+ {}],
+["<p><span contenteditable=false>abc</span>X[]</p>",
+ [["delete",""]],
+ "<p><span contenteditable=\"false\">abc</span></p>",
+ [true],
+ {}],
+// Do not delete ancestor blocks which still has non-editable content
+["<p>{}<span contenteditable=false>ab</span></p>",
+ [["delete",""]],
+ "<p><span contenteditable=\"false\">ab</span></p>",
+ [true],
+ {}],
]
diff --git a/tests/wpt/tests/editing/data/forwarddelete.js b/tests/wpt/tests/editing/data/forwarddelete.js
index 5e76ee89885..ea590a4fbba 100644
--- a/tests/wpt/tests/editing/data/forwarddelete.js
+++ b/tests/wpt/tests/editing/data/forwarddelete.js
@@ -2954,4 +2954,31 @@ var browserTests = [
"<div style=\"display:grid\"><span>abc</span><span><br></span></div>",
[true],
{}],
+// Do not delete non-editable when deleting an editable character
+["<b>[]X<span contenteditable=false>abc</span></b><i>def</i>",
+ [["forwarddelete",""]],
+ "<b><span contenteditable=\"false\">abc</span></b><i>def</i>",
+ [true],
+ {}],
+["<b><span contenteditable=false>abc</span>[]X</b><i>def</i>",
+ [["forwarddelete",""]],
+ "<b><span contenteditable=\"false\">abc</span></b><i>def</i>",
+ [true],
+ {}],
+["<p>[]X<span contenteditable=false>abc</span></p>",
+ [["forwarddelete",""]],
+ "<p><span contenteditable=\"false\">abc</span></p>",
+ [true],
+ {}],
+["<p><span contenteditable=false>abc</span>[]X</p>",
+ [["forwarddelete",""]],
+ "<p><span contenteditable=\"false\">abc</span></p>",
+ [true],
+ {}],
+// Do not delete ancestor blocks which still has non-editable content
+["<p><span contenteditable=false>ab</span>{}</p>",
+ [["forwarddelete",""]],
+ "<p><span contenteditable=\"false\">ab</span></p>",
+ [true],
+ {}],
]
diff --git a/tests/wpt/tests/editing/data/inserthtml.js b/tests/wpt/tests/editing/data/inserthtml.js
index 841f5493c90..350f0a15569 100644
--- a/tests/wpt/tests/editing/data/inserthtml.js
+++ b/tests/wpt/tests/editing/data/inserthtml.js
@@ -590,4 +590,17 @@ var browserTests = [
"<div class=\"d1\"></div><div class=\"d2\"><span class=\"s1\">some text</span><a href=\"foo.html\"></a></div>",
[true],
{"inserthtml":[false,false,"",false,false,""]}],
+
+// Do not delete non-editable when clearing the original style
+["<p><b>[X]<span contenteditable=false>abc</span></b><i>def</i></p>",
+ [["inserthtml","<i>Z</i>"]],
+ "<p><i>Z</i><b><span contenteditable=\"false\">abc</span></b><i>def</i></p>",
+ [true],
+ {}],
+["<p><b><span contenteditable=false>abc</span>[Y]</b><i>def</i></p>",
+ [["inserthtml","<i>Z</i>"]],
+ ["<p><b><span contenteditable=\"false\">abc</span></b><i>Z</i><i>def</i></p>",
+ "<p><b><span contenteditable=\"false\">abc</span></b><i>Zdef</i></p>"],
+ [true],
+ {}],
]
diff --git a/tests/wpt/tests/editing/data/insertparagraph.js b/tests/wpt/tests/editing/data/insertparagraph.js
index 608b7cecceb..7a5fe7158b2 100644
--- a/tests/wpt/tests/editing/data/insertparagraph.js
+++ b/tests/wpt/tests/editing/data/insertparagraph.js
@@ -2410,4 +2410,15 @@ var browserTests = [
"<ul><li><span style=\"color:rgb(0, 0, 255)\"><span style=\"background-color:rgb(0, 0, 255)\">foo</span></span><br></li><li><span style=\"color:rgb(0, 0, 255)\"><span style=\"background-color:rgb(0, 0, 255)\"><br></span></span></li></ul>"],
[true,true],
{"insertparagraph":[false,false,"",false,false,""]}],
+
+["<p>[X]<span contenteditable=false>abc</span></p>",
+ [["insertparagraph",""]],
+ "<p><br></p><p><span contenteditable=\"false\">abc</span></p>",
+ [true],
+ {}],
+["<p><span contenteditable=false>abc</span>[X]</p>",
+ [["insertparagraph",""]],
+ "<p><span contenteditable=\"false\">abc</span></p><p><br></p>",
+ [true],
+ {}],
]
diff --git a/tests/wpt/tests/editing/data/multitest.js b/tests/wpt/tests/editing/data/multitest.js
index aeda7b2e7b6..e85f54addfc 100644
--- a/tests/wpt/tests/editing/data/multitest.js
+++ b/tests/wpt/tests/editing/data/multitest.js
@@ -3218,4 +3218,30 @@ var browserTests = [
"<div style=\"display:grid\"><span>abc</span><span><b>gh</b><br></span></div>"],
[true,true,true],
{}],
+// Do not delete non-editable when deleting an editable character and preseve
+// the style for new text.
+["<b>X[]<span contenteditable=false>abc</span></b><i>def</i>",
+ [["delete",""],["inserttext","Y"]],
+ ["<b>Y<span contenteditable=\"false\">abc</span></b><i>def</i>",
+ "<b>Y</b><b><span contenteditable=\"false\">abc</span></b><i>def</i>"],
+ [true,true],
+ {}],
+["<b><span contenteditable=false>abc</span>X[]</b><i>def</i>",
+ [["delete",""],["inserttext","Y"]],
+ ["<b><span contenteditable=\"false\">abc</span>Y</b><i>def</i>",
+ "<b><span contenteditable=\"false\">abc</span></b><b>Y</b><i>def</i>"],
+ [true,true],
+ {}],
+["<b>[]X<span contenteditable=false>abc</span></b><i>def</i>",
+ [["forwarddelete",""],["inserttext","Y"]],
+ ["<b>Y<span contenteditable=\"false\">abc</span></b><i>def</i>",
+ "<b>Y</b><b><span contenteditable=\"false\">abc</span></b><i>def</i>"],
+ [true,true],
+ {}],
+["<b><span contenteditable=false>abc</span>[]X</b><i>def</i>",
+ [["forwarddelete",""],["inserttext","Y"]],
+ ["<b><span contenteditable=\"false\">abc</span>Y</b><i>def</i>",
+ "<b><span contenteditable=\"false\">abc</span></b><b>Y</b><i>def</i>"],
+ [true,true],
+ {}],
]
diff --git a/tests/wpt/tests/html/dom/aria-attribute-reflection.html b/tests/wpt/tests/html/dom/aria-attribute-reflection.html
index e201d4660eb..8970938ac92 100644
--- a/tests/wpt/tests/html/dom/aria-attribute-reflection.html
+++ b/tests/wpt/tests/html/dom/aria-attribute-reflection.html
@@ -8,9 +8,16 @@
<script>
function testNullable(element, jsAttr, contentAttr) {
+ var originalValue = element[jsAttr];
+ assert_false(originalValue === null);
element[jsAttr] = null;
assert_equals(element[jsAttr], null);
assert_false(element.hasAttribute(contentAttr));
+ // Setting to undefined results in same state as setting to null.
+ element[jsAttr] = originalValue;
+ element[jsAttr] = undefined;
+ assert_equals(element[jsAttr], null);
+ assert_false(element.hasAttribute(contentAttr));
}
</script>
diff --git a/tests/wpt/tests/html/semantics/forms/the-input-element/range.html b/tests/wpt/tests/html/semantics/forms/the-input-element/range.html
index 093c60ba577..27cc6abe9c1 100644
--- a/tests/wpt/tests/html/semantics/forms/the-input-element/range.html
+++ b/tests/wpt/tests/html/semantics/forms/the-input-element/range.html
@@ -57,6 +57,10 @@
"range type support on input element"
);
+ test(function() {
+ assert_equals(getComputedStyle(document.getElementById('range_basic')).overflow, "visible");
+ }, "range overflow styles");
+
test(
function() {
assert_equals(document.getElementById('range_basic').min, "0")
diff --git a/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-current-ref.html b/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-current-ref.html
new file mode 100644
index 00000000000..acc0465b074
--- /dev/null
+++ b/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-current-ref.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html>
+<title>
+ Current animations should effectively apply will-change (i.e. force a
+ stacking context) (ref)
+</title>
+<link rel="help" href="https://drafts.csswg.org/web-animations-1/#side-effects-section">
+<link rel="author" href="mailto:bokan@chromium.org">
+<style>
+ .testcase {
+ position: relative;
+ margin: 2px;
+ border: 1px solid black;
+ width: 250px;
+ height: 25px;
+ }
+ .label {
+ flex-grow: 1;
+ }
+ .container {
+ background-color: lightgrey;
+ margin: 4px;
+ display: flex;
+ width: 600px;
+ flex-direction: row;
+ justify-content: flex-end;
+ align-items: center;
+ }
+ .pass {
+ width: 100%;
+ height: 100%;
+ background-color: limegreen;
+ }
+</style>
+
+<!-- OPACITY -->
+
+<!-- Is current - before phase playing forwards -->
+<div class="container">
+ <div class="label">Opacity - before phase</div>
+ <div class="testcase" id="opacity-before">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- Is current - in play-->
+<div class="container">
+ <div class="label">Opacity - active phase</div>
+ <div class="testcase" id="opacity-active">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- Is current - after phase playing backwards-->
+<div class="container">
+ <div class="label">Opacity - after phase</div>
+ <div class="testcase" id="opacity-after">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- TRANSFORM -->
+
+<!-- Is current - before phase playing forwards -->
+<div class="container">
+ <div class="label">Transform - before phase</div>
+ <div class="testcase" id="transform-before">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- Is current - in play-->
+<div class="container">
+ <div class="label">Transform - active phase</div>
+ <div class="testcase" id="transform-active">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- Is current - after phase playing backwards-->
+<div class="container">
+ <div class="label">Transform - after phase</div>
+ <div class="testcase" id="transform-after">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- BACKGROUND COLOR -->
+<div class="container">
+ <div class="label">Background-color - before phase</div>
+ <div class="testcase" id="bgcolor-before">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- Is current - in play-->
+<div class="container">
+ <div class="label">Background-color - active phase</div>
+ <div class="testcase" id="bgcolor-active">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- Is current - after phase playing backwards-->
+<div class="container">
+ <div class="label">Background-color - after phase</div>
+ <div class="testcase" id="bgcolor-after">
+ <div class="pass"></div>
+ </div>
+</div>
diff --git a/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-current.html b/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-current.html
new file mode 100644
index 00000000000..b0de72bdbf9
--- /dev/null
+++ b/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-current.html
@@ -0,0 +1,214 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title>
+ Current animations should effectively apply will-change (i.e. force a
+ stacking context)
+</title>
+<link rel="help" href="https://drafts.csswg.org/web-animations-1/#side-effects-section">
+<link rel="author" href="mailto:bokan@chromium.org">
+<link rel="match" href="side-effects-of-animations-current-ref.html">
+<script src="/common/reftest-wait.js"></script>
+<style>
+ .testcase {
+ position: relative;
+ margin: 2px;
+ border: 1px solid black;
+ width: 250px;
+ height: 25px;
+ }
+ .container {
+ background-color: lightgrey;
+ margin: 4px;
+ display: flex;
+ width: 600px;
+ flex-direction: row;
+ justify-content: flex-end;
+ align-items: center;
+ }
+ .label {
+ flex-grow: 1;
+ }
+ .target {
+ width: 100%;
+ height: 100%;
+ }
+ .absolutebox {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ }
+ .pass {
+ background-color: limegreen;
+ }
+ .fail {
+ background-color: red;
+ }
+</style>
+
+<script>
+const PROPERTY_OPACITY = 0;
+const PROPERTY_TRANSFORM = 1;
+const PROPERTY_BGCOLOR = 2;
+
+const PHASE_BEFORE = 10;
+const PHASE_ACTIVE = 11;
+const PHASE_AFTER = 12;
+
+// Setup an animation and put it in a state where it is current but, if outside
+// the active phase, not in effect.
+function setupAnimation(testcase, property, phase) {
+ const root = document.querySelector(testcase);
+ const effect_target = root.querySelector('.target');
+ let keyframe;
+ if (property == PROPERTY_OPACITY)
+ keyframe = { opacity: 1};
+ else if (property == PROPERTY_TRANSFORM)
+ keyframe = { transform: 'translateX(0px)' };
+ else if (property == PROPERTY_BGCOLOR)
+ keyframe = { backgroundColor: 'red' };
+ else
+ throw new Error('Unexpected property');
+
+ const options = { duration: 1000, delay: 1000, endDelay: 1000 };
+
+ const animation = effect_target.animate(
+ [ keyframe, keyframe ], options);
+
+ if (phase == PHASE_BEFORE) {
+ animation.currentTime = 500;
+ } else if (phase == PHASE_ACTIVE) {
+ animation.currentTime = 1500;
+ } else if (phase == PHASE_AFTER) {
+ animation.currentTime = 2500;
+ animation.playbackRate = -1;
+ } else {
+ throw new Error('Unexpected phase');
+ }
+
+ animation.pause();
+}
+
+onload = requestAnimationFrame(() => requestAnimationFrame(takeScreenshot));
+</script>
+
+<!-- OPACITY -->
+
+<!-- Is current - before phase playing forwards -->
+<div class="container">
+ <div class="label">Opacity - before phase</div>
+ <div class="testcase" id="opacity-before">
+ <div class="absolutebox fail"></div>
+ <div class="target pass"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#opacity-before', PROPERTY_OPACITY, PHASE_BEFORE);
+</script>
+
+<!-- Is current - in play-->
+<div class="container">
+ <div class="label">Opacity - active phase</div>
+ <div class="testcase" id="opacity-active">
+ <div class="absolutebox fail"></div>
+ <div class="target pass"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#opacity-active', PROPERTY_OPACITY, PHASE_ACTIVE);
+</script>
+
+<!-- Is current - after phase playing backwards-->
+<div class="container">
+ <div class="label">Opacity - after phase</div>
+ <div class="testcase" id="opacity-after">
+ <div class="absolutebox fail"></div>
+ <div class="target pass"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#opacity-after', PROPERTY_OPACITY, PHASE_AFTER);
+</script>
+
+<!-- TRANSFORM -->
+
+<!-- Is current - before phase playing forwards -->
+<div class="container">
+ <div class="label">Transform - before phase</div>
+ <div class="testcase" id="transform-before">
+ <div class="absolutebox fail"></div>
+ <div class="target pass"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#transform-before', PROPERTY_TRANSFORM, PHASE_BEFORE);
+</script>
+
+<!-- Is current - in play-->
+<div class="container">
+ <div class="label">Transform - active phase</div>
+ <div class="testcase" id="transform-active">
+ <div class="absolutebox fail"></div>
+ <div class="target pass"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#transform-active', PROPERTY_TRANSFORM, PHASE_ACTIVE);
+</script>
+
+<!-- Is current - after phase playing backwards-->
+<div class="container">
+ <div class="label">Transform - after phase</div>
+ <div class="testcase" id="transform-after">
+ <div class="absolutebox fail"></div>
+ <div class="target pass"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#transform-after', PROPERTY_TRANSFORM, PHASE_AFTER);
+</script>
+
+<!-- BACKGROUND COLOR -->
+<!--
+ unlike opacity and transform, background color shouldn't create a stacking
+ context.
+-->
+
+<!-- Is current - before phase playing forwards -->
+<div class="container">
+ <div class="label">Background-color - before phase</div>
+ <div class="testcase" id="bgcolor-before">
+ <div class="absolutebox pass"></div>
+ <div class="target fail"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#bgcolor-before', PROPERTY_BGCOLOR, PHASE_BEFORE);
+</script>
+
+<!-- Is current - in play-->
+<div class="container">
+ <div class="label">Background-color - active phase</div>
+ <div class="testcase" id="bgcolor-active">
+ <div class="absolutebox pass"></div>
+ <div class="target fail"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#bgcolor-active', PROPERTY_BGCOLOR, PHASE_ACTIVE);
+</script>
+
+<!-- Is current - after phase playing backwards-->
+<div class="container">
+ <div class="label">Background-color - after phase</div>
+ <div class="testcase" id="bgcolor-after">
+ <div class="absolutebox pass"></div>
+ <div class="target fail"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#bgcolor-after', PROPERTY_BGCOLOR, PHASE_AFTER);
+</script>
+
+</html>
diff --git a/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-in-effect-ref.html b/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-in-effect-ref.html
new file mode 100644
index 00000000000..24160cb2677
--- /dev/null
+++ b/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-in-effect-ref.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html>
+<title>
+ In effect animations should effectively apply will-change (i.e. force a
+ stacking context) (ref)
+</title>
+<link rel="help" href="https://drafts.csswg.org/web-animations-1/#side-effects-section">
+<link rel="author" href="mailto:bokan@chromium.org">
+<style>
+ .testcase {
+ position: relative;
+ margin: 2px;
+ border: 1px solid black;
+ width: 250px;
+ height: 25px;
+ }
+ .label {
+ flex-grow: 1;
+ }
+ .container {
+ background-color: lightgrey;
+ margin: 4px;
+ display: flex;
+ width: 600px;
+ flex-direction: row;
+ justify-content: flex-end;
+ align-items: center;
+ }
+ .pass {
+ width: 100%;
+ height: 100%;
+ background-color: limegreen;
+ }
+</style>
+
+<!-- OPACITY -->
+
+<!-- Is current - before phase playing forwards -->
+<div class="container">
+ <div class="label">Opacity - before phase</div>
+ <div class="testcase" id="opacity-before">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- Is current - in play-->
+<div class="container">
+ <div class="label">Opacity - active phase</div>
+ <div class="testcase" id="opacity-active">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- Is current - after phase playing backwards-->
+<div class="container">
+ <div class="label">Opacity - after phase</div>
+ <div class="testcase" id="opacity-after">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- TRANSFORM -->
+
+<!-- Is current - before phase playing forwards -->
+<div class="container">
+ <div class="label">Transform - before phase</div>
+ <div class="testcase" id="transform-before">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- Is current - in play-->
+<div class="container">
+ <div class="label">Transform - active phase</div>
+ <div class="testcase" id="transform-active">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- Is current - after phase playing backwards-->
+<div class="container">
+ <div class="label">Transform - after phase</div>
+ <div class="testcase" id="transform-after">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- BACKGROUND COLOR -->
+<div class="container">
+ <div class="label">Background-color - before phase</div>
+ <div class="testcase" id="bgcolor-before">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- Is current - in play-->
+<div class="container">
+ <div class="label">Background-color - active phase</div>
+ <div class="testcase" id="bgcolor-active">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- Is current - after phase playing backwards-->
+<div class="container">
+ <div class="label">Background-color - after phase</div>
+ <div class="testcase" id="bgcolor-after">
+ <div class="pass"></div>
+ </div>
+</div>
diff --git a/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-in-effect.html b/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-in-effect.html
new file mode 100644
index 00000000000..ff53c98d793
--- /dev/null
+++ b/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-in-effect.html
@@ -0,0 +1,214 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title>
+ In effect animations should effectively apply will-change (i.e. force a
+ stacking context)
+</title>
+<link rel="help" href="https://drafts.csswg.org/web-animations-1/#side-effects-section">
+<link rel="author" href="mailto:bokan@chromium.org">
+<link rel="match" href="side-effects-of-animations-in-effect-ref.html">
+<script src="/common/reftest-wait.js"></script>
+<style>
+ .testcase {
+ position: relative;
+ margin: 2px;
+ border: 1px solid black;
+ width: 250px;
+ height: 25px;
+ }
+ .container {
+ background-color: lightgrey;
+ margin: 4px;
+ display: flex;
+ width: 600px;
+ flex-direction: row;
+ justify-content: flex-end;
+ align-items: center;
+ }
+ .label {
+ flex-grow: 1;
+ }
+ .target {
+ width: 100%;
+ height: 100%;
+ }
+ .absolutebox {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ }
+ .pass {
+ background-color: limegreen;
+ }
+ .fail {
+ background-color: red;
+ }
+</style>
+
+<script>
+const PROPERTY_OPACITY = 0;
+const PROPERTY_TRANSFORM = 1;
+const PROPERTY_BGCOLOR = 2;
+
+const PHASE_BEFORE = 10;
+const PHASE_ACTIVE = 11;
+const PHASE_AFTER = 12;
+
+// Setup an animation and put it in a state where it is in effect but, if
+// outside the active phase, not current.
+function setupAnimation(testcase, property, phase) {
+ const root = document.querySelector(testcase);
+ const effect_target = root.querySelector('.target');
+ let keyframe;
+ if (property == PROPERTY_OPACITY)
+ keyframe = { opacity: 1};
+ else if (property == PROPERTY_TRANSFORM)
+ keyframe = { transform: 'translateX(0px)' };
+ else if (property == PROPERTY_BGCOLOR)
+ keyframe = { backgroundColor: 'red' };
+ else
+ throw new Error('Unexpected property');
+
+ const options = { duration: 1000, delay: 1000, endDelay: 1000, fill: 'both' };
+
+ const animation = effect_target.animate(
+ [ keyframe, keyframe ], options);
+
+ if (phase == PHASE_BEFORE) {
+ animation.currentTime = 500;
+ animation.playbackRate = -1;
+ } else if (phase == PHASE_ACTIVE) {
+ animation.currentTime = 1500;
+ } else if (phase == PHASE_AFTER) {
+ animation.currentTime = 2500;
+ } else {
+ throw new Error('Unexpected phase');
+ }
+
+ animation.pause();
+}
+
+onload = requestAnimationFrame(() => requestAnimationFrame(takeScreenshot));
+</script>
+
+<!-- OPACITY -->
+
+<!-- Is current - before phase playing forwards -->
+<div class="container">
+ <div class="label">Opacity - before phase</div>
+ <div class="testcase" id="opacity-before">
+ <div class="absolutebox fail"></div>
+ <div class="target pass"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#opacity-before', PROPERTY_OPACITY, PHASE_BEFORE);
+</script>
+
+<!-- Is current - in play-->
+<div class="container">
+ <div class="label">Opacity - active phase</div>
+ <div class="testcase" id="opacity-active">
+ <div class="absolutebox fail"></div>
+ <div class="target pass"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#opacity-active', PROPERTY_OPACITY, PHASE_ACTIVE);
+</script>
+
+<!-- Is current - after phase playing backwards-->
+<div class="container">
+ <div class="label">Opacity - after phase</div>
+ <div class="testcase" id="opacity-after">
+ <div class="absolutebox fail"></div>
+ <div class="target pass"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#opacity-after', PROPERTY_OPACITY, PHASE_AFTER);
+</script>
+
+<!-- TRANSFORM -->
+
+<!-- Is current - before phase playing forwards -->
+<div class="container">
+ <div class="label">Transform - before phase</div>
+ <div class="testcase" id="transform-before">
+ <div class="absolutebox fail"></div>
+ <div class="target pass"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#transform-before', PROPERTY_TRANSFORM, PHASE_BEFORE);
+</script>
+
+<!-- Is current - in play-->
+<div class="container">
+ <div class="label">Transform - active phase</div>
+ <div class="testcase" id="transform-active">
+ <div class="absolutebox fail"></div>
+ <div class="target pass"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#transform-active', PROPERTY_TRANSFORM, PHASE_ACTIVE);
+</script>
+
+<!-- Is current - after phase playing backwards-->
+<div class="container">
+ <div class="label">Transform - after phase</div>
+ <div class="testcase" id="transform-after">
+ <div class="absolutebox fail"></div>
+ <div class="target pass"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#transform-after', PROPERTY_TRANSFORM, PHASE_AFTER);
+</script>
+
+<!-- BACKGROUND COLOR -->
+<!--
+ unlike opacity and transform, background color shouldn't create a stacking
+ context.
+-->
+
+<!-- Is current - before phase playing forwards -->
+<div class="container">
+ <div class="label">Background-color - before phase</div>
+ <div class="testcase" id="bgcolor-before">
+ <div class="absolutebox pass"></div>
+ <div class="target fail"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#bgcolor-before', PROPERTY_BGCOLOR, PHASE_BEFORE);
+</script>
+
+<!-- Is current - in play-->
+<div class="container">
+ <div class="label">Background-color - active phase</div>
+ <div class="testcase" id="bgcolor-active">
+ <div class="absolutebox pass"></div>
+ <div class="target fail"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#bgcolor-active', PROPERTY_BGCOLOR, PHASE_ACTIVE);
+</script>
+
+<!-- Is current - after phase playing backwards-->
+<div class="container">
+ <div class="label">Background-color - after phase</div>
+ <div class="testcase" id="bgcolor-after">
+ <div class="absolutebox pass"></div>
+ <div class="target fail"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#bgcolor-after', PROPERTY_BGCOLOR, PHASE_AFTER);
+</script>
+
+</html>
diff --git a/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-none-ref.html b/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-none-ref.html
new file mode 100644
index 00000000000..4d1ea997f4c
--- /dev/null
+++ b/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-none-ref.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<title>
+ Animations not in effect nor current shouldn't have side-effects (ref).
+</title>
+<link rel="help" href="https://drafts.csswg.org/web-animations-1/#side-effects-section">
+<link rel="author" href="mailto:bokan@chromium.org">
+<style>
+ .testcase {
+ position: relative;
+ margin: 2px;
+ border: 1px solid black;
+ width: 250px;
+ height: 25px;
+ }
+ .label {
+ flex-grow: 1;
+ }
+ .container {
+ background-color: lightgrey;
+ margin: 4px;
+ display: flex;
+ width: 600px;
+ flex-direction: row;
+ justify-content: flex-end;
+ align-items: center;
+ }
+ .pass {
+ width: 100%;
+ height: 100%;
+ background-color: limegreen;
+ }
+</style>
+
+<!-- before phase playing backwards -->
+<div class="container">
+ <div class="label">Before phase</div>
+ <div class="testcase" id="before">
+ <div class="pass"></div>
+ </div>
+</div>
+
+<!-- after phase playing forwards -->
+<div class="container">
+ <div class="label">After phase</div>
+ <div class="testcase" id="after">
+ <div class="pass"></div>
+ </div>
+</div>
diff --git a/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-none.html b/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-none.html
new file mode 100644
index 00000000000..b460ecc27fd
--- /dev/null
+++ b/tests/wpt/tests/web-animations/animation-model/side-effects-of-animations-none.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title>
+ Animations not in effect nor current shouldn't have side-effects.
+</title>
+<link rel="help" href="https://drafts.csswg.org/web-animations-1/#side-effects-section">
+<link rel="author" href="mailto:bokan@chromium.org">
+<link rel="match" href="side-effects-of-animations-none-ref.html">
+<script src="/common/reftest-wait.js"></script>
+<style>
+ .testcase {
+ position: relative;
+ margin: 2px;
+ border: 1px solid black;
+ width: 250px;
+ height: 25px;
+ }
+ .container {
+ background-color: lightgrey;
+ margin: 4px;
+ display: flex;
+ width: 600px;
+ flex-direction: row;
+ justify-content: flex-end;
+ align-items: center;
+ }
+ .label {
+ flex-grow: 1;
+ }
+ .target {
+ width: 100%;
+ height: 100%;
+ }
+ .absolutebox {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ }
+ .pass {
+ background-color: limegreen;
+ }
+ .fail {
+ background-color: red;
+ }
+</style>
+
+<script>
+const PHASE_BEFORE = 10;
+const PHASE_AFTER = 12;
+
+// Start an animation and put it into a state that's neither current nor in
+// effect.
+function setupAnimation(testcase, phase) {
+ const root = document.querySelector(testcase);
+ const effect_target = root.querySelector('.target');
+ const keyframe = { opacity: 1};
+ const options = { duration: 1000, delay: 1000, endDelay: 1000 };
+
+ const animation = effect_target.animate(
+ [ keyframe, keyframe ], options);
+
+ if (phase == PHASE_BEFORE) {
+ animation.currentTime = 500;
+ animation.playbackRate = -1;
+ } else if (phase == PHASE_AFTER) {
+ animation.currentTime = 2500;
+ } else {
+ throw new Error('Unexpected phase');
+ }
+
+ animation.pause();
+}
+
+onload = requestAnimationFrame(() => requestAnimationFrame(takeScreenshot));
+</script>
+
+<!-- before phase playing backwards -->
+<div class="container">
+ <div class="label">Before phase</div>
+ <div class="testcase" id="before">
+ <div class="absolutebox pass"></div>
+ <div class="target fail"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#before', PHASE_BEFORE);
+</script>
+
+<!-- after phase playing forwards-->
+<div class="container">
+ <div class="label">After phase</div>
+ <div class="testcase" id="after">
+ <div class="absolutebox pass"></div>
+ <div class="target fail"></div>
+ </div>
+</div>
+<script>
+ setupAnimation('#after', PHASE_AFTER);
+</script>
+
+</html>