aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorServo WPT Sync <32481905+servo-wpt-sync@users.noreply.github.com>2024-11-03 02:33:12 +0100
committerGitHub <noreply@github.com>2024-11-03 01:33:12 +0000
commitb22c0771be89e1962a2e39a43988278229fc0496 (patch)
tree29cb12d6c9061bf27ff63e64f11302e5dcf7a541
parent0759dde11b8cbf8f06dee35314c60c845bd4062d (diff)
downloadservo-b22c0771be89e1962a2e39a43988278229fc0496.tar.gz
servo-b22c0771be89e1962a2e39a43988278229fc0496.zip
Update web-platform-tests to revision b'd2f2efe271ae2fa661c52ed2fe8564e21ad4036f' (#34115)
Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>
-rw-r--r--tests/wpt/meta-legacy-layout/FileAPI/BlobURL/cross-partition-navigation.tentative.https.html.ini10
-rw-r--r--tests/wpt/meta-legacy-layout/WebCryptoAPI/algorithm-discards-context.https.window.js.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.https.any.js.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/WebCryptoAPI/digest/digest.https.any.js.ini482
-rw-r--r--tests/wpt/meta-legacy-layout/WebCryptoAPI/idlharness.https.any.js.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/floats/crashtests/firefox-bug-1904419.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-parsing.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-plus-lighter-basic.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-plus-lighter.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-video.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-cascade/all-prop-revert-layer-noop.html.ini16
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-cascade/all-prop-revert-noop.html.ini16
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-cascade/scope-specificity.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-color-hdr/computed.html.ini51
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-color-hdr/inheritance.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-color-hdr/interpolation.html.ini192
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-color-hdr/parsing.html.ini30
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/crashtests/iframe-init-crash.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/registered-color-style-queries.html.ini1
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-computed.html.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-pseudo.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-pseudo.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-pseudo.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/style-query-document-element.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-conditional/js/supports-at-rule.tentative.html.ini120
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-content/element-replacement-on-replaced-element.tentative.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-display/display-contents-unusual-html-elements-none.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-fonts/generic-family-keywords-001.html.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/absolute-positioning-definite-sizes-001.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/absolute-positioning-grid-container-containing-block-001.html.ini30
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/absolute-positioning-grid-container-parent-001.html.ini27
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/descendant-static-position-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/descendant-static-position-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/descendant-static-position-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/descendant-static-position-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/empty-grid-001.html.ini27
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-last-baseline-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-last-baseline-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-last-baseline-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-last-baseline-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-last-baseline-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-last-baseline-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-last-baseline-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-last-baseline-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-paint-positioned-children-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-children-writing-modes-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-item-dynamic-change-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-item-dynamic-change-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-item-dynamic-change-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-item-dynamic-change-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-001.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-002.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-003.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-004.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-005.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-006.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-007.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-background-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-background-rtl-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-content-alignment-001.html.ini144
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-content-alignment-rtl-001.html.ini162
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-gaps-001.html.ini123
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-gaps-002-rtl.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-gaps-002.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-gaps-rtl-001.html.ini132
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-implicit-grid-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-implicit-grid-line-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-padding-001.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-unknown-named-grid-line-001.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-within-grid-implicit-track-001.html.ini48
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-sizing-positioned-items-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-001.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-002.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-003.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-004.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-005.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-006.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-007.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-008.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-009.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-010.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-011.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-012.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-013.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-014.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-015.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-016.html.ini297
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-009.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-010.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-011.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-012.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-013.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-014.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-015.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-016.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-017.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-001.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-002.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-003.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-004.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-005.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-006.html.ini252
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-007.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-008.html.ini252
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-009.html.ini252
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-010.html.ini300
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-011.html.ini252
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-012.html.ini288
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-013.html.ini288
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-014.html.ini288
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-015.html.ini288
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-016.html.ini297
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-017.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-009.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-010.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-011.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-012.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-013.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-014.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-015.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-016.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-017.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-018.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-022.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-023.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-024.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-025.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-negative-indices-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-negative-indices-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-should-not-create-implicit-tracks-001.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-should-not-take-up-space-001.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-sizing-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-001.html.ini15
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-002.html.ini15
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-003.html.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-004.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-fieldset-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-fieldset-002.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-fieldset-003.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-flex-001.html.ini144
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-flex-002.html.ini72
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-flex-003.html.ini48
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-flex-004.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-grid-001.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-grid-002.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-grid-003.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-line-clamp-001.tentative.html.ini72
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-line-clamp-002.tentative.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-line-clamp-003.tentative.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-multicol-001.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-multicol-002.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-multicol-003.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-overflow-001.html.ini30
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-overflow-002.html.ini15
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-overflow-003.html.ini15
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-table-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-table-002.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-table-003.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-vertical.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline.html.ini27
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html.ini (renamed from tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.worker.js.ini)56
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html.ini (renamed from tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.worker.js.ini)56
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-distribution.html.ini (renamed from tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.worker.js.ini)56
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-vertical-lr.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-vertical-rl.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content.html.ini39
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-margin-border-padding-vertical-lr.html.ini54
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-margin-border-padding-vertical-rl.html.ini54
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-margin-border-padding.html.ini54
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-overflow.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-stretch-with-orthogonal-flows.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-stretch.html.ini48
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-stretching-replaced-items.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align.html.ini48
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-001.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-002.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-003.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-004.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-005.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-006.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-007.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-008.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-009.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-010.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-011.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-012.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-013.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-014.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-017.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-018.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-019.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-020.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-021.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-022.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-023.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-024.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-025.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-026.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-027.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-028.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-029.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-030.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-031.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-032.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-035.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-036.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-001.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-002.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-003.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-004.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-005.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-006.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-007.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-008.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-004.html.ini54
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-align-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-justify-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-001.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-002.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-003.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-004.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-005.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-006.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-007.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-002.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-003.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-004.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-005.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-006.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-007.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-008.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-009.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-010.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-011.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-012.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-013.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-014.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-015.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-016.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-017.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-sticky-positioned-items-001.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-sticky-positioned-items-002.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-002.html.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-003.html.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-004.html.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-005.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-container-auto-margins-scrollbars-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-container-baseline-001.html.ini21
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-and-self-alignment-001.html.ini72
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-and-self-alignment-002.html.ini96
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-auto-sized-tracks-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-overflow-001.html.ini42
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-overflow-002.html.ini42
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-second-pass-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-second-pass-002.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-with-abspos-001.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-with-span-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-with-span-vertical-lr-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-with-span-vertical-rl-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-009.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-010.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-011.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-012.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-013.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-014.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-015.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-016.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-017.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-018.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-019.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-020.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-021.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-022.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-023.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-024.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-025.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-009.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-010.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-011.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-012.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-013.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-014.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-015.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-016.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-017.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-018.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-019.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-020.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-021.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-022.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-023.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-024.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-fit-content-tracks-dont-stretch-001.html.ini108
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-009.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-010.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-011.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-012.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-013.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-014.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-015.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-016.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-and-alignment.html.ini (renamed from tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.worker.js.ini)55
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-001.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-002.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-003.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-004.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-005.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-006.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-007.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-baseline.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows-vertical-lr.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows-vertical-rl.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows.html.ini21
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-justify-self-001.html.ini60
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-justify-self-002.html.ini60
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-stretch-1.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-stretch-2.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-stretch-3.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-stretch-4.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-auto-margins-alignment-vertical-lr.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-auto-margins-alignment-vertical-rl.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-auto-margins-alignment.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-content-baseline-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-content-baseline-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-content-baseline-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-content-baseline-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-mixed-baseline-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-mixed-baseline-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-mixed-baseline-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-mixed-baseline-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-1.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-2.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-3.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-justify-baseline-002.html.ini15
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-justify-baseline-003.html.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-justify-baseline-004.html.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-justify-baseline-005.html.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-place-content-001.html.ini30
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-002.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-003.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-004.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-005.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-006.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-007.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-008.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-009.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-010.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-011.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-012.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-013.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-014.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-015.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-016.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-017.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-sticky-positioned-items-001.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-sticky-positioned-items-002.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-005.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-002.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-003.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-004.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-005.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-006.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-007.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-010.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-002.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-003.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-004.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-005.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-006.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-007.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-008.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-009.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-010.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-011.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-012.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-013.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-014.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-015.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-016.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-001.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-002.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-003.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-004.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-005.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-006.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-007.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-008.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-009.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-010.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-011.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-012.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-013.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-014.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-015.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-016.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-input-range.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-001.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-002.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-003.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-004.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-005.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-006.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-007.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-008.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-009.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-010.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-011.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-012.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-013.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-014.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-015.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-016.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-001.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-002.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-003.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-004.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-005.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-006.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-007.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-008.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-009.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-010.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-011.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-012.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-013.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-014.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-015.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-016.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment.html.ini162
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-002.html.ini72
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-003.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-003.tentative.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-009.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-002-b.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-009.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-010.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-011.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-012.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-no-interpolation.html.ini1008
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-composition.html.ini285
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-interpolation.html.ini2052
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-neutral-keyframe-001.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-neutral-keyframe-002.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-neutral-keyframe-003.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-neutral-keyframe-004.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-composition.html.ini285
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-interpolation.html.ini2052
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-neutral-keyframe-001.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-neutral-keyframe-002.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-neutral-keyframe-003.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-neutral-keyframe-004.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/child-border-box-and-max-content-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/child-border-box-and-max-content-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/dynamic-grid-with-auto-fill.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/dynamic-grid-within-flexbox.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/firefox-bug-1881495.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-container-baseline-synthesized-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-container-baseline-synthesized-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-container-baseline-synthesized-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-container-baseline-synthesized-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/explicit-grid-size-001.html.ini33
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-distribution-001.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-resolution-columns-001.html.ini45
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-resolution-columns-002.html.ini33
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-resolution-rows-001.html.ini (renamed from tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.worker.js.ini)54
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-resolution-rows-002.html.ini63
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-factor-sum-less-than-1-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-item-grid-container-percentage-rows-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/fr-unit-with-percentage.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/fr-unit.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-explicit-rows-001.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-fill-columns-001.html.ini99
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-fill-rows-001.html.ini105
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-fit-columns-001.html.ini105
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-fit-rows-001.html.ini99
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-dynamic-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-dynamic-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-intrinsic-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-max-size-001.tentative.html.ini60
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-max-size-002.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-max-size-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-size-001.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-size-002.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-size-003.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-size-004.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-minmax.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-positioned-container-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-change-auto-repeat-tracks.html.ini48
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-change-fit-content-argument-001.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-change-intrinsic-size-with-auto-repeat-tracks-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-auto-repeat-001.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-flexible-lengths-001.html.ini186
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-grid-template-areas-001.html.ini135
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-grid-template-columns-rows-001.html.ini132
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-named-grid-lines-001.html.ini240
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-repeat-001.html.ini120
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.html.ini114
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.tentative.html.ini228
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-layout-auto-tracks.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-layout-basic.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-layout-repeat-notation.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-limits-001.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-minimum-contribution-with-percentages.html.ini48
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-001.html.ini312
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-002.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-repeat-max-width-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-shorthand-001.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-flexible-lengths-001.html.ini186
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-grid-template-areas-001.html.ini135
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-grid-template-columns-rows-001.html.ini132
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-named-grid-lines-001.html.ini240
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-named-grid-lines-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-named-grid-lines-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-repeat-001.html.ini120
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-repeat-002.html.ini21
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-template-columns-rows-changes-001.html.ini63
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-template-columns-rows-resolved-values-001.html.ini114
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-template-columns-rows-resolved-values-001.tentative.html.ini228
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-important.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-in-table-cell-with-img.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/anonymous-grid-item-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/explicitly-sized-grid-item-as-table.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-auto-margin-and-replaced-item-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-automatic-minimum-intrinsic-aspect-ratio-001.html.ini42
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-img-item-percent-max-height-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-items-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-items-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-items-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-items-inline-blocks-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-containing-block-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-containing-block-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-containing-block-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-containing-block-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-inline-contribution-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-inline-contribution-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-inline-contribution-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-min-auto-size-001.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-overflow-auto-max-height-percentage.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-percentage-sizes-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-percentage-sizes-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-percentage-sizes-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-contribution-negative-margins.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-inline-blocks-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-height-orthogonal-001.html.ini138
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-001.html.ini132
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-002.html.ini132
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-001.html.ini138
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-002.html.ini132
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-001.html.ini132
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-002.html.ini132
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-001.html.ini132
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-002.html.ini132
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-002.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-011.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-012.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-013.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-014.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-vertical-lr-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-vertical-lr-002.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-vertical-rl-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-vertical-rl-002.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-002.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-011.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-015.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-002.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-002.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-relative-offsets-001.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-relative-offsets-002.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-sizing-alignment-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-layout-grid-in-grid.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-layout-z-order-a.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-layout-z-order-b.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-009.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-010.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-011.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-012.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-013.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-014.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-015.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-016.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-017.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-018.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-019.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-020.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-021.html.ini216
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-022.html.ini135
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-023.html.ini180
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-024.html.ini135
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-025.html.ini180
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-size-with-orthogonal-child-dynamic.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/percentage-margin-dynamic.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/percentage-size-replaced-subitems-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/percentage-size-subitems-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/percentage-size-subitems-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-010.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-011.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-012.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-013.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-items/whitespace-in-grid-item-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-layout-properties.html.ini420
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/compute-intrinsic-widths-scrollbar-001.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/display-grid.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/display-inline-grid.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-box-sizing-001.html.ini (renamed from tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.worker.js.ini)56
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-button-001.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-margin-border-padding-scrollbar-001.html.ini48
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-scrollbar-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-scrollbars-sizing-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-sizing-constraints-001.html.ini45
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-display-grid-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-display-inline-grid-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-float-002.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-floats-no-intrude-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-floats-no-intrude-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-gutters-and-flex-content-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-gutters-and-tracks-001.html.ini51
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-gutters-as-percentage-001.html.ini48
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-inline-floats-no-intrude-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-inline-margins-no-collapse-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-item-accepts-first-letter-001.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-item-accepts-first-line-001.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-item-hit-test.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-margins-no-collapse-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-margins-no-collapse-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-min-max-height-001.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-size-shrink-to-fit-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-support-display-001.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-tracks-fractional-fr.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-tracks-stretched-with-different-flex-factors-sum.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-with-aspect-ratio-uses-content-box-height-for-track-sizing.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-with-dynamic-img.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-with-orthogonal-child-within-flexbox.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-within-flexbox-definite-change.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/grid-within-flexbox-indefinite.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/inheritance.html.ini60
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-001.html.ini144
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-002.html.ini144
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-003.html.ini72
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-004.html.ini72
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-005.html.ini72
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-006.html.ini72
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-and-intrinsic-sizes-001.html.ini21
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-and-intrinsic-sizes-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-sizing-columns-min-max-width-001.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-sizing-rows-indefinite-height.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-sizing-rows-min-max-height-001.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-tracks-with-fractional-size.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-automatic-minimum-for-auto-columns-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-container-percentage-001.html.ini54
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-container-percentage-002.html.ini69
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-002.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-003.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-004.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-find-fr-size-gutters-001.html.ini48
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-find-fr-size-gutters-002.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-find-fr-size-restart-algorithm.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-fit-content-percentage.html.ini60
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-001.html.ini90
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-002.html.ini15
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-003.html.ini306
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-intrinsic-size-dynamic-block-size.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-intrinsic-size-with-orthogonal-items.html.ini21
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-intrinsic-track-sizes-001.html.ini93
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-item-margin-auto-columns-rows-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-item-margin-auto-columns-rows-vertical-lr-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-item-margin-auto-columns-rows-vertical-rl-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-layout-free-space-unit.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-stretch-respects-min-size-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-template-flexible-rerun-track-sizing.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/baseline/masonry-grid-item-content-baseline-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/fragmentation/masonry-fragmentation-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/fragmentation/masonry-fragmentation-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/grid-placement/masonry-grid-placement-named-lines-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/grid-placement/masonry-grid-placement-named-lines-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/masonry-grid-template-columns-computed-withcontent.html.ini84
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/order/masonry-order-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/order/masonry-order-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/parsing/masonry-parsing.html.ini120
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/subgrid/masonry-subgrid-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-area-computed.html.ini90
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-area-shorthand.html.ini159
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-area-valid.html.ini171
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-columns-computed.html.ini75
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-columns-valid.html.ini90
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-flow-computed.html.ini21
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-flow-valid.html.ini21
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-rows-computed.html.ini75
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-rows-valid.html.ini90
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-column-shortest-serialization.html.ini48
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-column-shorthand.html.ini144
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-columns-rows-get-set-multiple.html.ini120
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-content-sized-columns-resolution.html.ini126
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-row-shortest-serialization.html.ini45
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-row-shorthand.html.ini144
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-shorthand-serialization.html.ini363
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-shorthand-valid.html.ini147
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-shorthand.html.ini189
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-areas-computed.html.ini27
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-areas-one-cell.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-areas-valid.html.ini27
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-computed-implicit-track.html.ini72
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-computed-nogrid.html.ini96
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-computed-withcontent.html.ini90
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-computed.html.ini72
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-valid.html.ini102
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-important.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-node-not-connected.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-repeat-auto-computed-withcontent-001.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-repeat-auto-computed-withcontent-002.html.ini51
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-computed-implicit-track.html.ini72
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-computed-nogrid.html.ini72
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-computed-withcontent.html.ini81
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-computed.html.ini72
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-valid.html.ini102
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-shorthand-areas-valid.html.ini15
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-shorthand-valid.html.ini120
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-shorthand.html.ini72
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-auto-flow-sparse-001.html.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-auto-placement-implicit-tracks-001.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-container-change-grid-tracks-recompute-child-positions-001.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-container-change-named-grid-recompute-child-positions-001.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-layout-grid-span.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-layout-lines-shorthands.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-layout-lines.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-layout-placement-shorthands.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-items-spanning-multiple-rows-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-items-spanning-multiple-rows-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-009.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/relative-grandchild.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/stretch-grid-item-text-input-overflow.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/abs-pos-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/align-self-baseline-with-subgrid-mbp.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/alignment-in-subgridded-axes-001.html.ini48
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/auto-track-sizing-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/baseline-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/contribution-size-flex-tracks-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/dynamic-min-content-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/dynamic-min-content-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/dynamic-min-content-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-009.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-010.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-011.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-012.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-smaller-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-template-computed-nogrid.html.ini150
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-template-valid.html.ini114
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/independent-formatting-context.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/independent-tracks-from-parent-grid.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/item-percentage-height-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-013.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/overflow-hidden-does-not-prohibit-subgrid.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/parent-repeat-auto-fit-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/percentage-track-sizing.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/placement-invalidation-001.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/repeat-auto-fill-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/repeat-auto-fill-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/repeat-auto-fill-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/scrollbar-gutter-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/scrollbar-gutter-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-009.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-005.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-006.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-007.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-008.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-009.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-010.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-011.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-012.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-button.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-item-block-size-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-no-items-on-edges-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-stretch.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/writing-directions-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/subgrid/writing-directions-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/table-grid-item-005.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-grid/whitespace-reattach.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-overflow/overflow-video.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/position-absolute-replaced-minmax.html.ini39
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-pseudo/parsing/the-select-arrow-pseudo-element.tentative.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/replaced-element-035.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/replaced-element-043.html.ini288
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/intrinsic-size-fallback-video.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/stretch/auto-margins-1.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/stretch/indefinite-4.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/text-shadow-emoji-transparent.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-breaking/segment-break-transformation-ignorable-1.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/attr-IACVT.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/attr-all-types.html.ini90
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/attr-px-invalid-cast.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/attr-px-valid.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/signs-abs-computed.html.ini63
-rw-r--r--tests/wpt/meta-legacy-layout/css/cssom-view/DOMRectList.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/css/geometry/DOMRectList.html.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/css/geometry/idlharness.any.js.ini24
-rw-r--r--tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/custom-elements/ElementInternals-accessibility.tentative.html.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/custom-elements/reactions/customized-builtins/HTMLMediaElement.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/dom/abort/AbortSignal.any.js.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/dom/abort/event.any.js.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/dom/abort/timeout-shadowrealm.any.js.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/dom/abort/timeout.any.js.ini20
-rw-r--r--tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/focus-within.html.ini15
-rw-r--r--tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-font-face.https.sub.tentative.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/fetch/orb/tentative/known-mime-type.sub.any.js.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/fetch/orb/tentative/nosniff.sub.any.js.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/fetch/orb/tentative/status.sub.any.js.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/fetch/range/general.window.js.ini1
-rw-r--r--tests/wpt/meta-legacy-layout/fetch/security/dangling-markup/media.html.ini1
-rw-r--r--tests/wpt/meta-legacy-layout/fullscreen/crashtests/chrome-1312699.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/fullscreen/crashtests/content-visibility-crash.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/fullscreen/rendering/backdrop-iframe.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/fullscreen/rendering/backdrop-inherit.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/fullscreen/rendering/backdrop-object.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/fullscreen/rendering/fullscreen-root-fills-page.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-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/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.w.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements-xhtml.xhtml.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/dom/elements/the-innertext-and-outertext-properties/getter.html.ini1
-rw-r--r--tests/wpt/meta-legacy-layout/html/rendering/bidi-rendering/unicode-bidi-ua-rules.html.ini1
-rw-r--r--tests/wpt/meta-legacy-layout/html/rendering/dimension-attributes.html.ini114
-rw-r--r--tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/picture-aspect-ratio.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html.ini13
-rw-r--r--tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-intrinsic-width-height.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-controls-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-controls-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-without-controls.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content/audio-controls-intrinsic-size.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/audio_loop_base.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/audio_loop_seek_to_eos.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/audio_volume_check.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_canplay.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_canplay_noautoplay.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_canplaythrough.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_canplaythrough_noautoplay.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadeddata.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadeddata_noautoplay.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadedmetadata.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadedmetadata_noautoplay.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadstart.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadstart_noautoplay.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_order_canplay_canplaythrough.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_order_canplay_playing.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_order_loadedmetadata_loadeddata.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_order_loadstart_progress.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_pause.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_pause_noautoplay.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_play.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_play_noautoplay.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_playing.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_playing_noautoplay.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_progress.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_progress_noautoplay.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_timeupdate.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_timeupdate_noautoplay.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-currentSrc.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini1
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/networkState_during_loadstart.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/networkState_during_progress.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/networkState_initial.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/paused_false_during_play.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/paused_true_during_pause.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/preload_reflects_none_autoplay.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_canplay.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_canplaythrough.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_loadeddata.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_loadedmetadata.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_playing.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_initial.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/src_reflects_attribute_not_source_elements.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/user-interface/muted.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-audio-element/audio-play-in-inactive-document-crash.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-audio-element/audio_001.htm.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-audio-element/audio_002.htm.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-embed-element/embed-ignored-in-media-element.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-object-element/object-ignored-in-media-element.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/grouping-content/the-ol-element/grouping-ol.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-active-document.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-audio-video-crash.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/popovers/popover-active-document.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/popovers/popover-minimum-role.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/html/syntax/parsing/DOMContentLoaded-defer.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/resource-timing/initiator-type/audio.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/resource-timing/internal-resources-not-counted.html.ini2
-rw-r--r--tests/wpt/meta/FileAPI/BlobURL/cross-partition-navigation.tentative.https.html.ini10
-rw-r--r--tests/wpt/meta/MANIFEST.json2393
-rw-r--r--tests/wpt/meta/WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.https.any.js.ini4
-rw-r--r--tests/wpt/meta/css/compositing/mix-blend-mode/mix-blend-mode-video-sibling.html.ini2
-rw-r--r--tests/wpt/meta/css/compositing/mix-blend-mode/mix-blend-mode-video.html.ini2
-rw-r--r--tests/wpt/meta/css/css-cascade/scope-specificity.html.ini3
-rw-r--r--tests/wpt/meta/css/css-color-hdr/computed.html.ini51
-rw-r--r--tests/wpt/meta/css/css-color-hdr/inheritance.html.ini6
-rw-r--r--tests/wpt/meta/css/css-color-hdr/interpolation.html.ini192
-rw-r--r--tests/wpt/meta/css/css-color-hdr/parsing.html.ini30
-rw-r--r--tests/wpt/meta/css/css-conditional/container-queries/registered-color-style-queries.html.ini1
-rw-r--r--tests/wpt/meta/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-computed.html.ini9
-rw-r--r--tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-pseudo.html.ini2
-rw-r--r--tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-pseudo.html.ini2
-rw-r--r--tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-pseudo.html.ini2
-rw-r--r--tests/wpt/meta/css/css-conditional/container-queries/style-query-document-element.html.ini3
-rw-r--r--tests/wpt/meta/css/css-conditional/js/supports-at-rule.tentative.html.ini120
-rw-r--r--tests/wpt/meta/css/css-grid/layout-algorithm/grid-fit-content-percentage.html.ini60
-rw-r--r--tests/wpt/meta/css/css-pseudo/parsing/the-select-arrow-pseudo-element.tentative.html.ini18
-rw-r--r--tests/wpt/meta/css/css-sizing/stretch/auto-margins-1.html.ini3
-rw-r--r--tests/wpt/meta/css/css-sizing/stretch/indefinite-4.html.ini3
-rw-r--r--tests/wpt/meta/css/css-text/line-breaking/segment-break-transformation-ignorable-1.html.ini2
-rw-r--r--tests/wpt/meta/css/css-values/attr-IACVT.html.ini3
-rw-r--r--tests/wpt/meta/css/css-values/attr-all-types.html.ini90
-rw-r--r--tests/wpt/meta/css/css-values/attr-px-invalid-cast.html.ini2
-rw-r--r--tests/wpt/meta/css/css-values/attr-px-valid.html.ini2
-rw-r--r--tests/wpt/meta/css/css-values/signs-abs-computed.html.ini63
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes.html.ini2
-rw-r--r--tests/wpt/meta/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes.html.ini2
-rw-r--r--tests/wpt/meta/custom-elements/ElementInternals-accessibility.tentative.html.ini9
-rw-r--r--tests/wpt/meta/dom/abort/AbortSignal.any.js.ini4
-rw-r--r--tests/wpt/meta/dom/abort/event.any.js.ini4
-rw-r--r--tests/wpt/meta/dom/abort/timeout-shadowrealm.any.js.ini2
-rw-r--r--tests/wpt/meta/dom/abort/timeout.any.js.ini20
-rw-r--r--tests/wpt/meta/dom/nodes/moveBefore/tentative/focus-within.html.ini15
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/css-font-face.https.sub.tentative.html.ini3
-rw-r--r--tests/wpt/meta/fullscreen/crashtests/chrome-1312699.html.ini2
-rw-r--r--tests/wpt/meta/fullscreen/crashtests/content-visibility-crash.html.ini2
-rw-r--r--tests/wpt/meta/fullscreen/rendering/backdrop-iframe.html.ini2
-rw-r--r--tests/wpt/meta/fullscreen/rendering/backdrop-inherit.html.ini2
-rw-r--r--tests/wpt/meta/fullscreen/rendering/backdrop-object.html.ini2
-rw-r--r--tests/wpt/meta/fullscreen/rendering/fullscreen-root-fills-page.html.ini2
-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/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html.ini2
-rw-r--r--tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.worker.js.ini78
-rw-r--r--tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.worker.js.ini78
-rw-r--r--tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.worker.js.ini78
-rw-r--r--tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.worker.js.ini78
-rw-r--r--tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.worker.js.ini78
-rw-r--r--tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.worker.js.ini78
-rw-r--r--tests/wpt/meta/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html.ini2
-rw-r--r--tests/wpt/meta/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.w.html.ini2
-rw-r--r--tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini2
-rw-r--r--tests/wpt/meta/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini (renamed from tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini)0
-rw-r--r--tests/wpt/meta/html/semantics/interactive-elements/the-dialog-element/dialog-active-document.html.ini3
-rw-r--r--tests/wpt/meta/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html.ini3
-rw-r--r--tests/wpt/meta/html/semantics/popovers/popover-active-document.html.ini3
-rw-r--r--tests/wpt/meta/html/semantics/popovers/popover-minimum-role.html.ini6
-rw-r--r--tests/wpt/meta/webmessaging/with-ports/017.html.ini4
-rw-r--r--tests/wpt/meta/webmessaging/without-ports/018.html.ini4
-rw-r--r--tests/wpt/tests/.github/workflows/check-workflow-run.yml2
-rw-r--r--tests/wpt/tests/.github/workflows/documentation.yml3
-rw-r--r--tests/wpt/tests/.github/workflows/epochs.yml3
-rw-r--r--tests/wpt/tests/.github/workflows/interfaces.yml3
-rw-r--r--tests/wpt/tests/.github/workflows/manifest.yml3
-rw-r--r--tests/wpt/tests/.github/workflows/regen_certs.yml5
-rw-r--r--tests/wpt/tests/.gitignore3
-rw-r--r--tests/wpt/tests/FileAPI/BlobURL/cross-partition-navigation.tentative.https.html142
-rw-r--r--tests/wpt/tests/IndexedDB/get-databases.any.js47
-rw-r--r--tests/wpt/tests/WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.https.any.js9
-rw-r--r--tests/wpt/tests/WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.js49
-rw-r--r--tests/wpt/tests/WebCryptoAPI/util/helpers.js38
-rw-r--r--tests/wpt/tests/avif/animated-avif-timeout-ref.html2
-rw-r--r--tests/wpt/tests/avif/animated-avif-timeout.html2
-rw-r--r--tests/wpt/tests/content-security-policy/navigation/to-javascript-url-script-src.html60
-rw-r--r--tests/wpt/tests/css/css-cascade/scope-specificity.html6
-rw-r--r--tests/wpt/tests/css/css-color-hdr/computed.html40
-rw-r--r--tests/wpt/tests/css/css-color-hdr/inheritance.html16
-rw-r--r--tests/wpt/tests/css/css-color-hdr/interpolation.html65
-rw-r--r--tests/wpt/tests/css/css-color-hdr/parsing.html36
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/animation-container-size.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/animation-container-type-dynamic.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/animation-nested-animation.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/animation-nested-transition.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/aspect-ratio-feature-evaluation.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/at-container-parsing.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/at-container-serialization.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/at-container-style-parsing.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/at-container-style-serialization.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/auto-scrollbars.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/backdrop-invalidation.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/calc-evaluation.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/canvas-as-container-005.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/canvas-as-container-006.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/column-spanner-in-container.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/conditional-container-status.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-computed.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-for-shadow-dom.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-inheritance.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-inner-at-rules.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-inside-multicol-with-table.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-longhand-animation-type.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-name-computed.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-name-invalidation.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-name-parsing.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-name-tree-scoped.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-nested.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-parsing.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-selection-unknown-features.html5
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-selection.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-size-invalidation-after-load.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-size-invalidation.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-size-nested-invalidation.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-size-shadow-invalidation.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-type-computed.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-type-containment.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-type-invalidation.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-type-layout-invalidation.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-type-parsing.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-units-animation.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-units-basic.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-units-computational-independence.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-units-content-box.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-units-in-at-container-dynamic.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-units-in-at-container-fallback.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-units-in-at-container.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-units-ineligible-container.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-units-invalidation.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-units-media-queries.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-units-selection.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-units-shadow.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-units-small-viewport-fallback.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-units-svglength.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/container-units-typed-om.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/counters-flex-circular.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/custom-property-style-queries.html10
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/custom-property-style-query-change.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/deep-nested-inline-size-containers.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/display-contents-dynamic-style-queries.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/display-contents.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/display-none.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/font-relative-calc-dynamic.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/font-relative-units-dynamic.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/font-relative-units.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/fragmented-container-001.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/get-animations.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/grid-container.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/grid-item-container.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/iframe-in-container-invalidation.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/iframe-invalidation.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/ineligible-containment.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/inheritance-from-container.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/inline-size-and-min-width.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/inline-size-containment-vertical-rl.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/inline-size-containment.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/layout-dependent-focus.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/multicol-container-001.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/nested-query-containers.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/nested-size-style-container-invalidation.html5
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/never-match-container.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/orthogonal-wm-container-query.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/percentage-padding-orthogonal.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-001.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-003.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-004.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-005.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-006.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-007.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-008.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-013.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/query-content-box.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/query-evaluation-style.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/query-evaluation.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/reattach-container-with-dirty-child.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/registered-color-style-queries.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-overflowing-parsing.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-overflowing-serialization.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-snapped-parsing.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-snapped-serialization.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-stuck-parsing.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-stuck-serialization.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-computed.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-parsing.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-initially-overflowing.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-initially-snapped.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-initially-stuck.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-change.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-container-type-change.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-layout-change.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-pseudo.html60
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-wm.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-change.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-container-type-change.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-layout-change.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-none.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-pseudo.html61
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-snap-changing.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-wm.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-container-type-change.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-layout-change.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-pseudo.html57
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-writing-direction.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-target-query-change.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/sibling-layout-dependency.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/size-container-no-principal-box.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/size-container-writing-mode-change.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/size-feature-evaluation.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/style-change-in-container.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/style-container-for-shadow-dom.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/style-container-invalidation-inheritance.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/style-not-sharing-float.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/style-query-document-element.html3
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/style-query-no-cycle.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/style-query-with-unknown-width.html5
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/support/cq-testcommon.js24
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/svg-foreignobject-child-container.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/svg-root-size-container.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/top-layer-dialog-container.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/top-layer-dialog.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/top-layer-nested-dialog.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/transition-scrollbars.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/transition-style-change-event-002.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/transition-style-change-event.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/unsupported-axis.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/viewport-units-dynamic.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/viewport-units.html2
-rw-r--r--tests/wpt/tests/css/css-conditional/js/supports-at-rule.tentative.html80
-rw-r--r--tests/wpt/tests/css/css-grid/layout-algorithm/grid-fit-content-percentage.html52
-rw-r--r--tests/wpt/tests/css/css-inline/text-box-trim/border-padding-001.html12
-rw-r--r--tests/wpt/tests/css/css-inline/text-box-trim/border-padding-002.html14
-rw-r--r--tests/wpt/tests/css/css-inline/text-box-trim/border-padding-003.html15
-rw-r--r--tests/wpt/tests/css/css-inline/text-box-trim/border-padding-004.html15
-rw-r--r--tests/wpt/tests/css/css-inline/text-box-trim/out-of-flow-001.html11
-rw-r--r--tests/wpt/tests/css/css-inline/text-box-trim/out-of-flow-002.html13
-rw-r--r--tests/wpt/tests/css/css-lists/container-list-items-crash.html21
-rw-r--r--tests/wpt/tests/css/css-lists/style-containment-counter-crash.html12
-rw-r--r--tests/wpt/tests/css/css-logical/WEB_FEATURES.yml3
-rw-r--r--tests/wpt/tests/css/css-nesting/top-level-parent-pseudo-specificity.html19
-rw-r--r--tests/wpt/tests/css/css-properties-values-api/WEB_FEATURES.yml3
-rw-r--r--tests/wpt/tests/css/css-pseudo/parsing/the-select-arrow-pseudo-element.tentative.html32
-rw-r--r--tests/wpt/tests/css/css-scoping/shadow-reassign-dynamic-005-crash.html15
-rw-r--r--tests/wpt/tests/css/css-scoping/shadow-reassign-dynamic-006-ref.html6
-rw-r--r--tests/wpt/tests/css/css-scoping/shadow-reassign-dynamic-006.html20
-rw-r--r--tests/wpt/tests/css/css-scroll-snap/unrelated-gesture-scroll-during-snap.html131
-rw-r--r--tests/wpt/tests/css/css-sizing/replaced-fractional-height-from-aspect-ratio.html4
-rw-r--r--tests/wpt/tests/css/css-sizing/stretch/auto-margins-1.html21
-rw-r--r--tests/wpt/tests/css/css-sizing/stretch/auto-margins-2.html56
-rw-r--r--tests/wpt/tests/css/css-sizing/stretch/indefinite-1.html20
-rw-r--r--tests/wpt/tests/css/css-sizing/stretch/indefinite-2.html15
-rw-r--r--tests/wpt/tests/css/css-sizing/stretch/indefinite-3.html16
-rw-r--r--tests/wpt/tests/css/css-sizing/stretch/indefinite-4.html26
-rw-r--r--tests/wpt/tests/css/css-text-decor/text-shadow/text-shadow-emoji-transparent-ref.html24
-rw-r--r--tests/wpt/tests/css/css-text-decor/text-shadow/text-shadow-emoji-transparent.html17
-rw-r--r--tests/wpt/tests/css/css-text/line-breaking/segment-break-transformation-ignorable-1-ref.html12
-rw-r--r--tests/wpt/tests/css/css-text/line-breaking/segment-break-transformation-ignorable-1.html24
-rw-r--r--tests/wpt/tests/css/css-transitions/properties-value-001.html2
-rw-r--r--tests/wpt/tests/css/css-transitions/properties-value-002.html2
-rw-r--r--tests/wpt/tests/css/css-transitions/properties-value-003.html2
-rw-r--r--tests/wpt/tests/css/css-transitions/properties-value-implicit-001.html2
-rw-r--r--tests/wpt/tests/css/css-transitions/properties-value-inherit-001.html2
-rw-r--r--tests/wpt/tests/css/css-transitions/properties-value-inherit-002.html2
-rw-r--r--tests/wpt/tests/css/css-transitions/properties-value-inherit-003.html4
-rw-r--r--tests/wpt/tests/css/css-transitions/pseudo-elements-001.html2
-rw-r--r--tests/wpt/tests/css/css-transitions/support/generalParallelTest.js57
-rw-r--r--tests/wpt/tests/css/css-transitions/support/properties.js2
-rw-r--r--tests/wpt/tests/css/css-transitions/support/runParallelAsyncHarness.js28
-rw-r--r--tests/wpt/tests/css/css-values/attr-IACVT.html28
-rw-r--r--tests/wpt/tests/css/css-values/attr-all-types.html199
-rw-r--r--tests/wpt/tests/css/css-values/attr-color-invalid-cast.html2
-rw-r--r--tests/wpt/tests/css/css-values/attr-color-invalid-fallback.html43
-rw-r--r--tests/wpt/tests/css/css-values/attr-color-valid.html2
-rw-r--r--tests/wpt/tests/css/css-values/attr-container-style-query.html2
-rw-r--r--tests/wpt/tests/css/css-values/attr-crash.html2
-rw-r--r--tests/wpt/tests/css/css-values/attr-in-max.html2
-rw-r--r--tests/wpt/tests/css/css-values/attr-in-slotted-ref.html13
-rw-r--r--tests/wpt/tests/css/css-values/attr-in-slotted.html16
-rw-r--r--tests/wpt/tests/css/css-values/attr-invalid-type-001.html43
-rw-r--r--tests/wpt/tests/css/css-values/attr-invalid-type-002.html46
-rw-r--r--tests/wpt/tests/css/css-values/attr-invalidation.html2
-rw-r--r--tests/wpt/tests/css/css-values/attr-length-invalid-cast.html2
-rw-r--r--tests/wpt/tests/css/css-values/attr-length-invalid-fallback.html43
-rw-r--r--tests/wpt/tests/css/css-values/attr-length-valid-zero-nofallback.html2
-rw-r--r--tests/wpt/tests/css/css-values/attr-length-valid-zero.html2
-rw-r--r--tests/wpt/tests/css/css-values/attr-length-valid.html2
-rw-r--r--tests/wpt/tests/css/css-values/attr-notype-fallback-ref.html2
-rw-r--r--tests/wpt/tests/css/css-values/attr-pseudo-elem-invalidation.html2
-rw-r--r--tests/wpt/tests/css/css-values/attr-px-invalid-cast.html43
-rw-r--r--tests/wpt/tests/css/css-values/attr-px-invalid-fallback.html43
-rw-r--r--tests/wpt/tests/css/css-values/attr-px-valid.html43
-rw-r--r--tests/wpt/tests/css/css-values/signs-abs-computed.html31
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes-ref.html8
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes.html33
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes-ref.html8
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes.html33
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-is-always-matches-negated-first-of-type-when-ancestor-changes-ref.html9
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-is-always-matches-negated-first-of-type-when-ancestor-changes.html30
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-is-always-matches-negated-last-of-type-when-ancestor-changes-ref.html9
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-is-always-matches-negated-last-of-type-when-ancestor-changes.html30
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes-ref.html8
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes.html33
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes-ref.html8
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes.html33
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes-ref.html8
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes.html34
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes-ref.html8
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes.html34
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-never-matches-negated-first-of-type-when-ancestor-changes-ref.html2
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-never-matches-negated-first-of-type-when-ancestor-changes.html30
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-never-matches-negated-last-of-type-when-ancestor-changes-ref.html2
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/negated-never-matches-negated-last-of-type-when-ancestor-changes.html30
-rw-r--r--tests/wpt/tests/custom-elements/ElementInternals-accessibility.html6
-rw-r--r--tests/wpt/tests/custom-elements/ElementInternals-accessibility.tentative.html41
-rw-r--r--tests/wpt/tests/custom-elements/reactions/AriaMixin-string-attributes.html20
-rw-r--r--tests/wpt/tests/custom-elements/reactions/AriaMixin-string-attributes.tentative.html27
-rw-r--r--tests/wpt/tests/docs/running-tests/webkitgtk_minibrowser.md14
-rw-r--r--tests/wpt/tests/dom/abort/AbortSignal.any.js30
-rw-r--r--tests/wpt/tests/dom/abort/event.any.js2
-rw-r--r--tests/wpt/tests/dom/abort/timeout-shadowrealm.any.js5
-rw-r--r--tests/wpt/tests/dom/abort/timeout.any.js29
-rw-r--r--tests/wpt/tests/dom/nodes/ParentNode-append.html10
-rw-r--r--tests/wpt/tests/dom/nodes/moveBefore/tentative/focus-within.html81
-rw-r--r--tests/wpt/tests/dom/nodes/moveBefore/tentative/selection-preserve.html169
-rw-r--r--tests/wpt/tests/editing/plaintext-only/insertHTML.html9
-rw-r--r--tests/wpt/tests/editing/plaintext-only/insertLineBreak.html44
-rw-r--r--tests/wpt/tests/editing/plaintext-only/insertParagraph.html17
-rw-r--r--tests/wpt/tests/editing/plaintext-only/insertText.html14
-rw-r--r--tests/wpt/tests/editing/plaintext-only/paste.https.html6
-rw-r--r--tests/wpt/tests/element-timing/cross-origin-element.sub.html7
-rw-r--r--tests/wpt/tests/element-timing/image-TAO.sub.html5
-rw-r--r--tests/wpt/tests/element-timing/multiple-redirects-TAO.html62
-rw-r--r--tests/wpt/tests/element-timing/redirects-tao-star.html53
-rw-r--r--tests/wpt/tests/fenced-frame/navigate-ancestor-nested-fenced-frame.https.html8
-rw-r--r--tests/wpt/tests/fenced-frame/navigate-ancestor-nested-iframe.https.html7
-rw-r--r--tests/wpt/tests/fenced-frame/navigate-ancestor-top-level-fenced-frame.https.html7
-rw-r--r--tests/wpt/tests/fenced-frame/resources/navigate-ancestor-destination.https.html17
-rw-r--r--tests/wpt/tests/fenced-frame/resources/navigate-ancestor-destination.https.html.headers1
-rw-r--r--tests/wpt/tests/fenced-frame/resources/navigate-ancestor-from-nested-fenced-frame.https.html39
-rw-r--r--tests/wpt/tests/fenced-frame/resources/navigate-ancestor-from-nested-fenced-frame.https.html.headers1
-rw-r--r--tests/wpt/tests/fenced-frame/resources/navigate-ancestor-from-nested-iframe.https.html38
-rw-r--r--tests/wpt/tests/fenced-frame/resources/navigate-ancestor-from-nested-iframe.https.html.headers1
-rw-r--r--tests/wpt/tests/fenced-frame/resources/navigate-ancestor-helper.https.html29
-rw-r--r--tests/wpt/tests/fenced-frame/resources/navigate-ancestor-helper.https.html.headers1
-rw-r--r--tests/wpt/tests/fenced-frame/resources/navigate-ancestor-helper.js88
-rw-r--r--tests/wpt/tests/fenced-frame/resources/navigate-ancestor-test-runner.https.html83
-rw-r--r--tests/wpt/tests/fledge/tentative/additional-bids.https.window.js256
-rw-r--r--tests/wpt/tests/fledge/tentative/resources/additional-bids.py19
-rw-r--r--tests/wpt/tests/fledge/tentative/resources/fledge-util.sub.js59
-rw-r--r--tests/wpt/tests/fledge/tentative/server-response.https.window.js27
-rw-r--r--tests/wpt/tests/focus/support/activeelement-after-calling-window-focus-middle.sub.html2
-rw-r--r--tests/wpt/tests/focus/support/activeelement-after-calling-window-focus-outer-different.sub.html2
-rw-r--r--tests/wpt/tests/focus/support/activeelement-after-calling-window-focus-outer-same.sub.html2
-rw-r--r--tests/wpt/tests/focus/support/activeelement-after-focusing-different-site-iframe-outer-contentwindow.sub.html2
-rw-r--r--tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-middle.sub.html2
-rw-r--r--tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-outer.sub.html2
-rw-r--r--tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-same-as-top-intermediate-frame-middle.sub.html2
-rw-r--r--tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-same-as-top-intermediate-frame-outer.html2
-rw-r--r--tests/wpt/tests/focus/support/iframe-focus-with-different-site-intermediate-frame-outer.sub.html2
-rw-r--r--tests/wpt/tests/fullscreen/crashtests/chrome-1312699.html21
-rw-r--r--tests/wpt/tests/fullscreen/crashtests/content-visibility-crash.html31
-rw-r--r--tests/wpt/tests/fullscreen/rendering/backdrop-green-ref.html2
-rw-r--r--tests/wpt/tests/fullscreen/rendering/backdrop-iframe.html22
-rw-r--r--tests/wpt/tests/fullscreen/rendering/backdrop-inherit.html27
-rw-r--r--tests/wpt/tests/fullscreen/rendering/backdrop-object-ref.html14
-rw-r--r--tests/wpt/tests/fullscreen/rendering/backdrop-object.html23
-rw-r--r--tests/wpt/tests/fullscreen/rendering/fullscreen-root-fills-page-ref.html18
-rw-r--r--tests/wpt/tests/fullscreen/rendering/fullscreen-root-fills-page.html47
-rw-r--r--tests/wpt/tests/generic-sensor/generic-sensor-iframe-tests.sub.js2
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.drawImage.html158
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.drawImage.pngbin2291 -> 2460 bytes
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.fillRect.html158
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.fillRect.pngbin2291 -> 2460 bytes
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.pattern.html158
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.pattern.pngbin2291 -> 2460 bytes
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.drawImage.html210
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.drawImage.pngbin4085 -> 4699 bytes
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.fillRect.html210
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.fillRect.pngbin4085 -> 4699 bytes
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.pattern.html210
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.pattern.pngbin4085 -> 4699 bytes
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.html106
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.pngbin1572 -> 1651 bytes
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.html106
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.pngbin1572 -> 1651 bytes
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.pattern.html106
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.pattern.pngbin1572 -> 1651 bytes
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.drawImage.html158
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.drawImage.pngbin2314 -> 2592 bytes
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.fillRect.html158
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.fillRect.pngbin2314 -> 2592 bytes
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.pattern.html158
-rw-r--r--tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.pattern.pngbin2314 -> 2592 bytes
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative-expected.html99
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html120
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.html158
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.pngbin2291 -> 2460 bytes
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.w.html158
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.worker.js685
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.html158
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.pngbin2291 -> 2460 bytes
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.w.html158
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.worker.js607
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.html158
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.pngbin2291 -> 2460 bytes
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.w.html158
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.worker.js711
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.html210
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.pngbin4085 -> 4699 bytes
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.w.html210
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.worker.js737
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.html210
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.pngbin4085 -> 4699 bytes
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.w.html210
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.worker.js659
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.html210
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.pngbin4085 -> 4699 bytes
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.w.html210
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.worker.js763
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.html106
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.pngbin1572 -> 1651 bytes
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.w.html106
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.worker.js685
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.html106
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.pngbin1572 -> 1651 bytes
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.w.html106
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.worker.js607
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.html106
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.pngbin1572 -> 1651 bytes
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.w.html106
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.worker.js711
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.html158
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.pngbin2314 -> 2592 bytes
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.w.html158
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.worker.js737
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.html158
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.pngbin2314 -> 2592 bytes
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.w.html158
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.worker.js659
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.html158
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.pngbin2314 -> 2592 bytes
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.w.html158
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.worker.js763
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative-expected.html99
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html136
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.w.html195
-rw-r--r--tests/wpt/tests/html/canvas/tools/yaml-new/compositing.yaml17
-rw-r--r--tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml58
-rw-r--r--tests/wpt/tests/html/dom/aria-attribute-reflection.html33
-rw-r--r--tests/wpt/tests/html/dom/aria-attribute-reflection.tentative.html60
-rw-r--r--tests/wpt/tests/html/dom/elements/the-innertext-and-outertext-properties/innertext-whitespace-pre-line.html8
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/nested-select-crash.html29
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/selectedoption-in-option-crash.html19
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/selectedoption.tentative.html15
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/selectedoptionelement-attr.tentative.html7
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/switch-picker-appearance.tentative.html179
-rw-r--r--tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-active-document.html16
-rw-r--r--tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html7
-rw-r--r--tests/wpt/tests/html/semantics/popovers/popover-active-document.html17
-rw-r--r--tests/wpt/tests/html/semantics/popovers/popover-minimum-role.html34
-rw-r--r--tests/wpt/tests/infrastructure/assumptions/ahem-ref.html320
-rw-r--r--tests/wpt/tests/infrastructure/assumptions/ahem.html2
-rw-r--r--tests/wpt/tests/infrastructure/assumptions/tools/ahem-generate-table.py3
-rw-r--r--tests/wpt/tests/jpegxl/3x3_jpeg_recompression-ref.html2
-rw-r--r--tests/wpt/tests/jpegxl/3x3_jpeg_recompression.html4
-rw-r--r--tests/wpt/tests/jpegxl/3x3_srgb_lossless-ref.html2
-rw-r--r--tests/wpt/tests/jpegxl/3x3_srgb_lossless.html4
-rw-r--r--tests/wpt/tests/jpegxl/3x3_srgb_lossy-ref.html2
-rw-r--r--tests/wpt/tests/jpegxl/3x3_srgb_lossy.html4
-rw-r--r--tests/wpt/tests/jpegxl/3x3a_srgb_lossless-ref.html2
-rw-r--r--tests/wpt/tests/jpegxl/3x3a_srgb_lossless.html4
-rw-r--r--tests/wpt/tests/jpegxl/3x3a_srgb_lossy-ref.html2
-rw-r--r--tests/wpt/tests/jpegxl/3x3a_srgb_lossy.html4
-rw-r--r--tests/wpt/tests/largest-contentful-paint/resources/largest-contentful-paint-helpers.js23
-rw-r--r--tests/wpt/tests/lint.ignore6
-rw-r--r--tests/wpt/tests/media-capabilities/decodingInfo-webrtc.any.js (renamed from tests/wpt/tests/media-capabilities/decodingInfo.webrtc.html)58
-rw-r--r--tests/wpt/tests/media-capabilities/encodingInfo-webrtc.any.js (renamed from tests/wpt/tests/media-capabilities/encodingInfo.webrtc.html)59
-rw-r--r--tests/wpt/tests/navigation-api/focus-reset/resources/helpers.mjs1
-rw-r--r--tests/wpt/tests/paint-timing/with-first-paint/paint-visited.html2
-rw-r--r--tests/wpt/tests/permissions-policy/experimental-features/focus-without-user-activation-default-permissions-policy.tentative.https.sub.html24
-rw-r--r--tests/wpt/tests/permissions-policy/experimental-features/resources/permissions-policy-focus-without-user-activation.html11
-rw-r--r--tests/wpt/tests/pointerevents/pointerevent_sequence_at_implicit_release_on_click.html14
-rw-r--r--tests/wpt/tests/pointerevents/pointerevent_styles.css2
-rw-r--r--tests/wpt/tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html17
-rw-r--r--tests/wpt/tests/pointerevents/pointerevent_touch-action-modified_touch.html20
-rw-r--r--tests/wpt/tests/push-api/supported-encodings.https.any.js26
-rw-r--r--tests/wpt/tests/resize-observer/resize-loop-cancel-error-notification-console-manual.tentative.html17
-rw-r--r--tests/wpt/tests/resize-observer/resize-loop-error-notification-console-manual.tentative.html15
-rw-r--r--tests/wpt/tests/resources/check-layout.js245
-rw-r--r--tests/wpt/tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html4
-rw-r--r--tests/wpt/tests/shared-storage-selecturl-limit/resources/select-url-saved-query-multi-frame-inner.https.sub.html98
-rw-r--r--tests/wpt/tests/shared-storage-selecturl-limit/select-url-saved-query-async.tentative.https.sub.html72
-rw-r--r--tests/wpt/tests/shared-storage-selecturl-limit/select-url-saved-query-different-operation.tentative.https.sub.html50
-rw-r--r--tests/wpt/tests/shared-storage-selecturl-limit/select-url-saved-query-multi-frame.tentative.https.sub.html49
-rw-r--r--tests/wpt/tests/shared-storage-selecturl-limit/select-url-saved-query.tentative.https.sub.html62
-rw-r--r--tests/wpt/tests/shared-storage/resources/erroneous-function-module.js24
-rw-r--r--tests/wpt/tests/shared-storage/resources/frame2.html14
-rw-r--r--tests/wpt/tests/shared-storage/resources/frame2.html.headers1
-rw-r--r--tests/wpt/tests/shared-storage/resources/frame3.html14
-rw-r--r--tests/wpt/tests/shared-storage/resources/frame3.html.headers1
-rw-r--r--tests/wpt/tests/shared-storage/resources/frame4.html14
-rw-r--r--tests/wpt/tests/shared-storage/resources/frame4.html.headers1
-rw-r--r--tests/wpt/tests/shared-storage/resources/select-url-saved-query-inner.https.sub.html76
-rw-r--r--tests/wpt/tests/shared-storage/resources/simple-module.js23
-rw-r--r--tests/wpt/tests/shared-storage/resources/util.js22
-rw-r--r--tests/wpt/tests/shared-storage/select-url-saved-query-cross-origin-multi-query.tentative.https.sub.html67
-rw-r--r--tests/wpt/tests/shared-storage/select-url-saved-query-key-tuples.tentative.https.sub.html87
-rw-r--r--tests/wpt/tests/shared-storage/select-url-saved-query-rejection.tentative.https.sub.html62
-rw-r--r--tests/wpt/tests/shared-storage/select-url-saved-query-same-origin-multi-query.tentative.https.sub.html66
-rw-r--r--tests/wpt/tests/shared-storage/select-url-saved-query-validate-index-after-retrieving.tentative.https.sub.html55
-rw-r--r--tests/wpt/tests/shared-storage/select-url-saved-query-validate-index-before-storing.tentative.https.sub.html54
-rw-r--r--tests/wpt/tests/svg/text/scripted/getcharnumatposition-slr.tentative.html38
-rw-r--r--tests/wpt/tests/svg/text/scripted/getcharnumatposition.html15
-rw-r--r--tests/wpt/tests/svg/text/scripted/getstartpositionofchar.html75
-rwxr-xr-xtests/wpt/tests/tools/ci/run_tc.py15
-rw-r--r--tests/wpt/tests/tools/serve/serve.py1
-rw-r--r--tests/wpt/tests/tools/webdriver/webdriver/error.py13
-rw-r--r--tests/wpt/tests/tools/wpt/browser.py68
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox.py5
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/executors/base.py11
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorchrome.py6
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py44
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/navigation.py99
-rw-r--r--tests/wpt/tests/webdriver/tests/classic/fullscreen_window/fullscreen.py7
-rw-r--r--tests/wpt/tests/webdriver/tests/classic/maximize_window/from_minimized_window.py26
-rw-r--r--tests/wpt/tests/webdriver/tests/classic/maximize_window/maximize.py42
-rw-r--r--tests/wpt/tests/webdriver/tests/classic/minimize_window/minimize.py12
-rw-r--r--tests/wpt/tests/webdriver/tests/classic/new_session/create_alwaysMatch.py7
-rw-r--r--tests/wpt/tests/webdriver/tests/classic/new_session/create_firstMatch.py7
-rw-r--r--tests/wpt/tests/webdriver/tests/classic/set_window_rect/set.py29
-rw-r--r--tests/wpt/tests/webdriver/tests/support/helpers.py43
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/byob_readtensor.https.any.js17
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/byob_readtensor.https.any.js.headers2
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/dequantizeLinear.https.any.js37
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/tensor.https.any.js178
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/tensor.https.any.js.headers2
-rw-r--r--tests/wpt/tests/webnn/resources/utils.js12
-rw-r--r--tests/wpt/tests/webnn/resources/utils_validation.js8
-rw-r--r--tests/wpt/tests/webnn/validation_tests/argMinMax.https.any.js8
-rw-r--r--tests/wpt/tests/webnn/validation_tests/batchNormalization.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/clamp.https.any.js8
-rw-r--r--tests/wpt/tests/webnn/validation_tests/concat.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/constant.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/conv2d.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/convTranspose2d.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/cumulativeSum.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/dequantizeLinear.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/elementwise-binary.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/elu.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/expand.https.any.js8
-rw-r--r--tests/wpt/tests/webnn/validation_tests/gather.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/gatherElements.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/gatherND.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/gemm.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/gru.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/gruCell.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/hardSigmoid.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/input.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/instanceNormalization.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/layerNormalization.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/leakyRelu.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/linear.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/lstm.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/lstmCell.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/matmul.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/pad.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/pooling-and-reduction-keep-dims.https.any.js8
-rw-r--r--tests/wpt/tests/webnn/validation_tests/pooling.https.any.js8
-rw-r--r--tests/wpt/tests/webnn/validation_tests/prelu.https.any.js8
-rw-r--r--tests/wpt/tests/webnn/validation_tests/quantizeLinear.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/reduction.https.any.js8
-rw-r--r--tests/wpt/tests/webnn/validation_tests/resample2d.https.any.js8
-rw-r--r--tests/wpt/tests/webnn/validation_tests/reshape.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/scatterElements.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/scatterND.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/slice.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/softmax.https.any.js8
-rw-r--r--tests/wpt/tests/webnn/validation_tests/split.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/tile.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/transpose.https.any.js8
-rw-r--r--tests/wpt/tests/webnn/validation_tests/where.https.any.js4
1737 files changed, 45428 insertions, 16160 deletions
diff --git a/tests/wpt/meta-legacy-layout/FileAPI/BlobURL/cross-partition-navigation.tentative.https.html.ini b/tests/wpt/meta-legacy-layout/FileAPI/BlobURL/cross-partition-navigation.tentative.https.html.ini
index 4b71ba5969b..348eebd4eed 100644
--- a/tests/wpt/meta-legacy-layout/FileAPI/BlobURL/cross-partition-navigation.tentative.https.html.ini
+++ b/tests/wpt/meta-legacy-layout/FileAPI/BlobURL/cross-partition-navigation.tentative.https.html.ini
@@ -1,3 +1,13 @@
[cross-partition-navigation.tentative.https.html]
+ expected: TIMEOUT
[Blob URL navigation should enforce noopener for a cross-top-level-site navigation]
expected: FAIL
+
+ [Blob URL window.open should enforce noopener for a cross-top-level-site navigation]
+ expected: FAIL
+
+ [Blob URL link click should enforce noopener for a cross-top-level-site navigation]
+ expected: FAIL
+
+ [Blob URL area element click should enforce noopener for a cross-top-level-site navigation]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/WebCryptoAPI/algorithm-discards-context.https.window.js.ini b/tests/wpt/meta-legacy-layout/WebCryptoAPI/algorithm-discards-context.https.window.js.ini
index dbc41bb26ca..d144503a7d2 100644
--- a/tests/wpt/meta-legacy-layout/WebCryptoAPI/algorithm-discards-context.https.window.js.ini
+++ b/tests/wpt/meta-legacy-layout/WebCryptoAPI/algorithm-discards-context.https.window.js.ini
@@ -6,9 +6,6 @@
[Context is discarded in decrypt]
expected: TIMEOUT
- [Context is discarded in digest]
- expected: TIMEOUT
-
[Context is discarded in sign]
expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.https.any.js.ini b/tests/wpt/meta-legacy-layout/WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.https.any.js.ini
new file mode 100644
index 00000000000..717ecd6b3f1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.https.any.js.ini
@@ -0,0 +1,4 @@
+[derive_key_and_encrypt.https.any.worker.html]
+
+[derive_key_and_encrypt.https.any.html]
+ expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/WebCryptoAPI/digest/digest.https.any.js.ini b/tests/wpt/meta-legacy-layout/WebCryptoAPI/digest/digest.https.any.js.ini
deleted file mode 100644
index 15e0258b42b..00000000000
--- a/tests/wpt/meta-legacy-layout/WebCryptoAPI/digest/digest.https.any.js.ini
+++ /dev/null
@@ -1,482 +0,0 @@
-[digest.https.any.worker.html]
- [SHA-1 with empty source data]
- expected: FAIL
-
- [sha-1 with empty source data]
- expected: FAIL
-
- [Sha-1 with empty source data]
- expected: FAIL
-
- [SHA-1 with empty source data and altered buffer after call]
- expected: FAIL
-
- [SHA-256 with empty source data]
- expected: FAIL
-
- [sha-256 with empty source data]
- expected: FAIL
-
- [Sha-256 with empty source data]
- expected: FAIL
-
- [SHA-256 with empty source data and altered buffer after call]
- expected: FAIL
-
- [SHA-384 with empty source data]
- expected: FAIL
-
- [sha-384 with empty source data]
- expected: FAIL
-
- [Sha-384 with empty source data]
- expected: FAIL
-
- [SHA-384 with empty source data and altered buffer after call]
- expected: FAIL
-
- [SHA-512 with empty source data]
- expected: FAIL
-
- [sha-512 with empty source data]
- expected: FAIL
-
- [Sha-512 with empty source data]
- expected: FAIL
-
- [SHA-512 with empty source data and altered buffer after call]
- expected: FAIL
-
- [SHA-1 with short source data]
- expected: FAIL
-
- [sha-1 with short source data]
- expected: FAIL
-
- [Sha-1 with short source data]
- expected: FAIL
-
- [SHA-1 with short source data and altered buffer after call]
- expected: FAIL
-
- [SHA-256 with short source data]
- expected: FAIL
-
- [sha-256 with short source data]
- expected: FAIL
-
- [Sha-256 with short source data]
- expected: FAIL
-
- [SHA-256 with short source data and altered buffer after call]
- expected: FAIL
-
- [SHA-384 with short source data]
- expected: FAIL
-
- [sha-384 with short source data]
- expected: FAIL
-
- [Sha-384 with short source data]
- expected: FAIL
-
- [SHA-384 with short source data and altered buffer after call]
- expected: FAIL
-
- [SHA-512 with short source data]
- expected: FAIL
-
- [sha-512 with short source data]
- expected: FAIL
-
- [Sha-512 with short source data]
- expected: FAIL
-
- [SHA-512 with short source data and altered buffer after call]
- expected: FAIL
-
- [SHA-1 with medium source data]
- expected: FAIL
-
- [sha-1 with medium source data]
- expected: FAIL
-
- [Sha-1 with medium source data]
- expected: FAIL
-
- [SHA-1 with medium source data and altered buffer after call]
- expected: FAIL
-
- [SHA-256 with medium source data]
- expected: FAIL
-
- [sha-256 with medium source data]
- expected: FAIL
-
- [Sha-256 with medium source data]
- expected: FAIL
-
- [SHA-256 with medium source data and altered buffer after call]
- expected: FAIL
-
- [SHA-384 with medium source data]
- expected: FAIL
-
- [sha-384 with medium source data]
- expected: FAIL
-
- [Sha-384 with medium source data]
- expected: FAIL
-
- [SHA-384 with medium source data and altered buffer after call]
- expected: FAIL
-
- [SHA-512 with medium source data]
- expected: FAIL
-
- [sha-512 with medium source data]
- expected: FAIL
-
- [Sha-512 with medium source data]
- expected: FAIL
-
- [SHA-512 with medium source data and altered buffer after call]
- expected: FAIL
-
- [SHA-1 with long source data]
- expected: FAIL
-
- [sha-1 with long source data]
- expected: FAIL
-
- [Sha-1 with long source data]
- expected: FAIL
-
- [SHA-1 with long source data and altered buffer after call]
- expected: FAIL
-
- [SHA-256 with long source data]
- expected: FAIL
-
- [sha-256 with long source data]
- expected: FAIL
-
- [Sha-256 with long source data]
- expected: FAIL
-
- [SHA-256 with long source data and altered buffer after call]
- expected: FAIL
-
- [SHA-384 with long source data]
- expected: FAIL
-
- [sha-384 with long source data]
- expected: FAIL
-
- [Sha-384 with long source data]
- expected: FAIL
-
- [SHA-384 with long source data and altered buffer after call]
- expected: FAIL
-
- [SHA-512 with long source data]
- expected: FAIL
-
- [sha-512 with long source data]
- expected: FAIL
-
- [Sha-512 with long source data]
- expected: FAIL
-
- [SHA-512 with long source data and altered buffer after call]
- expected: FAIL
-
- [AES-GCM with empty]
- expected: FAIL
-
- [RSA-OAEP with empty]
- expected: FAIL
-
- [PBKDF2 with empty]
- expected: FAIL
-
- [AES-KW with empty]
- expected: FAIL
-
- [AES-GCM with short]
- expected: FAIL
-
- [RSA-OAEP with short]
- expected: FAIL
-
- [PBKDF2 with short]
- expected: FAIL
-
- [AES-KW with short]
- expected: FAIL
-
- [AES-GCM with medium]
- expected: FAIL
-
- [RSA-OAEP with medium]
- expected: FAIL
-
- [PBKDF2 with medium]
- expected: FAIL
-
- [AES-KW with medium]
- expected: FAIL
-
- [AES-GCM with long]
- expected: FAIL
-
- [RSA-OAEP with long]
- expected: FAIL
-
- [PBKDF2 with long]
- expected: FAIL
-
- [AES-KW with long]
- expected: FAIL
-
-
-[digest.https.any.html]
- [SHA-1 with empty source data]
- expected: FAIL
-
- [sha-1 with empty source data]
- expected: FAIL
-
- [Sha-1 with empty source data]
- expected: FAIL
-
- [SHA-1 with empty source data and altered buffer after call]
- expected: FAIL
-
- [SHA-256 with empty source data]
- expected: FAIL
-
- [sha-256 with empty source data]
- expected: FAIL
-
- [Sha-256 with empty source data]
- expected: FAIL
-
- [SHA-256 with empty source data and altered buffer after call]
- expected: FAIL
-
- [SHA-384 with empty source data]
- expected: FAIL
-
- [sha-384 with empty source data]
- expected: FAIL
-
- [Sha-384 with empty source data]
- expected: FAIL
-
- [SHA-384 with empty source data and altered buffer after call]
- expected: FAIL
-
- [SHA-512 with empty source data]
- expected: FAIL
-
- [sha-512 with empty source data]
- expected: FAIL
-
- [Sha-512 with empty source data]
- expected: FAIL
-
- [SHA-512 with empty source data and altered buffer after call]
- expected: FAIL
-
- [SHA-1 with short source data]
- expected: FAIL
-
- [sha-1 with short source data]
- expected: FAIL
-
- [Sha-1 with short source data]
- expected: FAIL
-
- [SHA-1 with short source data and altered buffer after call]
- expected: FAIL
-
- [SHA-256 with short source data]
- expected: FAIL
-
- [sha-256 with short source data]
- expected: FAIL
-
- [Sha-256 with short source data]
- expected: FAIL
-
- [SHA-256 with short source data and altered buffer after call]
- expected: FAIL
-
- [SHA-384 with short source data]
- expected: FAIL
-
- [sha-384 with short source data]
- expected: FAIL
-
- [Sha-384 with short source data]
- expected: FAIL
-
- [SHA-384 with short source data and altered buffer after call]
- expected: FAIL
-
- [SHA-512 with short source data]
- expected: FAIL
-
- [sha-512 with short source data]
- expected: FAIL
-
- [Sha-512 with short source data]
- expected: FAIL
-
- [SHA-512 with short source data and altered buffer after call]
- expected: FAIL
-
- [SHA-1 with medium source data]
- expected: FAIL
-
- [sha-1 with medium source data]
- expected: FAIL
-
- [Sha-1 with medium source data]
- expected: FAIL
-
- [SHA-1 with medium source data and altered buffer after call]
- expected: FAIL
-
- [SHA-256 with medium source data]
- expected: FAIL
-
- [sha-256 with medium source data]
- expected: FAIL
-
- [Sha-256 with medium source data]
- expected: FAIL
-
- [SHA-256 with medium source data and altered buffer after call]
- expected: FAIL
-
- [SHA-384 with medium source data]
- expected: FAIL
-
- [sha-384 with medium source data]
- expected: FAIL
-
- [Sha-384 with medium source data]
- expected: FAIL
-
- [SHA-384 with medium source data and altered buffer after call]
- expected: FAIL
-
- [SHA-512 with medium source data]
- expected: FAIL
-
- [sha-512 with medium source data]
- expected: FAIL
-
- [Sha-512 with medium source data]
- expected: FAIL
-
- [SHA-512 with medium source data and altered buffer after call]
- expected: FAIL
-
- [SHA-1 with long source data]
- expected: FAIL
-
- [sha-1 with long source data]
- expected: FAIL
-
- [Sha-1 with long source data]
- expected: FAIL
-
- [SHA-1 with long source data and altered buffer after call]
- expected: FAIL
-
- [SHA-256 with long source data]
- expected: FAIL
-
- [sha-256 with long source data]
- expected: FAIL
-
- [Sha-256 with long source data]
- expected: FAIL
-
- [SHA-256 with long source data and altered buffer after call]
- expected: FAIL
-
- [SHA-384 with long source data]
- expected: FAIL
-
- [sha-384 with long source data]
- expected: FAIL
-
- [Sha-384 with long source data]
- expected: FAIL
-
- [SHA-384 with long source data and altered buffer after call]
- expected: FAIL
-
- [SHA-512 with long source data]
- expected: FAIL
-
- [sha-512 with long source data]
- expected: FAIL
-
- [Sha-512 with long source data]
- expected: FAIL
-
- [SHA-512 with long source data and altered buffer after call]
- expected: FAIL
-
- [AES-GCM with empty]
- expected: FAIL
-
- [RSA-OAEP with empty]
- expected: FAIL
-
- [PBKDF2 with empty]
- expected: FAIL
-
- [AES-KW with empty]
- expected: FAIL
-
- [AES-GCM with short]
- expected: FAIL
-
- [RSA-OAEP with short]
- expected: FAIL
-
- [PBKDF2 with short]
- expected: FAIL
-
- [AES-KW with short]
- expected: FAIL
-
- [AES-GCM with medium]
- expected: FAIL
-
- [RSA-OAEP with medium]
- expected: FAIL
-
- [PBKDF2 with medium]
- expected: FAIL
-
- [AES-KW with medium]
- expected: FAIL
-
- [AES-GCM with long]
- expected: FAIL
-
- [RSA-OAEP with long]
- expected: FAIL
-
- [PBKDF2 with long]
- expected: FAIL
-
- [AES-KW with long]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/WebCryptoAPI/idlharness.https.any.js.ini b/tests/wpt/meta-legacy-layout/WebCryptoAPI/idlharness.https.any.js.ini
index 4ffa9278cd5..2fbf1bd34cc 100644
--- a/tests/wpt/meta-legacy-layout/WebCryptoAPI/idlharness.https.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/WebCryptoAPI/idlharness.https.any.js.ini
@@ -8,9 +8,6 @@
[SubtleCrypto interface: operation verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource)]
expected: FAIL
- [SubtleCrypto interface: operation digest(AlgorithmIdentifier, BufferSource)]
- expected: FAIL
-
[SubtleCrypto interface: operation generateKey(AlgorithmIdentifier, boolean, [object Object\])]
expected: FAIL
@@ -41,12 +38,6 @@
[SubtleCrypto interface: calling verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource) on crypto.subtle with too few arguments must throw TypeError]
expected: FAIL
- [SubtleCrypto interface: crypto.subtle must inherit property "digest(AlgorithmIdentifier, BufferSource)" with the proper type]
- expected: FAIL
-
- [SubtleCrypto interface: calling digest(AlgorithmIdentifier, BufferSource) on crypto.subtle with too few arguments must throw TypeError]
- expected: FAIL
-
[SubtleCrypto interface: crypto.subtle must inherit property "generateKey(AlgorithmIdentifier, boolean, [object Object\])" with the proper type]
expected: FAIL
@@ -121,9 +112,6 @@
[SubtleCrypto interface: operation verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource)]
expected: FAIL
- [SubtleCrypto interface: operation digest(AlgorithmIdentifier, BufferSource)]
- expected: FAIL
-
[SubtleCrypto interface: operation generateKey(AlgorithmIdentifier, boolean, [object Object\])]
expected: FAIL
@@ -154,12 +142,6 @@
[SubtleCrypto interface: calling verify(AlgorithmIdentifier, CryptoKey, BufferSource, BufferSource) on crypto.subtle with too few arguments must throw TypeError]
expected: FAIL
- [SubtleCrypto interface: crypto.subtle must inherit property "digest(AlgorithmIdentifier, BufferSource)" with the proper type]
- expected: FAIL
-
- [SubtleCrypto interface: calling digest(AlgorithmIdentifier, BufferSource) on crypto.subtle with too few arguments must throw TypeError]
- expected: FAIL
-
[SubtleCrypto interface: crypto.subtle must inherit property "generateKey(AlgorithmIdentifier, boolean, [object Object\])" with the proper type]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/floats/crashtests/firefox-bug-1904419.html.ini b/tests/wpt/meta-legacy-layout/css/CSS2/floats/crashtests/firefox-bug-1904419.html.ini
new file mode 100644
index 00000000000..6fb8bf47ce5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/floats/crashtests/firefox-bug-1904419.html.ini
@@ -0,0 +1,2 @@
+[firefox-bug-1904419.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-parsing.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-parsing.html.ini
deleted file mode 100644
index b0796527bd7..00000000000
--- a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-parsing.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[mix-blend-mode-parsing.html]
- [Mix-blend-mode plus-lighter]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-plus-lighter-basic.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-plus-lighter-basic.html.ini
deleted file mode 100644
index 88ceb05d71f..00000000000
--- a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-plus-lighter-basic.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[mix-blend-mode-plus-lighter-basic.html]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-plus-lighter.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-plus-lighter.html.ini
deleted file mode 100644
index d3e95cf5702..00000000000
--- a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-plus-lighter.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[mix-blend-mode-plus-lighter.html]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-video.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-video.html.ini
new file mode 100644
index 00000000000..26726a1734d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-video.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-video.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-cascade/all-prop-revert-layer-noop.html.ini b/tests/wpt/meta-legacy-layout/css/css-cascade/all-prop-revert-layer-noop.html.ini
new file mode 100644
index 00000000000..5a1d6e00038
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-cascade/all-prop-revert-layer-noop.html.ini
@@ -0,0 +1,16 @@
+[all-prop-revert-layer-noop.html?include=6]
+ expected: CRASH
+
+[all-prop-revert-layer-noop.html?include=7]
+
+[all-prop-revert-layer-noop.html?include=4]
+
+[all-prop-revert-layer-noop.html?include=3]
+
+[all-prop-revert-layer-noop.html?include=0]
+
+[all-prop-revert-layer-noop.html?include=2]
+
+[all-prop-revert-layer-noop.html?include=1]
+
+[all-prop-revert-layer-noop.html?include=5]
diff --git a/tests/wpt/meta-legacy-layout/css/css-cascade/all-prop-revert-noop.html.ini b/tests/wpt/meta-legacy-layout/css/css-cascade/all-prop-revert-noop.html.ini
index b550318b5c4..495faf70820 100644
--- a/tests/wpt/meta-legacy-layout/css/css-cascade/all-prop-revert-noop.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-cascade/all-prop-revert-noop.html.ini
@@ -4,3 +4,19 @@
[textarea]
expected: FAIL
+
+
+[all-prop-revert-noop.html?include=6]
+ expected: CRASH
+
+[all-prop-revert-noop.html?include=5]
+
+[all-prop-revert-noop.html?include=4]
+
+[all-prop-revert-noop.html?include=2]
+
+[all-prop-revert-noop.html?include=1]
+
+[all-prop-revert-noop.html?include=0]
+
+[all-prop-revert-noop.html?include=7]
diff --git a/tests/wpt/meta-legacy-layout/css/css-cascade/scope-specificity.html.ini b/tests/wpt/meta-legacy-layout/css/css-cascade/scope-specificity.html.ini
index cf0b84e5101..dae34ee9f45 100644
--- a/tests/wpt/meta-legacy-layout/css/css-cascade/scope-specificity.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-cascade/scope-specificity.html.ini
@@ -55,3 +55,6 @@
[@scope (#main) { > .a { } } and :where(#main) > .a]
expected: FAIL
+
+ [@scope { & .b { } } and :where(:scope) .b]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-color-hdr/computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-color-hdr/computed.html.ini
new file mode 100644
index 00000000000..8a0e56f83fc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-color-hdr/computed.html.ini
@@ -0,0 +1,51 @@
+[computed.html]
+ [Property dynamic-range-limit value 'high']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'constrained-high']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'standard']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(standard 75%, high 25%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(standard 25%, high 75%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(high 25%, standard 75%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(high 100%, standard 100%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(high 80%, standard 60%, constrained-high 60%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(standard 25%, constrained-high 75%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(constrained-high 75%, standard 25%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(constrained-high 25%, high 25%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(standard 25%, constrained-high 50%, high 25%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(standard 10%, constrained-high 20%, high 20%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(high 10%, standard 30%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(dynamic-range-limit-mix(standard 10%, high 30%) 20%, standard 80%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(dynamic-range-limit-mix(standard 25%, high 75%) 20%, dynamic-range-limit-mix(standard 25%, constrained-high 75%) 40%, dynamic-range-limit-mix(constrained-high 25%, high 75%) 40%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(high 10%, dynamic-range-limit-mix(standard 25%, constrained-high 75%) 20%, dynamic-range-limit-mix(constrained-high 10%, high 30%) 20%)']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-color-hdr/inheritance.html.ini b/tests/wpt/meta-legacy-layout/css/css-color-hdr/inheritance.html.ini
new file mode 100644
index 00000000000..b7307d0fe24
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-color-hdr/inheritance.html.ini
@@ -0,0 +1,6 @@
+[inheritance.html]
+ [Property dynamic-range-limit has initial value high]
+ expected: FAIL
+
+ [Property dynamic-range-limit inherits]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-color-hdr/interpolation.html.ini b/tests/wpt/meta-legacy-layout/css/css-color-hdr/interpolation.html.ini
new file mode 100644
index 00000000000..8b0224cf3f4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-color-hdr/interpolation.html.ini
@@ -0,0 +1,192 @@
+[interpolation.html]
+ [CSS Transitions: property <dynamic-range-limit> from [high\] to [standard\] at (0) should be [high\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [high\] to [standard\] at (0.25) should be [dynamic-range-limit-mix(standard 25%, high 75%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [high\] to [standard\] at (0.75) should be [dynamic-range-limit-mix(standard 75%, high 25%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [high\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [high\] to [standard\] at (0) should be [high\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [high\] to [standard\] at (0.25) should be [dynamic-range-limit-mix(standard 25%, high 75%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [high\] to [standard\] at (0.75) should be [dynamic-range-limit-mix(standard 75%, high 25%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [high\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [high\] to [standard\] at (0) should be [high\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [high\] to [standard\] at (0.25) should be [dynamic-range-limit-mix(standard 25%, high 75%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [high\] to [standard\] at (0.75) should be [dynamic-range-limit-mix(standard 75%, high 25%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [high\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [high\] to [standard\] at (0) should be [high\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [high\] to [standard\] at (0.25) should be [dynamic-range-limit-mix(standard 25%, high 75%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [high\] to [standard\] at (0.75) should be [dynamic-range-limit-mix(standard 75%, high 25%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [high\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (0) should be [constrained-high\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, constrained-high 50%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (0) should be [constrained-high\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, constrained-high 50%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (0) should be [constrained-high\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, constrained-high 50%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (0) should be [constrained-high\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, constrained-high 50%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (0) should be [dynamic-range-limit-mix(standard 50%, high 50%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (0.75) should be [dynamic-range-limit-mix(standard 87.5%, high 12.5%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (0) should be [dynamic-range-limit-mix(standard 50%, high 50%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (0.75) should be [dynamic-range-limit-mix(standard 87.5%, high 12.5%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (0) should be [dynamic-range-limit-mix(standard 50%, high 50%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (0.75) should be [dynamic-range-limit-mix(standard 87.5%, high 12.5%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (0) should be [dynamic-range-limit-mix(standard 50%, high 50%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (0.75) should be [dynamic-range-limit-mix(standard 87.5%, high 12.5%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (0) should be [dynamic-range-limit-mix(standard 90%, high 10%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, high 50%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (1) should be [dynamic-range-limit-mix(standard 10%, high 90%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (0) should be [dynamic-range-limit-mix(standard 90%, high 10%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, high 50%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (1) should be [dynamic-range-limit-mix(standard 10%, high 90%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (0) should be [dynamic-range-limit-mix(standard 90%, high 10%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, high 50%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (1) should be [dynamic-range-limit-mix(standard 10%, high 90%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (0) should be [dynamic-range-limit-mix(standard 90%, high 10%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, high 50%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (1) should be [dynamic-range-limit-mix(standard 10%, high 90%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (0) should be [dynamic-range-limit-mix(standard 10%, constrained-high 90%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, constrained-high 45%, high 5%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (1) should be [dynamic-range-limit-mix(standard 90%, high 10%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (0) should be [dynamic-range-limit-mix(standard 10%, constrained-high 90%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, constrained-high 45%, high 5%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (1) should be [dynamic-range-limit-mix(standard 90%, high 10%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (0) should be [dynamic-range-limit-mix(standard 10%, constrained-high 90%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, constrained-high 45%, high 5%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (1) should be [dynamic-range-limit-mix(standard 90%, high 10%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (0) should be [dynamic-range-limit-mix(standard 10%, constrained-high 90%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, constrained-high 45%, high 5%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (1) should be [dynamic-range-limit-mix(standard 90%, high 10%)\]]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-color-hdr/parsing.html.ini b/tests/wpt/meta-legacy-layout/css/css-color-hdr/parsing.html.ini
new file mode 100644
index 00000000000..b5075cf660f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-color-hdr/parsing.html.ini
@@ -0,0 +1,30 @@
+[parsing.html]
+ [e.style['dynamic-range-limit'\] = "standard" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "high" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "constrained-high" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "dynamic-range-limit-mix(high 80%, standard 20%)" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "dynamic-range-limit-mix(high 8%, standard 2%)" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "dynamic-range-limit-mix(high 99%, standard 99%)" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "dynamic-range-limit-mix(constrained-high 20%, high 80%)" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "dynamic-range-limit-mix(dynamic-range-limit-mix(constrained-high 90%, high 10%) 1%, high 80%)" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "dynamic-range-limit-mix(high 1%, dynamic-range-limit-mix(constrained-high 2%, high 10%) 80%)" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "dynamic-range-limit-mix(dynamic-range-limit-mix(high 1%, standard 2%) 3%, dynamic-range-limit-mix(constrained-high 5%, high 5%) 6%)" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/crashtests/iframe-init-crash.html.ini b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/crashtests/iframe-init-crash.html.ini
new file mode 100644
index 00000000000..a9527717956
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/crashtests/iframe-init-crash.html.ini
@@ -0,0 +1,2 @@
+[iframe-init-crash.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/registered-color-style-queries.html.ini b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/registered-color-style-queries.html.ini
index 3befc312c69..d4281d42b51 100644
--- a/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/registered-color-style-queries.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/registered-color-style-queries.html.ini
@@ -1,4 +1,5 @@
[registered-color-style-queries.html]
+ expected: ERROR
[Registered color with light color-scheme and light-dark()]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-computed.html.ini
index bf71bdf192b..132e4ea1fbc 100644
--- a/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-computed.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-computed.html.ini
@@ -1,2 +1,9 @@
[container-type-scroll-state-computed.html]
- expected: ERROR
+ [Property container-type value 'scroll-state']
+ expected: FAIL
+
+ [Property container-type value 'scroll-state size']
+ expected: FAIL
+
+ [Property container-type value 'inline-size scroll-state']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-pseudo.html.ini b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-pseudo.html.ini
new file mode 100644
index 00000000000..27cb88702ca
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-pseudo.html.ini
@@ -0,0 +1,2 @@
+[scroll-state-overflowing-pseudo.html]
+ expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-pseudo.html.ini b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-pseudo.html.ini
new file mode 100644
index 00000000000..17708297d9b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-pseudo.html.ini
@@ -0,0 +1,2 @@
+[scroll-state-snapped-pseudo.html]
+ expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-pseudo.html.ini b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-pseudo.html.ini
new file mode 100644
index 00000000000..8ef346bc83c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-pseudo.html.ini
@@ -0,0 +1,2 @@
+[scroll-state-stuck-pseudo.html]
+ expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/style-query-document-element.html.ini b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/style-query-document-element.html.ini
index d59e1b1536d..e0b2158c1b4 100644
--- a/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/style-query-document-element.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/style-query-document-element.html.ini
@@ -1,2 +1,3 @@
[style-query-document-element.html]
- expected: ERROR
+ [style query should evaluate to true]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-conditional/js/supports-at-rule.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-conditional/js/supports-at-rule.tentative.html.ini
new file mode 100644
index 00000000000..f8d0581c7c5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-conditional/js/supports-at-rule.tentative.html.ini
@@ -0,0 +1,120 @@
+[supports-at-rule.tentative.html]
+ [@supports at-rule]
+ expected: FAIL
+
+ [@supports at-rule 1]
+ expected: FAIL
+
+ [@supports at-rule 2]
+ expected: FAIL
+
+ [@supports at-rule 3]
+ expected: FAIL
+
+ [@supports at-rule 4]
+ expected: FAIL
+
+ [@supports at-rule 6]
+ expected: FAIL
+
+ [@supports at-rule 7]
+ expected: FAIL
+
+ [@supports at-rule 8]
+ expected: FAIL
+
+ [quoted value is OK]
+ expected: FAIL
+
+ [implicit end parenthesis]
+ expected: FAIL
+
+ [@supports at-rule 16]
+ expected: FAIL
+
+ [@supports at-rule 17]
+ expected: FAIL
+
+ [@supports at-rule 18]
+ expected: FAIL
+
+ [@supports at-rule 19]
+ expected: FAIL
+
+ [@supports at-rule 20]
+ expected: FAIL
+
+ [@supports at-rule 21]
+ expected: FAIL
+
+ [@supports at-rule 22]
+ expected: FAIL
+
+ [@supports at-rule 23]
+ expected: FAIL
+
+ [@supports at-rule 24]
+ expected: FAIL
+
+ [@supports at-rule 25]
+ expected: FAIL
+
+ [@supports at-rule 26]
+ expected: FAIL
+
+ [@supports at-rule 27]
+ expected: FAIL
+
+ [@supports at-rule 28]
+ expected: FAIL
+
+ [@supports at-rule 30]
+ expected: FAIL
+
+ [@supports at-rule 31]
+ expected: FAIL
+
+ [@supports at-rule 32]
+ expected: FAIL
+
+ [@supports at-rule 33]
+ expected: FAIL
+
+ [@supports at-rule 34]
+ expected: FAIL
+
+ [@supports at-rule 35]
+ expected: FAIL
+
+ [@supports at-rule 36]
+ expected: FAIL
+
+ [@supports at-rule 37]
+ expected: FAIL
+
+ [@supports at-rule 38]
+ expected: FAIL
+
+ [@supports at-rule 39]
+ expected: FAIL
+
+ [@supports at-rule 40]
+ expected: FAIL
+
+ [@supports at-rule 41]
+ expected: FAIL
+
+ [@supports at-rule 42]
+ expected: FAIL
+
+ [@supports at-rule 43]
+ expected: FAIL
+
+ [@supports at-rule 44]
+ expected: FAIL
+
+ [@supports at-rule 45]
+ expected: FAIL
+
+ [@supports at-rule 46]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-content/element-replacement-on-replaced-element.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-content/element-replacement-on-replaced-element.tentative.html.ini
deleted file mode 100644
index 7bd1c2d4164..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-content/element-replacement-on-replaced-element.tentative.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[element-replacement-on-replaced-element.tentative.html]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-display/display-contents-unusual-html-elements-none.html.ini b/tests/wpt/meta-legacy-layout/css/css-display/display-contents-unusual-html-elements-none.html.ini
index be2b22bc624..8bcd13f4fa2 100644
--- a/tests/wpt/meta-legacy-layout/css/css-display/display-contents-unusual-html-elements-none.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-display/display-contents-unusual-html-elements-none.html.ini
@@ -1,2 +1,2 @@
[display-contents-unusual-html-elements-none.html]
- expected: FAIL
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/generic-family-keywords-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/generic-family-keywords-001.html.ini
index 24862c1a821..78ff57e023b 100644
--- a/tests/wpt/meta-legacy-layout/css/css-fonts/generic-family-keywords-001.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-fonts/generic-family-keywords-001.html.ini
@@ -5,14 +5,5 @@
[@font-face matching for quoted and unquoted serif]
expected: FAIL
- [@font-face matching for quoted and unquoted fantasy]
- expected: FAIL
-
- [@font-face matching for quoted and unquoted monospace]
- expected: FAIL
-
[@font-face matching for quoted and unquoted emoji]
expected: FAIL
-
- [@font-face matching for quoted and unquoted cursive]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/absolute-positioning-definite-sizes-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/absolute-positioning-definite-sizes-001.html.ini
new file mode 100644
index 00000000000..fd9b35a5440
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/absolute-positioning-definite-sizes-001.html.ini
@@ -0,0 +1,3 @@
+[absolute-positioning-definite-sizes-001.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/absolute-positioning-grid-container-containing-block-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/absolute-positioning-grid-container-containing-block-001.html.ini
new file mode 100644
index 00000000000..2896f5b9ecf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/absolute-positioning-grid-container-containing-block-001.html.ini
@@ -0,0 +1,30 @@
+[absolute-positioning-grid-container-containing-block-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/absolute-positioning-grid-container-parent-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/absolute-positioning-grid-container-parent-001.html.ini
new file mode 100644
index 00000000000..3fe9720bde1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/absolute-positioning-grid-container-parent-001.html.ini
@@ -0,0 +1,27 @@
+[absolute-positioning-grid-container-parent-001.html]
+ [.container 4]
+ expected: FAIL
+
+ [.container 5]
+ expected: FAIL
+
+ [.container 6]
+ expected: FAIL
+
+ [.container 7]
+ expected: FAIL
+
+ [.container 8]
+ expected: FAIL
+
+ [.container 9]
+ expected: FAIL
+
+ [.container 10]
+ expected: FAIL
+
+ [.container 11]
+ expected: FAIL
+
+ [.container 12]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/descendant-static-position-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/descendant-static-position-001.html.ini
new file mode 100644
index 00000000000..28f1b27b9cc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/descendant-static-position-001.html.ini
@@ -0,0 +1,2 @@
+[descendant-static-position-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/descendant-static-position-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/descendant-static-position-002.html.ini
new file mode 100644
index 00000000000..b3aceb4fbfc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/descendant-static-position-002.html.ini
@@ -0,0 +1,2 @@
+[descendant-static-position-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/descendant-static-position-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/descendant-static-position-003.html.ini
new file mode 100644
index 00000000000..f2a52bf6439
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/descendant-static-position-003.html.ini
@@ -0,0 +1,2 @@
+[descendant-static-position-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/descendant-static-position-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/descendant-static-position-004.html.ini
new file mode 100644
index 00000000000..5ba7f6ce0e0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/descendant-static-position-004.html.ini
@@ -0,0 +1,2 @@
+[descendant-static-position-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/empty-grid-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/empty-grid-001.html.ini
new file mode 100644
index 00000000000..5a3e5cc833c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/empty-grid-001.html.ini
@@ -0,0 +1,27 @@
+[empty-grid-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-001.html.ini
new file mode 100644
index 00000000000..479e35ea30f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-001.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-002.html.ini
new file mode 100644
index 00000000000..1702b3f178b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-002.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-001.html.ini
new file mode 100644
index 00000000000..b6622b3eb6c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-001.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-img-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-002.html.ini
new file mode 100644
index 00000000000..9c60bdcc8f9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-002.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-img-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-last-baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-last-baseline-001.html.ini
new file mode 100644
index 00000000000..67fcee163ff
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-last-baseline-001.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-img-last-baseline-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-last-baseline-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-last-baseline-002.html.ini
new file mode 100644
index 00000000000..3c521c099f0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-img-last-baseline-002.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-img-last-baseline-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-last-baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-last-baseline-001.html.ini
new file mode 100644
index 00000000000..d1c9be58c0d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-last-baseline-001.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-last-baseline-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-last-baseline-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-last-baseline-002.html.ini
new file mode 100644
index 00000000000..ff5a6d6e7e0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-last-baseline-002.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-last-baseline-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-001.html.ini
new file mode 100644
index 00000000000..367e331ba6d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-001.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-rtl-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-002.html.ini
new file mode 100644
index 00000000000..41c45c1e03c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-002.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-rtl-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-003.html.ini
new file mode 100644
index 00000000000..e72daaeb0af
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-003.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-rtl-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-004.html.ini
new file mode 100644
index 00000000000..eabc393b4b7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-004.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-rtl-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-001.html.ini
new file mode 100644
index 00000000000..0af87606c84
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-001.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-rtl-last-baseline-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-002.html.ini
new file mode 100644
index 00000000000..49bd354c76f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-002.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-rtl-last-baseline-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-003.html.ini
new file mode 100644
index 00000000000..ab466a9b73e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-003.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-rtl-last-baseline-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-004.html.ini
new file mode 100644
index 00000000000..51d85f43ff2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-rtl-last-baseline-004.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-rtl-last-baseline-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-001.html.ini
new file mode 100644
index 00000000000..f290ad662c4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-001.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-vertWM-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-002.html.ini
new file mode 100644
index 00000000000..118bdaea123
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-002.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-vertWM-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-003.html.ini
new file mode 100644
index 00000000000..1be956f2a49
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-003.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-vertWM-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-004.html.ini
new file mode 100644
index 00000000000..382cfb8afae
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-004.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-vertWM-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-001.html.ini
new file mode 100644
index 00000000000..f16318e1590
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-001.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-vertWM-last-baseline-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-002.html.ini
new file mode 100644
index 00000000000..6dc1636a54a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-align-self-vertWM-last-baseline-002.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-align-self-vertWM-last-baseline-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-001.html.ini
new file mode 100644
index 00000000000..5420c112f90
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-001.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-002.html.ini
new file mode 100644
index 00000000000..6a668517f94
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-002.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-001.html.ini
new file mode 100644
index 00000000000..42952fa983b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-001.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-img-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-002.html.ini
new file mode 100644
index 00000000000..6f722d18921
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-002.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-img-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-last-baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-last-baseline-001.html.ini
new file mode 100644
index 00000000000..b7a0e0cdedc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-last-baseline-001.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-img-last-baseline-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-last-baseline-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-last-baseline-002.html.ini
new file mode 100644
index 00000000000..a4b0bbf9e47
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-img-last-baseline-002.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-img-last-baseline-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-last-baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-last-baseline-001.html.ini
new file mode 100644
index 00000000000..b5426eb443c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-last-baseline-001.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-last-baseline-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-last-baseline-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-last-baseline-002.html.ini
new file mode 100644
index 00000000000..b63aef1f577
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-last-baseline-002.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-last-baseline-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-001.html.ini
new file mode 100644
index 00000000000..d70360a04b0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-001.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-rtl-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-002.html.ini
new file mode 100644
index 00000000000..0dc07538fed
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-002.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-rtl-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-003.html.ini
new file mode 100644
index 00000000000..a30b469a35b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-003.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-rtl-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-004.html.ini
new file mode 100644
index 00000000000..6c4fdbbcc1c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-004.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-rtl-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-001.html.ini
new file mode 100644
index 00000000000..ffb06b9a7fa
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-001.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-rtl-last-baseline-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-002.html.ini
new file mode 100644
index 00000000000..0d01fbc6438
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-002.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-rtl-last-baseline-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-003.html.ini
new file mode 100644
index 00000000000..9aa2ac78c0f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-003.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-rtl-last-baseline-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-004.html.ini
new file mode 100644
index 00000000000..0b2dc56cace
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-rtl-last-baseline-004.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-rtl-last-baseline-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-001.html.ini
new file mode 100644
index 00000000000..8f8cac17739
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-001.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-vertWM-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-002.html.ini
new file mode 100644
index 00000000000..7cf8adf4bab
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-002.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-vertWM-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-003.html.ini
new file mode 100644
index 00000000000..5f27f3be2db
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-003.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-vertWM-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-004.html.ini
new file mode 100644
index 00000000000..c74ec02fbd5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-004.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-vertWM-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-001.html.ini
new file mode 100644
index 00000000000..2acf2144699
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-001.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-vertWM-last-baseline-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-002.html.ini
new file mode 100644
index 00000000000..ae9f0fdf8d7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-002.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-vertWM-last-baseline-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-003.html.ini
new file mode 100644
index 00000000000..5773345c4f2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-003.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-vertWM-last-baseline-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-004.html.ini
new file mode 100644
index 00000000000..660bd509354
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-abspos-staticpos-justify-self-vertWM-last-baseline-004.html.ini
@@ -0,0 +1,2 @@
+[grid-abspos-staticpos-justify-self-vertWM-last-baseline-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-paint-positioned-children-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-paint-positioned-children-001.html.ini
new file mode 100644
index 00000000000..2ce5948665d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-paint-positioned-children-001.html.ini
@@ -0,0 +1,2 @@
+[grid-paint-positioned-children-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-children-writing-modes-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-children-writing-modes-001.html.ini
new file mode 100644
index 00000000000..a7d531668b5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-children-writing-modes-001.html.ini
@@ -0,0 +1,2 @@
+[grid-positioned-children-writing-modes-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-item-dynamic-change-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-item-dynamic-change-001.html.ini
new file mode 100644
index 00000000000..7e83b4286ee
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-item-dynamic-change-001.html.ini
@@ -0,0 +1,2 @@
+[grid-positioned-item-dynamic-change-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-item-dynamic-change-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-item-dynamic-change-002.html.ini
new file mode 100644
index 00000000000..c36aedca9ed
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-item-dynamic-change-002.html.ini
@@ -0,0 +1,2 @@
+[grid-positioned-item-dynamic-change-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-item-dynamic-change-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-item-dynamic-change-005.html.ini
new file mode 100644
index 00000000000..af147286a3c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-item-dynamic-change-005.html.ini
@@ -0,0 +1,2 @@
+[grid-positioned-item-dynamic-change-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-item-dynamic-change-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-item-dynamic-change-007.html.ini
new file mode 100644
index 00000000000..403c53607d5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-item-dynamic-change-007.html.ini
@@ -0,0 +1,2 @@
+[grid-positioned-item-dynamic-change-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-001.html.ini
new file mode 100644
index 00000000000..c88b42acb4a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-001.html.ini
@@ -0,0 +1,3 @@
+[grid-positioned-items-and-autofit-tracks-001.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-002.html.ini
new file mode 100644
index 00000000000..ae945ea0eec
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-002.html.ini
@@ -0,0 +1,3 @@
+[grid-positioned-items-and-autofit-tracks-002.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-003.html.ini
new file mode 100644
index 00000000000..9b5e0c640f3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-003.html.ini
@@ -0,0 +1,3 @@
+[grid-positioned-items-and-autofit-tracks-003.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-004.html.ini
new file mode 100644
index 00000000000..d49f50b9234
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-004.html.ini
@@ -0,0 +1,3 @@
+[grid-positioned-items-and-autofit-tracks-004.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-005.html.ini
new file mode 100644
index 00000000000..f69fdd7b6a9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-005.html.ini
@@ -0,0 +1,3 @@
+[grid-positioned-items-and-autofit-tracks-005.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-006.html.ini
new file mode 100644
index 00000000000..9e9c3eb7cdd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-006.html.ini
@@ -0,0 +1,3 @@
+[grid-positioned-items-and-autofit-tracks-006.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-007.html.ini
new file mode 100644
index 00000000000..acf5221bcdf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-007.html.ini
@@ -0,0 +1,3 @@
+[grid-positioned-items-and-autofit-tracks-007.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-background-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-background-001.html.ini
new file mode 100644
index 00000000000..17a021f5e8b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-background-001.html.ini
@@ -0,0 +1,2 @@
+[grid-positioned-items-background-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-background-rtl-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-background-rtl-001.html.ini
new file mode 100644
index 00000000000..947229a6cff
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-background-rtl-001.html.ini
@@ -0,0 +1,2 @@
+[grid-positioned-items-background-rtl-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-content-alignment-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-content-alignment-001.html.ini
new file mode 100644
index 00000000000..f4b96344b43
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-content-alignment-001.html.ini
@@ -0,0 +1,144 @@
+[grid-positioned-items-content-alignment-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-content-alignment-rtl-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-content-alignment-rtl-001.html.ini
new file mode 100644
index 00000000000..8c47e0ed45b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-content-alignment-rtl-001.html.ini
@@ -0,0 +1,162 @@
+[grid-positioned-items-content-alignment-rtl-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-gaps-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-gaps-001.html.ini
new file mode 100644
index 00000000000..f9ea996d7cf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-gaps-001.html.ini
@@ -0,0 +1,123 @@
+[grid-positioned-items-gaps-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-gaps-002-rtl.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-gaps-002-rtl.html.ini
new file mode 100644
index 00000000000..4cb6d41a0ba
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-gaps-002-rtl.html.ini
@@ -0,0 +1,6 @@
+[grid-positioned-items-gaps-002-rtl.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-gaps-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-gaps-002.html.ini
new file mode 100644
index 00000000000..e0762cd0d2b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-gaps-002.html.ini
@@ -0,0 +1,6 @@
+[grid-positioned-items-gaps-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-gaps-rtl-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-gaps-rtl-001.html.ini
new file mode 100644
index 00000000000..13056360e7a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-gaps-rtl-001.html.ini
@@ -0,0 +1,132 @@
+[grid-positioned-items-gaps-rtl-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-implicit-grid-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-implicit-grid-001.html.ini
new file mode 100644
index 00000000000..5e5814ab8a5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-implicit-grid-001.html.ini
@@ -0,0 +1,12 @@
+[grid-positioned-items-implicit-grid-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-implicit-grid-line-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-implicit-grid-line-001.html.ini
new file mode 100644
index 00000000000..fcd08b88322
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-implicit-grid-line-001.html.ini
@@ -0,0 +1,12 @@
+[grid-positioned-items-implicit-grid-line-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-padding-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-padding-001.html.ini
new file mode 100644
index 00000000000..2f30634fa9b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-padding-001.html.ini
@@ -0,0 +1,36 @@
+[grid-positioned-items-padding-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-unknown-named-grid-line-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-unknown-named-grid-line-001.html.ini
new file mode 100644
index 00000000000..4099faa0520
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-unknown-named-grid-line-001.html.ini
@@ -0,0 +1,6 @@
+[grid-positioned-items-unknown-named-grid-line-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-within-grid-implicit-track-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-within-grid-implicit-track-001.html.ini
new file mode 100644
index 00000000000..74e8e6bf021
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-positioned-items-within-grid-implicit-track-001.html.ini
@@ -0,0 +1,48 @@
+[grid-positioned-items-within-grid-implicit-track-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-sizing-positioned-items-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-sizing-positioned-items-001.html.ini
new file mode 100644
index 00000000000..9ad0958ba55
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/grid-sizing-positioned-items-001.html.ini
@@ -0,0 +1,24 @@
+[grid-sizing-positioned-items-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-001.html.ini
new file mode 100644
index 00000000000..db02f2a81bc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-001.html.ini
@@ -0,0 +1,300 @@
+[orthogonal-positioned-grid-descendants-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-002.html.ini
new file mode 100644
index 00000000000..b39666beec6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-002.html.ini
@@ -0,0 +1,300 @@
+[orthogonal-positioned-grid-descendants-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-003.html.ini
new file mode 100644
index 00000000000..4c235fa3590
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-003.html.ini
@@ -0,0 +1,300 @@
+[orthogonal-positioned-grid-descendants-003.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-004.html.ini
new file mode 100644
index 00000000000..1b7924b13de
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-004.html.ini
@@ -0,0 +1,300 @@
+[orthogonal-positioned-grid-descendants-004.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-005.html.ini
new file mode 100644
index 00000000000..3aa1126864c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-005.html.ini
@@ -0,0 +1,300 @@
+[orthogonal-positioned-grid-descendants-005.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-006.html.ini
new file mode 100644
index 00000000000..d6bc673ca17
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-006.html.ini
@@ -0,0 +1,300 @@
+[orthogonal-positioned-grid-descendants-006.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-007.html.ini
new file mode 100644
index 00000000000..8cfc68cb58e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-007.html.ini
@@ -0,0 +1,300 @@
+[orthogonal-positioned-grid-descendants-007.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-008.html.ini
new file mode 100644
index 00000000000..a13ed8d8daf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-008.html.ini
@@ -0,0 +1,300 @@
+[orthogonal-positioned-grid-descendants-008.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-009.html.ini
new file mode 100644
index 00000000000..ed240e177a7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-009.html.ini
@@ -0,0 +1,300 @@
+[orthogonal-positioned-grid-descendants-009.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-010.html.ini
new file mode 100644
index 00000000000..8d1e80f2829
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-010.html.ini
@@ -0,0 +1,300 @@
+[orthogonal-positioned-grid-descendants-010.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-011.html.ini
new file mode 100644
index 00000000000..86256bbec8b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-011.html.ini
@@ -0,0 +1,300 @@
+[orthogonal-positioned-grid-descendants-011.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-012.html.ini
new file mode 100644
index 00000000000..0454c7baccc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-012.html.ini
@@ -0,0 +1,300 @@
+[orthogonal-positioned-grid-descendants-012.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-013.html.ini
new file mode 100644
index 00000000000..2b3f5c04b8b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-013.html.ini
@@ -0,0 +1,300 @@
+[orthogonal-positioned-grid-descendants-013.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-014.html.ini
new file mode 100644
index 00000000000..06d28eaa103
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-014.html.ini
@@ -0,0 +1,300 @@
+[orthogonal-positioned-grid-descendants-014.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-015.html.ini
new file mode 100644
index 00000000000..6db816171e5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-015.html.ini
@@ -0,0 +1,300 @@
+[orthogonal-positioned-grid-descendants-015.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-016.html.ini
new file mode 100644
index 00000000000..9564468d796
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-descendants-016.html.ini
@@ -0,0 +1,297 @@
+[orthogonal-positioned-grid-descendants-016.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-001.html.ini
new file mode 100644
index 00000000000..7b780e5b201
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-001.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-002.html.ini
new file mode 100644
index 00000000000..23f33586028
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-002.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-003.html.ini
new file mode 100644
index 00000000000..d4be2ec032b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-003.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-004.html.ini
new file mode 100644
index 00000000000..1d82ef134d6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-004.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-005.html.ini
new file mode 100644
index 00000000000..0b75fe15c87
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-005.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-006.html.ini
new file mode 100644
index 00000000000..c92d1739c37
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-006.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-007.html.ini
new file mode 100644
index 00000000000..f76d459b808
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-007.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-008.html.ini
new file mode 100644
index 00000000000..4cc891d704b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-008.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-009.html.ini
new file mode 100644
index 00000000000..ac2f70dcf25
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-009.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-009.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-010.html.ini
new file mode 100644
index 00000000000..df5ec18faaa
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-010.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-010.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-011.html.ini
new file mode 100644
index 00000000000..6296931943b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-011.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-011.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-012.html.ini
new file mode 100644
index 00000000000..e4dc89aa6c8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-012.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-012.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-013.html.ini
new file mode 100644
index 00000000000..88516f2b52c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-013.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-013.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-014.html.ini
new file mode 100644
index 00000000000..a4ae2e18c09
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-014.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-014.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-015.html.ini
new file mode 100644
index 00000000000..4d2c63e19f9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-015.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-015.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-016.html.ini
new file mode 100644
index 00000000000..f2169f1e503
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-016.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-016.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-017.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-017.html.ini
new file mode 100644
index 00000000000..6eddb6dab11
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/orthogonal-positioned-grid-items-017.html.ini
@@ -0,0 +1,2 @@
+[orthogonal-positioned-grid-items-017.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-001.html.ini
new file mode 100644
index 00000000000..ea2391177c4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-001.html.ini
@@ -0,0 +1,300 @@
+[positioned-grid-descendants-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-002.html.ini
new file mode 100644
index 00000000000..9c95971e545
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-002.html.ini
@@ -0,0 +1,300 @@
+[positioned-grid-descendants-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-003.html.ini
new file mode 100644
index 00000000000..2c3fed258bd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-003.html.ini
@@ -0,0 +1,300 @@
+[positioned-grid-descendants-003.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-004.html.ini
new file mode 100644
index 00000000000..86f4e39b3ed
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-004.html.ini
@@ -0,0 +1,300 @@
+[positioned-grid-descendants-004.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-005.html.ini
new file mode 100644
index 00000000000..d1fe870b823
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-005.html.ini
@@ -0,0 +1,300 @@
+[positioned-grid-descendants-005.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-006.html.ini
new file mode 100644
index 00000000000..179c5665b2c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-006.html.ini
@@ -0,0 +1,252 @@
+[positioned-grid-descendants-006.html]
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-007.html.ini
new file mode 100644
index 00000000000..b6e5d76778d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-007.html.ini
@@ -0,0 +1,300 @@
+[positioned-grid-descendants-007.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-008.html.ini
new file mode 100644
index 00000000000..a55c0efe125
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-008.html.ini
@@ -0,0 +1,252 @@
+[positioned-grid-descendants-008.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-009.html.ini
new file mode 100644
index 00000000000..e735b0e674d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-009.html.ini
@@ -0,0 +1,252 @@
+[positioned-grid-descendants-009.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-010.html.ini
new file mode 100644
index 00000000000..7a11909c7e7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-010.html.ini
@@ -0,0 +1,300 @@
+[positioned-grid-descendants-010.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-011.html.ini
new file mode 100644
index 00000000000..7af6be7533e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-011.html.ini
@@ -0,0 +1,252 @@
+[positioned-grid-descendants-011.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-012.html.ini
new file mode 100644
index 00000000000..e8dca3822d6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-012.html.ini
@@ -0,0 +1,288 @@
+[positioned-grid-descendants-012.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-013.html.ini
new file mode 100644
index 00000000000..505124b3d9c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-013.html.ini
@@ -0,0 +1,288 @@
+[positioned-grid-descendants-013.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-014.html.ini
new file mode 100644
index 00000000000..ca5dfe5dcbb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-014.html.ini
@@ -0,0 +1,288 @@
+[positioned-grid-descendants-014.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-015.html.ini
new file mode 100644
index 00000000000..719820b10c8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-015.html.ini
@@ -0,0 +1,288 @@
+[positioned-grid-descendants-015.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-016.html.ini
new file mode 100644
index 00000000000..6b0c806c9e6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-016.html.ini
@@ -0,0 +1,297 @@
+[positioned-grid-descendants-016.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 73]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 79]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 85]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 91]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 97]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-017.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-017.html.ini
new file mode 100644
index 00000000000..e3e5c9ac46c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-descendants-017.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-descendants-017.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-001.html.ini
new file mode 100644
index 00000000000..0c4f9fbff3b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-001.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-002.html.ini
new file mode 100644
index 00000000000..a8f93fbed53
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-002.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-003.html.ini
new file mode 100644
index 00000000000..9cd7ef012b5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-003.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-004.html.ini
new file mode 100644
index 00000000000..0293df1b3ca
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-004.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-005.html.ini
new file mode 100644
index 00000000000..10e175d6fdc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-005.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-006.html.ini
new file mode 100644
index 00000000000..2a2fa69a07e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-006.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-007.html.ini
new file mode 100644
index 00000000000..127078afc1c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-007.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-008.html.ini
new file mode 100644
index 00000000000..5a1160d1740
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-008.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-009.html.ini
new file mode 100644
index 00000000000..553732f4357
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-009.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-009.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-010.html.ini
new file mode 100644
index 00000000000..465d7cbad10
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-010.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-010.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-011.html.ini
new file mode 100644
index 00000000000..080e8a262d0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-011.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-011.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-012.html.ini
new file mode 100644
index 00000000000..bcca8edf05e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-012.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-012.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-013.html.ini
new file mode 100644
index 00000000000..842e3aaa16c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-013.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-013.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-014.html.ini
new file mode 100644
index 00000000000..b24aa0a4263
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-014.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-014.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-015.html.ini
new file mode 100644
index 00000000000..e4a732b0a9e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-015.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-015.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-016.html.ini
new file mode 100644
index 00000000000..6000deda508
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-016.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-016.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-017.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-017.html.ini
new file mode 100644
index 00000000000..15acd45d3db
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-017.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-017.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-018.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-018.html.ini
new file mode 100644
index 00000000000..de440356e5e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-018.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-018.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-022.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-022.html.ini
new file mode 100644
index 00000000000..a32305b14e9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-022.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-022.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-023.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-023.html.ini
new file mode 100644
index 00000000000..c580c3dbc8b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-023.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-023.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-024.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-024.html.ini
new file mode 100644
index 00000000000..5169b860e28
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-024.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-024.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-025.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-025.html.ini
new file mode 100644
index 00000000000..daa8f6ce22e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-025.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-025.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-negative-indices-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-negative-indices-001.html.ini
new file mode 100644
index 00000000000..ab30592bbdc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-negative-indices-001.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-negative-indices-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-negative-indices-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-negative-indices-003.html.ini
new file mode 100644
index 00000000000..572ba072381
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-negative-indices-003.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-negative-indices-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-should-not-create-implicit-tracks-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-should-not-create-implicit-tracks-001.html.ini
new file mode 100644
index 00000000000..56567eb1746
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-should-not-create-implicit-tracks-001.html.ini
@@ -0,0 +1,3 @@
+[positioned-grid-items-should-not-create-implicit-tracks-001.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-should-not-take-up-space-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-should-not-take-up-space-001.html.ini
new file mode 100644
index 00000000000..6ef1b3e4da5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-should-not-take-up-space-001.html.ini
@@ -0,0 +1,36 @@
+[positioned-grid-items-should-not-take-up-space-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-sizing-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-sizing-001.html.ini
new file mode 100644
index 00000000000..02265f0b081
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/abspos/positioned-grid-items-sizing-001.html.ini
@@ -0,0 +1,2 @@
+[positioned-grid-items-sizing-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-001.html.ini
new file mode 100644
index 00000000000..25530dbc848
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-001.html.ini
@@ -0,0 +1,15 @@
+[grid-align-baseline-001.html]
+ [#target > div 1]
+ expected: FAIL
+
+ [#target > div 2]
+ expected: FAIL
+
+ [#target > div 3]
+ expected: FAIL
+
+ [#target > div 5]
+ expected: FAIL
+
+ [#target > div 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-002.html.ini
new file mode 100644
index 00000000000..15505055248
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-002.html.ini
@@ -0,0 +1,15 @@
+[grid-align-baseline-002.html]
+ [#target > div 1]
+ expected: FAIL
+
+ [#target > div 2]
+ expected: FAIL
+
+ [#target > div 3]
+ expected: FAIL
+
+ [#target > div 5]
+ expected: FAIL
+
+ [#target > div 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-003.html.ini
new file mode 100644
index 00000000000..61dafc4ddfb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-003.html.ini
@@ -0,0 +1,9 @@
+[grid-align-baseline-003.html]
+ [#target > div 1]
+ expected: FAIL
+
+ [#target > div 2]
+ expected: FAIL
+
+ [#target > div 3]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-004.html.ini
new file mode 100644
index 00000000000..21847677f82
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-004.html.ini
@@ -0,0 +1,6 @@
+[grid-align-baseline-004.html]
+ [#target > div 1]
+ expected: FAIL
+
+ [#target > div 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-005.html.ini
new file mode 100644
index 00000000000..4876aae00ac
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-005.html.ini
@@ -0,0 +1,2 @@
+[grid-align-baseline-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-fieldset-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-fieldset-001.html.ini
new file mode 100644
index 00000000000..a9a8cdfd701
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-fieldset-001.html.ini
@@ -0,0 +1,12 @@
+[grid-align-baseline-fieldset-001.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 2]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-fieldset-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-fieldset-002.html.ini
new file mode 100644
index 00000000000..e886fc00b1f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-fieldset-002.html.ini
@@ -0,0 +1,6 @@
+[grid-align-baseline-fieldset-002.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-fieldset-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-fieldset-003.html.ini
new file mode 100644
index 00000000000..eb97a5d2e17
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-fieldset-003.html.ini
@@ -0,0 +1,6 @@
+[grid-align-baseline-fieldset-003.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-flex-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-flex-001.html.ini
new file mode 100644
index 00000000000..c9a9c4211db
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-flex-001.html.ini
@@ -0,0 +1,144 @@
+[grid-align-baseline-flex-001.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 2]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 4]
+ expected: FAIL
+
+ [.target > * 5]
+ expected: FAIL
+
+ [.target > * 6]
+ expected: FAIL
+
+ [.target > * 7]
+ expected: FAIL
+
+ [.target > * 8]
+ expected: FAIL
+
+ [.target > * 9]
+ expected: FAIL
+
+ [.target > * 10]
+ expected: FAIL
+
+ [.target > * 11]
+ expected: FAIL
+
+ [.target > * 12]
+ expected: FAIL
+
+ [.target > * 13]
+ expected: FAIL
+
+ [.target > * 14]
+ expected: FAIL
+
+ [.target > * 15]
+ expected: FAIL
+
+ [.target > * 16]
+ expected: FAIL
+
+ [.target > * 17]
+ expected: FAIL
+
+ [.target > * 18]
+ expected: FAIL
+
+ [.target > * 19]
+ expected: FAIL
+
+ [.target > * 20]
+ expected: FAIL
+
+ [.target > * 21]
+ expected: FAIL
+
+ [.target > * 22]
+ expected: FAIL
+
+ [.target > * 23]
+ expected: FAIL
+
+ [.target > * 24]
+ expected: FAIL
+
+ [.target > * 25]
+ expected: FAIL
+
+ [.target > * 26]
+ expected: FAIL
+
+ [.target > * 27]
+ expected: FAIL
+
+ [.target > * 28]
+ expected: FAIL
+
+ [.target > * 29]
+ expected: FAIL
+
+ [.target > * 30]
+ expected: FAIL
+
+ [.target > * 31]
+ expected: FAIL
+
+ [.target > * 32]
+ expected: FAIL
+
+ [.target > * 33]
+ expected: FAIL
+
+ [.target > * 34]
+ expected: FAIL
+
+ [.target > * 35]
+ expected: FAIL
+
+ [.target > * 36]
+ expected: FAIL
+
+ [.target > * 37]
+ expected: FAIL
+
+ [.target > * 38]
+ expected: FAIL
+
+ [.target > * 39]
+ expected: FAIL
+
+ [.target > * 40]
+ expected: FAIL
+
+ [.target > * 41]
+ expected: FAIL
+
+ [.target > * 42]
+ expected: FAIL
+
+ [.target > * 43]
+ expected: FAIL
+
+ [.target > * 44]
+ expected: FAIL
+
+ [.target > * 45]
+ expected: FAIL
+
+ [.target > * 46]
+ expected: FAIL
+
+ [.target > * 47]
+ expected: FAIL
+
+ [.target > * 48]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-flex-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-flex-002.html.ini
new file mode 100644
index 00000000000..cd5a687a3c2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-flex-002.html.ini
@@ -0,0 +1,72 @@
+[grid-align-baseline-flex-002.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 5]
+ expected: FAIL
+
+ [.target > * 7]
+ expected: FAIL
+
+ [.target > * 9]
+ expected: FAIL
+
+ [.target > * 11]
+ expected: FAIL
+
+ [.target > * 13]
+ expected: FAIL
+
+ [.target > * 15]
+ expected: FAIL
+
+ [.target > * 17]
+ expected: FAIL
+
+ [.target > * 19]
+ expected: FAIL
+
+ [.target > * 21]
+ expected: FAIL
+
+ [.target > * 23]
+ expected: FAIL
+
+ [.target > * 25]
+ expected: FAIL
+
+ [.target > * 27]
+ expected: FAIL
+
+ [.target > * 29]
+ expected: FAIL
+
+ [.target > * 31]
+ expected: FAIL
+
+ [.target > * 33]
+ expected: FAIL
+
+ [.target > * 35]
+ expected: FAIL
+
+ [.target > * 37]
+ expected: FAIL
+
+ [.target > * 39]
+ expected: FAIL
+
+ [.target > * 41]
+ expected: FAIL
+
+ [.target > * 43]
+ expected: FAIL
+
+ [.target > * 45]
+ expected: FAIL
+
+ [.target > * 47]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-flex-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-flex-003.html.ini
new file mode 100644
index 00000000000..722a35180ad
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-flex-003.html.ini
@@ -0,0 +1,48 @@
+[grid-align-baseline-flex-003.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 2]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 4]
+ expected: FAIL
+
+ [.target > * 5]
+ expected: FAIL
+
+ [.target > * 6]
+ expected: FAIL
+
+ [.target > * 7]
+ expected: FAIL
+
+ [.target > * 8]
+ expected: FAIL
+
+ [.target > * 9]
+ expected: FAIL
+
+ [.target > * 10]
+ expected: FAIL
+
+ [.target > * 11]
+ expected: FAIL
+
+ [.target > * 12]
+ expected: FAIL
+
+ [.target > * 13]
+ expected: FAIL
+
+ [.target > * 14]
+ expected: FAIL
+
+ [.target > * 15]
+ expected: FAIL
+
+ [.target > * 16]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-flex-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-flex-004.html.ini
new file mode 100644
index 00000000000..6f55c851f6d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-flex-004.html.ini
@@ -0,0 +1,24 @@
+[grid-align-baseline-flex-004.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 5]
+ expected: FAIL
+
+ [.target > * 7]
+ expected: FAIL
+
+ [.target > * 9]
+ expected: FAIL
+
+ [.target > * 11]
+ expected: FAIL
+
+ [.target > * 13]
+ expected: FAIL
+
+ [.target > * 15]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-grid-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-grid-001.html.ini
new file mode 100644
index 00000000000..ce4382ad3ab
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-grid-001.html.ini
@@ -0,0 +1,36 @@
+[grid-align-baseline-grid-001.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 2]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 4]
+ expected: FAIL
+
+ [.target > * 5]
+ expected: FAIL
+
+ [.target > * 6]
+ expected: FAIL
+
+ [.target > * 7]
+ expected: FAIL
+
+ [.target > * 8]
+ expected: FAIL
+
+ [.target > * 9]
+ expected: FAIL
+
+ [.target > * 10]
+ expected: FAIL
+
+ [.target > * 11]
+ expected: FAIL
+
+ [.target > * 12]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-grid-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-grid-002.html.ini
new file mode 100644
index 00000000000..caccb13ff47
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-grid-002.html.ini
@@ -0,0 +1,18 @@
+[grid-align-baseline-grid-002.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 5]
+ expected: FAIL
+
+ [.target > * 7]
+ expected: FAIL
+
+ [.target > * 9]
+ expected: FAIL
+
+ [.target > * 11]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-grid-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-grid-003.html.ini
new file mode 100644
index 00000000000..4f1609157fd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-grid-003.html.ini
@@ -0,0 +1,18 @@
+[grid-align-baseline-grid-003.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 5]
+ expected: FAIL
+
+ [.target > * 7]
+ expected: FAIL
+
+ [.target > * 9]
+ expected: FAIL
+
+ [.target > * 11]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-line-clamp-001.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-line-clamp-001.tentative.html.ini
new file mode 100644
index 00000000000..935d59245b9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-line-clamp-001.tentative.html.ini
@@ -0,0 +1,72 @@
+[grid-align-baseline-line-clamp-001.tentative.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 2]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 4]
+ expected: FAIL
+
+ [.target > * 5]
+ expected: FAIL
+
+ [.target > * 6]
+ expected: FAIL
+
+ [.target > * 7]
+ expected: FAIL
+
+ [.target > * 8]
+ expected: FAIL
+
+ [.target > * 9]
+ expected: FAIL
+
+ [.target > * 10]
+ expected: FAIL
+
+ [.target > * 11]
+ expected: FAIL
+
+ [.target > * 12]
+ expected: FAIL
+
+ [.target > * 13]
+ expected: FAIL
+
+ [.target > * 14]
+ expected: FAIL
+
+ [.target > * 15]
+ expected: FAIL
+
+ [.target > * 16]
+ expected: FAIL
+
+ [.target > * 17]
+ expected: FAIL
+
+ [.target > * 18]
+ expected: FAIL
+
+ [.target > * 19]
+ expected: FAIL
+
+ [.target > * 20]
+ expected: FAIL
+
+ [.target > * 21]
+ expected: FAIL
+
+ [.target > * 22]
+ expected: FAIL
+
+ [.target > * 23]
+ expected: FAIL
+
+ [.target > * 24]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-line-clamp-002.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-line-clamp-002.tentative.html.ini
new file mode 100644
index 00000000000..5f6207a47e8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-line-clamp-002.tentative.html.ini
@@ -0,0 +1,36 @@
+[grid-align-baseline-line-clamp-002.tentative.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 5]
+ expected: FAIL
+
+ [.target > * 7]
+ expected: FAIL
+
+ [.target > * 9]
+ expected: FAIL
+
+ [.target > * 11]
+ expected: FAIL
+
+ [.target > * 13]
+ expected: FAIL
+
+ [.target > * 15]
+ expected: FAIL
+
+ [.target > * 17]
+ expected: FAIL
+
+ [.target > * 19]
+ expected: FAIL
+
+ [.target > * 21]
+ expected: FAIL
+
+ [.target > * 23]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-line-clamp-003.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-line-clamp-003.tentative.html.ini
new file mode 100644
index 00000000000..444e403f490
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-line-clamp-003.tentative.html.ini
@@ -0,0 +1,36 @@
+[grid-align-baseline-line-clamp-003.tentative.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 5]
+ expected: FAIL
+
+ [.target > * 7]
+ expected: FAIL
+
+ [.target > * 9]
+ expected: FAIL
+
+ [.target > * 11]
+ expected: FAIL
+
+ [.target > * 13]
+ expected: FAIL
+
+ [.target > * 15]
+ expected: FAIL
+
+ [.target > * 17]
+ expected: FAIL
+
+ [.target > * 19]
+ expected: FAIL
+
+ [.target > * 21]
+ expected: FAIL
+
+ [.target > * 23]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-multicol-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-multicol-001.html.ini
new file mode 100644
index 00000000000..cb7ea8add36
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-multicol-001.html.ini
@@ -0,0 +1,36 @@
+[grid-align-baseline-multicol-001.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 2]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 4]
+ expected: FAIL
+
+ [.target > * 5]
+ expected: FAIL
+
+ [.target > * 6]
+ expected: FAIL
+
+ [.target > * 7]
+ expected: FAIL
+
+ [.target > * 8]
+ expected: FAIL
+
+ [.target > * 9]
+ expected: FAIL
+
+ [.target > * 10]
+ expected: FAIL
+
+ [.target > * 11]
+ expected: FAIL
+
+ [.target > * 12]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-multicol-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-multicol-002.html.ini
new file mode 100644
index 00000000000..50c6dbce9bb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-multicol-002.html.ini
@@ -0,0 +1,18 @@
+[grid-align-baseline-multicol-002.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 5]
+ expected: FAIL
+
+ [.target > * 7]
+ expected: FAIL
+
+ [.target > * 9]
+ expected: FAIL
+
+ [.target > * 11]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-multicol-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-multicol-003.html.ini
new file mode 100644
index 00000000000..74551144173
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-multicol-003.html.ini
@@ -0,0 +1,18 @@
+[grid-align-baseline-multicol-003.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 5]
+ expected: FAIL
+
+ [.target > * 7]
+ expected: FAIL
+
+ [.target > * 9]
+ expected: FAIL
+
+ [.target > * 11]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-overflow-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-overflow-001.html.ini
new file mode 100644
index 00000000000..66140f95543
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-overflow-001.html.ini
@@ -0,0 +1,30 @@
+[grid-align-baseline-overflow-001.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 2]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 4]
+ expected: FAIL
+
+ [.target > * 6]
+ expected: FAIL
+
+ [.target > * 8]
+ expected: FAIL
+
+ [.target > * 9]
+ expected: FAIL
+
+ [.target > * 10]
+ expected: FAIL
+
+ [.target > * 11]
+ expected: FAIL
+
+ [.target > * 12]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-overflow-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-overflow-002.html.ini
new file mode 100644
index 00000000000..fa3b5ee1c83
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-overflow-002.html.ini
@@ -0,0 +1,15 @@
+[grid-align-baseline-overflow-002.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 5]
+ expected: FAIL
+
+ [.target > * 7]
+ expected: FAIL
+
+ [.target > * 10]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-overflow-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-overflow-003.html.ini
new file mode 100644
index 00000000000..5e35745eec7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-overflow-003.html.ini
@@ -0,0 +1,15 @@
+[grid-align-baseline-overflow-003.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 8]
+ expected: FAIL
+
+ [.target > * 9]
+ expected: FAIL
+
+ [.target > * 11]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-table-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-table-001.html.ini
new file mode 100644
index 00000000000..c05db7e5e3e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-table-001.html.ini
@@ -0,0 +1,24 @@
+[grid-align-baseline-table-001.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 2]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
+
+ [.target > * 4]
+ expected: FAIL
+
+ [.target > * 5]
+ expected: FAIL
+
+ [.target > * 6]
+ expected: FAIL
+
+ [.target > * 7]
+ expected: FAIL
+
+ [.target > * 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-table-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-table-002.html.ini
new file mode 100644
index 00000000000..5e0b2b36e6d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-table-002.html.ini
@@ -0,0 +1,6 @@
+[grid-align-baseline-table-002.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-table-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-table-003.html.ini
new file mode 100644
index 00000000000..5d52530f7b7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-table-003.html.ini
@@ -0,0 +1,6 @@
+[grid-align-baseline-table-003.html]
+ [.target > * 1]
+ expected: FAIL
+
+ [.target > * 3]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-vertical.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-vertical.html.ini
new file mode 100644
index 00000000000..a8a2e279086
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline-vertical.html.ini
@@ -0,0 +1,18 @@
+[grid-align-baseline-vertical.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [Additional Check 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline.html.ini
new file mode 100644
index 00000000000..385af34bfeb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-baseline.html.ini
@@ -0,0 +1,27 @@
+[grid-align-baseline.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [Additional Check 1]
+ expected: FAIL
+
+ [Additional Check 2]
+ expected: FAIL
+
+ [Additional Check 3]
+ expected: FAIL
+
+ [Additional Check 4]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.worker.js.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html.ini
index 47935a7a5d0..c51d89e8465 100644
--- a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.worker.js.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html.ini
@@ -1,78 +1,72 @@
-[2d.composite.grid.filter.no_shadow.pattern.worker.html]
- [2d]
+[grid-align-content-distribution-vertical-lr.html]
+ [.grid 1]
expected: FAIL
- [2d 1]
+ [.grid 2]
expected: FAIL
- [2d 2]
+ [.grid 3]
expected: FAIL
- [2d 3]
+ [.grid 4]
expected: FAIL
- [2d 4]
+ [.grid 5]
expected: FAIL
- [2d 5]
+ [.grid 6]
expected: FAIL
- [2d 6]
+ [.grid 7]
expected: FAIL
- [2d 7]
+ [.grid 8]
expected: FAIL
- [2d 8]
+ [.grid 9]
expected: FAIL
- [2d 9]
+ [.grid 10]
expected: FAIL
- [2d 10]
+ [.grid 11]
expected: FAIL
- [2d 11]
+ [.grid 12]
expected: FAIL
- [2d 12]
+ [.grid 13]
expected: FAIL
- [2d 13]
+ [.grid 14]
expected: FAIL
- [2d 14]
+ [.grid 15]
expected: FAIL
- [2d 15]
+ [.grid 16]
expected: FAIL
- [2d 16]
+ [.grid 17]
expected: FAIL
- [2d 17]
+ [.grid 18]
expected: FAIL
- [2d 18]
+ [.grid 19]
expected: FAIL
- [2d 19]
+ [.grid 20]
expected: FAIL
- [2d 20]
+ [.grid 21]
expected: FAIL
- [2d 21]
+ [.grid 22]
expected: FAIL
- [2d 22]
+ [.grid 23]
expected: FAIL
- [2d 23]
- expected: FAIL
-
- [2d 24]
- expected: FAIL
-
- [2d 25]
+ [.grid 24]
expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.worker.js.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html.ini
index f430bd98558..e7cc602f6d9 100644
--- a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.worker.js.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html.ini
@@ -1,78 +1,72 @@
-[2d.composite.grid.filter.shadow.drawImage.worker.html]
- [2d]
+[grid-align-content-distribution-vertical-rl.html]
+ [.grid 1]
expected: FAIL
- [2d 1]
+ [.grid 2]
expected: FAIL
- [2d 2]
+ [.grid 3]
expected: FAIL
- [2d 3]
+ [.grid 4]
expected: FAIL
- [2d 4]
+ [.grid 5]
expected: FAIL
- [2d 5]
+ [.grid 6]
expected: FAIL
- [2d 6]
+ [.grid 7]
expected: FAIL
- [2d 7]
+ [.grid 8]
expected: FAIL
- [2d 8]
+ [.grid 9]
expected: FAIL
- [2d 9]
+ [.grid 10]
expected: FAIL
- [2d 10]
+ [.grid 11]
expected: FAIL
- [2d 11]
+ [.grid 12]
expected: FAIL
- [2d 12]
+ [.grid 13]
expected: FAIL
- [2d 13]
+ [.grid 14]
expected: FAIL
- [2d 14]
+ [.grid 15]
expected: FAIL
- [2d 15]
+ [.grid 16]
expected: FAIL
- [2d 16]
+ [.grid 17]
expected: FAIL
- [2d 17]
+ [.grid 18]
expected: FAIL
- [2d 18]
+ [.grid 19]
expected: FAIL
- [2d 19]
+ [.grid 20]
expected: FAIL
- [2d 20]
+ [.grid 21]
expected: FAIL
- [2d 21]
+ [.grid 22]
expected: FAIL
- [2d 22]
+ [.grid 23]
expected: FAIL
- [2d 23]
- expected: FAIL
-
- [2d 24]
- expected: FAIL
-
- [2d 25]
+ [.grid 24]
expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.worker.js.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-distribution.html.ini
index 79398738220..9693178ecd2 100644
--- a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.worker.js.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-distribution.html.ini
@@ -1,78 +1,72 @@
-[2d.composite.grid.filter.shadow.pattern.worker.html]
- [2d]
+[grid-align-content-distribution.html]
+ [.grid 1]
expected: FAIL
- [2d 1]
+ [.grid 2]
expected: FAIL
- [2d 2]
+ [.grid 3]
expected: FAIL
- [2d 3]
+ [.grid 4]
expected: FAIL
- [2d 4]
+ [.grid 5]
expected: FAIL
- [2d 5]
+ [.grid 6]
expected: FAIL
- [2d 6]
+ [.grid 7]
expected: FAIL
- [2d 7]
+ [.grid 8]
expected: FAIL
- [2d 8]
+ [.grid 9]
expected: FAIL
- [2d 9]
+ [.grid 10]
expected: FAIL
- [2d 10]
+ [.grid 11]
expected: FAIL
- [2d 11]
+ [.grid 12]
expected: FAIL
- [2d 12]
+ [.grid 13]
expected: FAIL
- [2d 13]
+ [.grid 14]
expected: FAIL
- [2d 14]
+ [.grid 15]
expected: FAIL
- [2d 15]
+ [.grid 16]
expected: FAIL
- [2d 16]
+ [.grid 17]
expected: FAIL
- [2d 17]
+ [.grid 18]
expected: FAIL
- [2d 18]
+ [.grid 19]
expected: FAIL
- [2d 19]
+ [.grid 20]
expected: FAIL
- [2d 20]
+ [.grid 21]
expected: FAIL
- [2d 21]
+ [.grid 22]
expected: FAIL
- [2d 22]
+ [.grid 23]
expected: FAIL
- [2d 23]
- expected: FAIL
-
- [2d 24]
- expected: FAIL
-
- [2d 25]
+ [.grid 24]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-vertical-lr.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-vertical-lr.html.ini
new file mode 100644
index 00000000000..338410faee9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-vertical-lr.html.ini
@@ -0,0 +1,18 @@
+[grid-align-content-vertical-lr.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-vertical-rl.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-vertical-rl.html.ini
new file mode 100644
index 00000000000..90fe1608276
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content-vertical-rl.html.ini
@@ -0,0 +1,18 @@
+[grid-align-content-vertical-rl.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content.html.ini
new file mode 100644
index 00000000000..c8e2aca0e8a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-content.html.ini
@@ -0,0 +1,39 @@
+[grid-align-content.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-margin-border-padding-vertical-lr.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-margin-border-padding-vertical-lr.html.ini
new file mode 100644
index 00000000000..2ec6eb42d43
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-margin-border-padding-vertical-lr.html.ini
@@ -0,0 +1,54 @@
+[grid-align-justify-margin-border-padding-vertical-lr.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-margin-border-padding-vertical-rl.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-margin-border-padding-vertical-rl.html.ini
new file mode 100644
index 00000000000..983c3df6a2a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-margin-border-padding-vertical-rl.html.ini
@@ -0,0 +1,54 @@
+[grid-align-justify-margin-border-padding-vertical-rl.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-margin-border-padding.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-margin-border-padding.html.ini
new file mode 100644
index 00000000000..0b9abf1052e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-margin-border-padding.html.ini
@@ -0,0 +1,54 @@
+[grid-align-justify-margin-border-padding.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-overflow.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-overflow.html.ini
new file mode 100644
index 00000000000..8b2d9a5b8f1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-overflow.html.ini
@@ -0,0 +1,24 @@
+[grid-align-justify-overflow.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-stretch-with-orthogonal-flows.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-stretch-with-orthogonal-flows.html.ini
new file mode 100644
index 00000000000..ea0fcf04aeb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-stretch-with-orthogonal-flows.html.ini
@@ -0,0 +1,24 @@
+[grid-align-justify-stretch-with-orthogonal-flows.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-stretch.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-stretch.html.ini
new file mode 100644
index 00000000000..04176dfc8a5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-justify-stretch.html.ini
@@ -0,0 +1,48 @@
+[grid-align-justify-stretch.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-stretching-replaced-items.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-stretching-replaced-items.html.ini
new file mode 100644
index 00000000000..5a9abf449f6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align-stretching-replaced-items.html.ini
@@ -0,0 +1,3 @@
+[grid-align-stretching-replaced-items.html]
+ [.grid 3]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align.html.ini
new file mode 100644
index 00000000000..9fbbf317852
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-align.html.ini
@@ -0,0 +1,48 @@
+[grid-align.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-001.html.ini
new file mode 100644
index 00000000000..ee603acf060
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-001.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-001.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-002.html.ini
new file mode 100644
index 00000000000..a6c22912cdf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-002.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-002.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-003.html.ini
new file mode 100644
index 00000000000..8eb8edb523d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-003.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-003.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-004.html.ini
new file mode 100644
index 00000000000..f5de5114ba9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-004.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-004.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-005.html.ini
new file mode 100644
index 00000000000..dbffd57624f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-005.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-005.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-006.html.ini
new file mode 100644
index 00000000000..bbdae1d8d3b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-006.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-006.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-007.html.ini
new file mode 100644
index 00000000000..1f03c343e7a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-007.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-007.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-008.html.ini
new file mode 100644
index 00000000000..54c766d31bb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-008.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-008.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-009.html.ini
new file mode 100644
index 00000000000..5eebd8899db
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-009.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-009.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-010.html.ini
new file mode 100644
index 00000000000..b8708c98987
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-010.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-010.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-011.html.ini
new file mode 100644
index 00000000000..dac7535e882
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-011.html.ini
@@ -0,0 +1,3 @@
+[grid-alignment-implies-size-change-011.html]
+ [.before 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-012.html.ini
new file mode 100644
index 00000000000..1c61cc4833a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-012.html.ini
@@ -0,0 +1,3 @@
+[grid-alignment-implies-size-change-012.html]
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-013.html.ini
new file mode 100644
index 00000000000..33f3a60c0cf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-013.html.ini
@@ -0,0 +1,3 @@
+[grid-alignment-implies-size-change-013.html]
+ [.before 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-014.html.ini
new file mode 100644
index 00000000000..dfa9f98a58b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-014.html.ini
@@ -0,0 +1,3 @@
+[grid-alignment-implies-size-change-014.html]
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-017.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-017.html.ini
new file mode 100644
index 00000000000..790af09bee8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-017.html.ini
@@ -0,0 +1,3 @@
+[grid-alignment-implies-size-change-017.html]
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-018.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-018.html.ini
new file mode 100644
index 00000000000..6c33efb9667
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-018.html.ini
@@ -0,0 +1,3 @@
+[grid-alignment-implies-size-change-018.html]
+ [.before 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-019.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-019.html.ini
new file mode 100644
index 00000000000..bf4735d75cc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-019.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-019.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-020.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-020.html.ini
new file mode 100644
index 00000000000..2a020765488
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-020.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-020.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-021.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-021.html.ini
new file mode 100644
index 00000000000..0b696f2b113
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-021.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-021.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-022.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-022.html.ini
new file mode 100644
index 00000000000..e9857292ec6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-022.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-022.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-023.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-023.html.ini
new file mode 100644
index 00000000000..26f47b28c39
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-023.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-023.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-024.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-024.html.ini
new file mode 100644
index 00000000000..bc7e0a0ec72
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-024.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-024.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-025.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-025.html.ini
new file mode 100644
index 00000000000..154b0d739bf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-025.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-025.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-026.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-026.html.ini
new file mode 100644
index 00000000000..6e09bb47666
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-026.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-026.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-027.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-027.html.ini
new file mode 100644
index 00000000000..8cf576e1b8c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-027.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-027.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-028.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-028.html.ini
new file mode 100644
index 00000000000..2e683c7b616
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-028.html.ini
@@ -0,0 +1,6 @@
+[grid-alignment-implies-size-change-028.html]
+ [.before 1]
+ expected: FAIL
+
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-029.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-029.html.ini
new file mode 100644
index 00000000000..97bc9a5d1b4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-029.html.ini
@@ -0,0 +1,3 @@
+[grid-alignment-implies-size-change-029.html]
+ [.before 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-030.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-030.html.ini
new file mode 100644
index 00000000000..7edad3d3815
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-030.html.ini
@@ -0,0 +1,3 @@
+[grid-alignment-implies-size-change-030.html]
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-031.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-031.html.ini
new file mode 100644
index 00000000000..d635ed4f26c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-031.html.ini
@@ -0,0 +1,3 @@
+[grid-alignment-implies-size-change-031.html]
+ [.before 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-032.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-032.html.ini
new file mode 100644
index 00000000000..a1ff2cf026a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-032.html.ini
@@ -0,0 +1,3 @@
+[grid-alignment-implies-size-change-032.html]
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-035.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-035.html.ini
new file mode 100644
index 00000000000..8d9c664c0bd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-035.html.ini
@@ -0,0 +1,3 @@
+[grid-alignment-implies-size-change-035.html]
+ [.after 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-036.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-036.html.ini
new file mode 100644
index 00000000000..31f1b787e3d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-implies-size-change-036.html.ini
@@ -0,0 +1,3 @@
+[grid-alignment-implies-size-change-036.html]
+ [.before 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-001.html.ini
new file mode 100644
index 00000000000..44f1d4974a0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-001.html.ini
@@ -0,0 +1,18 @@
+[grid-alignment-style-changes-001.html]
+ [.before 1]
+ expected: FAIL
+
+ [.before 2]
+ expected: FAIL
+
+ [.before 3]
+ expected: FAIL
+
+ [.after 4]
+ expected: FAIL
+
+ [.after 5]
+ expected: FAIL
+
+ [.after 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-002.html.ini
new file mode 100644
index 00000000000..4dfe925977a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-002.html.ini
@@ -0,0 +1,18 @@
+[grid-alignment-style-changes-002.html]
+ [.before 1]
+ expected: FAIL
+
+ [.before 2]
+ expected: FAIL
+
+ [.before 3]
+ expected: FAIL
+
+ [.after 4]
+ expected: FAIL
+
+ [.after 5]
+ expected: FAIL
+
+ [.after 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-003.html.ini
new file mode 100644
index 00000000000..38c5d96356f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-003.html.ini
@@ -0,0 +1,18 @@
+[grid-alignment-style-changes-003.html]
+ [.before 1]
+ expected: FAIL
+
+ [.before 2]
+ expected: FAIL
+
+ [.before 3]
+ expected: FAIL
+
+ [.after 4]
+ expected: FAIL
+
+ [.after 5]
+ expected: FAIL
+
+ [.after 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-004.html.ini
new file mode 100644
index 00000000000..2b321eda9e4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-004.html.ini
@@ -0,0 +1,18 @@
+[grid-alignment-style-changes-004.html]
+ [.before 1]
+ expected: FAIL
+
+ [.before 2]
+ expected: FAIL
+
+ [.before 3]
+ expected: FAIL
+
+ [.after 4]
+ expected: FAIL
+
+ [.after 5]
+ expected: FAIL
+
+ [.after 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-005.html.ini
new file mode 100644
index 00000000000..2722f421460
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-005.html.ini
@@ -0,0 +1,18 @@
+[grid-alignment-style-changes-005.html]
+ [.before 1]
+ expected: FAIL
+
+ [.before 2]
+ expected: FAIL
+
+ [.before 3]
+ expected: FAIL
+
+ [.after 4]
+ expected: FAIL
+
+ [.after 5]
+ expected: FAIL
+
+ [.after 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-006.html.ini
new file mode 100644
index 00000000000..73a1bdb8803
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-006.html.ini
@@ -0,0 +1,18 @@
+[grid-alignment-style-changes-006.html]
+ [.before 1]
+ expected: FAIL
+
+ [.before 2]
+ expected: FAIL
+
+ [.before 3]
+ expected: FAIL
+
+ [.after 4]
+ expected: FAIL
+
+ [.after 5]
+ expected: FAIL
+
+ [.after 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-007.html.ini
new file mode 100644
index 00000000000..2d237b5af39
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-007.html.ini
@@ -0,0 +1,18 @@
+[grid-alignment-style-changes-007.html]
+ [.before 1]
+ expected: FAIL
+
+ [.before 2]
+ expected: FAIL
+
+ [.before 3]
+ expected: FAIL
+
+ [.after 4]
+ expected: FAIL
+
+ [.after 5]
+ expected: FAIL
+
+ [.after 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-008.html.ini
new file mode 100644
index 00000000000..1f09625b7a2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-alignment-style-changes-008.html.ini
@@ -0,0 +1,18 @@
+[grid-alignment-style-changes-008.html]
+ [.before 1]
+ expected: FAIL
+
+ [.before 2]
+ expected: FAIL
+
+ [.before 3]
+ expected: FAIL
+
+ [.after 4]
+ expected: FAIL
+
+ [.after 5]
+ expected: FAIL
+
+ [.after 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-001.html.ini
new file mode 100644
index 00000000000..65979622a7e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-001.html.ini
@@ -0,0 +1,2 @@
+[grid-baseline-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-002.html.ini
new file mode 100644
index 00000000000..c14e03a1f61
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-002.html.ini
@@ -0,0 +1,2 @@
+[grid-baseline-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-003.html.ini
new file mode 100644
index 00000000000..915c2280520
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-003.html.ini
@@ -0,0 +1,2 @@
+[grid-baseline-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-004.html.ini
new file mode 100644
index 00000000000..06470fb8737
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-004.html.ini
@@ -0,0 +1,54 @@
+[grid-baseline-004.html]
+ [.grid, container 1]
+ expected: FAIL
+
+ [.grid, container 2]
+ expected: FAIL
+
+ [.grid, container 3]
+ expected: FAIL
+
+ [.grid, container 4]
+ expected: FAIL
+
+ [.grid, container 5]
+ expected: FAIL
+
+ [.grid, container 6]
+ expected: FAIL
+
+ [.grid, container 7]
+ expected: FAIL
+
+ [.grid, container 8]
+ expected: FAIL
+
+ [.grid, container 9]
+ expected: FAIL
+
+ [.grid, container 10]
+ expected: FAIL
+
+ [.grid, container 11]
+ expected: FAIL
+
+ [.grid, container 12]
+ expected: FAIL
+
+ [.grid, container 13]
+ expected: FAIL
+
+ [.grid, container 14]
+ expected: FAIL
+
+ [.grid, container 15]
+ expected: FAIL
+
+ [.grid, container 16]
+ expected: FAIL
+
+ [.grid, container 17]
+ expected: FAIL
+
+ [.grid, container 18]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-align-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-align-001.html.ini
new file mode 100644
index 00000000000..fbc10e13823
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-align-001.html.ini
@@ -0,0 +1,2 @@
+[grid-baseline-align-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-justify-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-justify-001.html.ini
new file mode 100644
index 00000000000..68eb98eb2a4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-baseline-justify-001.html.ini
@@ -0,0 +1,2 @@
+[grid-baseline-justify-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-001.html.ini
new file mode 100644
index 00000000000..75d9920f46f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-001.html.ini
@@ -0,0 +1,6 @@
+[grid-block-axis-alignment-auto-margins-001.html]
+ [#grid 1]
+ expected: FAIL
+
+ [#grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-002.html.ini
new file mode 100644
index 00000000000..932379d26ff
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-002.html.ini
@@ -0,0 +1,6 @@
+[grid-block-axis-alignment-auto-margins-002.html]
+ [#grid 1]
+ expected: FAIL
+
+ [#grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-003.html.ini
new file mode 100644
index 00000000000..0802789bca5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-003.html.ini
@@ -0,0 +1,6 @@
+[grid-block-axis-alignment-auto-margins-003.html]
+ [#grid 1]
+ expected: FAIL
+
+ [#grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-004.html.ini
new file mode 100644
index 00000000000..51305731fa0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-004.html.ini
@@ -0,0 +1,6 @@
+[grid-block-axis-alignment-auto-margins-004.html]
+ [#grid 1]
+ expected: FAIL
+
+ [#grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-005.html.ini
new file mode 100644
index 00000000000..1d9efc3afbf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-005.html.ini
@@ -0,0 +1,6 @@
+[grid-block-axis-alignment-auto-margins-005.html]
+ [#grid 1]
+ expected: FAIL
+
+ [#grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-006.html.ini
new file mode 100644
index 00000000000..a8034499983
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-006.html.ini
@@ -0,0 +1,6 @@
+[grid-block-axis-alignment-auto-margins-006.html]
+ [#grid 1]
+ expected: FAIL
+
+ [#grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-007.html.ini
new file mode 100644
index 00000000000..8d2b059971a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-block-axis-alignment-auto-margins-007.html.ini
@@ -0,0 +1,6 @@
+[grid-block-axis-alignment-auto-margins-007.html]
+ [#grid 1]
+ expected: FAIL
+
+ [#grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-001.html.ini
new file mode 100644
index 00000000000..e0b238ea50c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-001.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-002.html.ini
new file mode 100644
index 00000000000..d3d22abfa97
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-002.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-003.html.ini
new file mode 100644
index 00000000000..e9a4892d631
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-003.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-003.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-004.html.ini
new file mode 100644
index 00000000000..32dca60c916
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-004.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-004.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-005.html.ini
new file mode 100644
index 00000000000..8cd406c66fb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-005.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-005.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-006.html.ini
new file mode 100644
index 00000000000..a3ccd41f149
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-006.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-006.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-007.html.ini
new file mode 100644
index 00000000000..d16ee37d40c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-007.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-007.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-008.html.ini
new file mode 100644
index 00000000000..dffaef328e1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-008.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-008.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-009.html.ini
new file mode 100644
index 00000000000..bc019123c1b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-009.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-009.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-010.html.ini
new file mode 100644
index 00000000000..7cab4aa2621
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-010.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-010.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-011.html.ini
new file mode 100644
index 00000000000..573177c892d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-011.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-011.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-012.html.ini
new file mode 100644
index 00000000000..b2455a44d2f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-012.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-012.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-013.html.ini
new file mode 100644
index 00000000000..d41c83a6a4a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-013.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-013.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-014.html.ini
new file mode 100644
index 00000000000..f86e1e55a69
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-014.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-014.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-015.html.ini
new file mode 100644
index 00000000000..73a617b8a8f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-015.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-015.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-016.html.ini
new file mode 100644
index 00000000000..44da8f647a6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-016.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-016.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-017.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-017.html.ini
new file mode 100644
index 00000000000..6e2b0361490
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-017.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-alignment-positioned-items-017.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-sticky-positioned-items-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-sticky-positioned-items-001.html.ini
new file mode 100644
index 00000000000..354579885d4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-sticky-positioned-items-001.html.ini
@@ -0,0 +1,6 @@
+[grid-column-axis-alignment-sticky-positioned-items-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-sticky-positioned-items-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-sticky-positioned-items-002.html.ini
new file mode 100644
index 00000000000..10eb51fdf1f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-alignment-sticky-positioned-items-002.html.ini
@@ -0,0 +1,6 @@
+[grid-column-axis-alignment-sticky-positioned-items-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-001.html.ini
new file mode 100644
index 00000000000..35a1a71456f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-001.html.ini
@@ -0,0 +1,12 @@
+[grid-column-axis-self-baseline-synthesized-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-002.html.ini
new file mode 100644
index 00000000000..0181b3cb097
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-002.html.ini
@@ -0,0 +1,9 @@
+[grid-column-axis-self-baseline-synthesized-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-003.html.ini
new file mode 100644
index 00000000000..5658d7633b3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-003.html.ini
@@ -0,0 +1,9 @@
+[grid-column-axis-self-baseline-synthesized-003.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-004.html.ini
new file mode 100644
index 00000000000..2a76dd17a3d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-004.html.ini
@@ -0,0 +1,9 @@
+[grid-column-axis-self-baseline-synthesized-004.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-005.html.ini
new file mode 100644
index 00000000000..9b34c4da14a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-005.html.ini
@@ -0,0 +1,6 @@
+[grid-column-axis-self-baseline-synthesized-005.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-container-auto-margins-scrollbars-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-container-auto-margins-scrollbars-001.html.ini
new file mode 100644
index 00000000000..2c93394b754
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-container-auto-margins-scrollbars-001.html.ini
@@ -0,0 +1,2 @@
+[grid-container-auto-margins-scrollbars-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-container-baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-container-baseline-001.html.ini
new file mode 100644
index 00000000000..70e2d8f04ac
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-container-baseline-001.html.ini
@@ -0,0 +1,21 @@
+[grid-container-baseline-001.html]
+ [.wrapper 1]
+ expected: FAIL
+
+ [.wrapper 2]
+ expected: FAIL
+
+ [.wrapper 3]
+ expected: FAIL
+
+ [.wrapper 8]
+ expected: FAIL
+
+ [.wrapper 9]
+ expected: FAIL
+
+ [.wrapper 10]
+ expected: FAIL
+
+ [.wrapper 11]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-and-self-alignment-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-and-self-alignment-001.html.ini
new file mode 100644
index 00000000000..f9d1a8f04c4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-and-self-alignment-001.html.ini
@@ -0,0 +1,72 @@
+[grid-content-alignment-and-self-alignment-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-and-self-alignment-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-and-self-alignment-002.html.ini
new file mode 100644
index 00000000000..a3f532d72bb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-and-self-alignment-002.html.ini
@@ -0,0 +1,96 @@
+[grid-content-alignment-and-self-alignment-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-auto-sized-tracks-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-auto-sized-tracks-001.html.ini
new file mode 100644
index 00000000000..19af1962463
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-auto-sized-tracks-001.html.ini
@@ -0,0 +1,24 @@
+[grid-content-alignment-auto-sized-tracks-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-overflow-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-overflow-001.html.ini
new file mode 100644
index 00000000000..2ebdda05fa4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-overflow-001.html.ini
@@ -0,0 +1,42 @@
+[grid-content-alignment-overflow-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-overflow-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-overflow-002.html.ini
new file mode 100644
index 00000000000..1bfa8d90e7c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-overflow-002.html.ini
@@ -0,0 +1,42 @@
+[grid-content-alignment-overflow-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-second-pass-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-second-pass-001.html.ini
new file mode 100644
index 00000000000..31fed162922
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-second-pass-001.html.ini
@@ -0,0 +1,24 @@
+[grid-content-alignment-second-pass-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-second-pass-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-second-pass-002.html.ini
new file mode 100644
index 00000000000..c6bbd275dc4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-second-pass-002.html.ini
@@ -0,0 +1,24 @@
+[grid-content-alignment-second-pass-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-with-abspos-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-with-abspos-001.html.ini
new file mode 100644
index 00000000000..efff2a2620a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-with-abspos-001.html.ini
@@ -0,0 +1,3 @@
+[grid-content-alignment-with-abspos-001.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-with-span-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-with-span-001.html.ini
new file mode 100644
index 00000000000..cb310e22ffd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-with-span-001.html.ini
@@ -0,0 +1,24 @@
+[grid-content-alignment-with-span-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-with-span-vertical-lr-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-with-span-vertical-lr-001.html.ini
new file mode 100644
index 00000000000..a782dc46012
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-with-span-vertical-lr-001.html.ini
@@ -0,0 +1,24 @@
+[grid-content-alignment-with-span-vertical-lr-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-with-span-vertical-rl-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-with-span-vertical-rl-001.html.ini
new file mode 100644
index 00000000000..4be35fa9acf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-alignment-with-span-vertical-rl-001.html.ini
@@ -0,0 +1,24 @@
+[grid-content-alignment-with-span-vertical-rl-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-001.html.ini
new file mode 100644
index 00000000000..107cc4d8915
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-001.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-002.html.ini
new file mode 100644
index 00000000000..ee2204ae95b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-002.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-003.html.ini
new file mode 100644
index 00000000000..c8bd3940132
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-003.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-004.html.ini
new file mode 100644
index 00000000000..4630d4e85e2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-004.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-005.html.ini
new file mode 100644
index 00000000000..848f6b87eb2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-005.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-006.html.ini
new file mode 100644
index 00000000000..bda4b27a5cf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-006.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-007.html.ini
new file mode 100644
index 00000000000..6a6ee607045
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-007.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-008.html.ini
new file mode 100644
index 00000000000..35764403fa0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-008.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-009.html.ini
new file mode 100644
index 00000000000..54a7ab7d3a2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-009.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-009.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-010.html.ini
new file mode 100644
index 00000000000..be13034100d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-010.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-010.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-011.html.ini
new file mode 100644
index 00000000000..99266cf94a5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-011.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-011.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-012.html.ini
new file mode 100644
index 00000000000..c83a6a2ed56
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-012.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-012.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-013.html.ini
new file mode 100644
index 00000000000..c7cacfbf34f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-013.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-013.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-014.html.ini
new file mode 100644
index 00000000000..27c6c122b8c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-014.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-014.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-015.html.ini
new file mode 100644
index 00000000000..7ca25f641be
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-015.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-015.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-016.html.ini
new file mode 100644
index 00000000000..7981c7ff690
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-016.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-016.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-017.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-017.html.ini
new file mode 100644
index 00000000000..20c6a9aac5a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-017.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-017.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-018.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-018.html.ini
new file mode 100644
index 00000000000..cc7a98f2579
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-018.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-018.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-019.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-019.html.ini
new file mode 100644
index 00000000000..3e0f0db48b4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-019.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-019.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-020.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-020.html.ini
new file mode 100644
index 00000000000..8c0b5a5562f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-020.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-020.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-021.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-021.html.ini
new file mode 100644
index 00000000000..296880bb407
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-021.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-021.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-022.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-022.html.ini
new file mode 100644
index 00000000000..cf46f8d3807
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-022.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-022.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-023.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-023.html.ini
new file mode 100644
index 00000000000..3a336494acc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-023.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-023.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-024.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-024.html.ini
new file mode 100644
index 00000000000..430ffdd4636
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-024.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-024.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-025.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-025.html.ini
new file mode 100644
index 00000000000..67634c1a51e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-025.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-025.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-001.html.ini
new file mode 100644
index 00000000000..37f1fd1547f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-001.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-002.html.ini
new file mode 100644
index 00000000000..be0e0f0c69a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-002.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-003.html.ini
new file mode 100644
index 00000000000..a0403fceef8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-003.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-004.html.ini
new file mode 100644
index 00000000000..e3cba57befa
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-004.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-005.html.ini
new file mode 100644
index 00000000000..2028fb699ad
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-005.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-006.html.ini
new file mode 100644
index 00000000000..cb8732a54a2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-006.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-007.html.ini
new file mode 100644
index 00000000000..6ea324fc944
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-007.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-008.html.ini
new file mode 100644
index 00000000000..740b879cad5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-008.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-009.html.ini
new file mode 100644
index 00000000000..90df34fd254
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-009.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-009.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-010.html.ini
new file mode 100644
index 00000000000..65d546ab861
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-010.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-010.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-011.html.ini
new file mode 100644
index 00000000000..98a6dd45d5c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-011.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-011.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-012.html.ini
new file mode 100644
index 00000000000..30616673339
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-012.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-012.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-013.html.ini
new file mode 100644
index 00000000000..13d3b3f1bfb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-013.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-013.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-014.html.ini
new file mode 100644
index 00000000000..4ea957d0b44
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-014.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-014.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-015.html.ini
new file mode 100644
index 00000000000..cf9ba557cb4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-015.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-015.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-016.html.ini
new file mode 100644
index 00000000000..439d76f3fc2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-016.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-016.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-017.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-017.html.ini
new file mode 100644
index 00000000000..0b81b20e005
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-017.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-017.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-018.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-018.html.ini
new file mode 100644
index 00000000000..6db39a34da8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-018.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-018.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-019.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-019.html.ini
new file mode 100644
index 00000000000..4e5d21fbb09
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-019.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-019.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-020.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-020.html.ini
new file mode 100644
index 00000000000..ec0d3ec86ad
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-020.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-020.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-021.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-021.html.ini
new file mode 100644
index 00000000000..504241069a8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-021.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-021.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-022.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-022.html.ini
new file mode 100644
index 00000000000..ee1b87bb4ed
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-022.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-022.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-023.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-023.html.ini
new file mode 100644
index 00000000000..7cc28e4bc7b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-023.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-023.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-024.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-024.html.ini
new file mode 100644
index 00000000000..57a764b4350
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-content-distribution-with-collapsed-tracks-024.html.ini
@@ -0,0 +1,2 @@
+[grid-content-distribution-with-collapsed-tracks-024.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-fit-content-tracks-dont-stretch-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-fit-content-tracks-dont-stretch-001.html.ini
new file mode 100644
index 00000000000..3bd61d1ae4d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-fit-content-tracks-dont-stretch-001.html.ini
@@ -0,0 +1,108 @@
+[grid-fit-content-tracks-dont-stretch-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-001.html.ini
new file mode 100644
index 00000000000..0b6903ccb95
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-001.html.ini
@@ -0,0 +1,2 @@
+[grid-gutters-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-002.html.ini
new file mode 100644
index 00000000000..ffc2d9bdd20
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-002.html.ini
@@ -0,0 +1,2 @@
+[grid-gutters-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-003.html.ini
new file mode 100644
index 00000000000..44bb08096a8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-003.html.ini
@@ -0,0 +1,2 @@
+[grid-gutters-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-004.html.ini
new file mode 100644
index 00000000000..efaf06dd9d9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-004.html.ini
@@ -0,0 +1,2 @@
+[grid-gutters-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-005.html.ini
new file mode 100644
index 00000000000..c0ae0d07584
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-005.html.ini
@@ -0,0 +1,2 @@
+[grid-gutters-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-006.html.ini
new file mode 100644
index 00000000000..ad9f89d1847
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-006.html.ini
@@ -0,0 +1,2 @@
+[grid-gutters-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-007.html.ini
new file mode 100644
index 00000000000..33a4f329b0b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-007.html.ini
@@ -0,0 +1,2 @@
+[grid-gutters-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-008.html.ini
new file mode 100644
index 00000000000..d1a4fcbe633
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-008.html.ini
@@ -0,0 +1,2 @@
+[grid-gutters-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-009.html.ini
new file mode 100644
index 00000000000..10d5a3a4640
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-009.html.ini
@@ -0,0 +1,2 @@
+[grid-gutters-009.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-010.html.ini
new file mode 100644
index 00000000000..5636ad53c03
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-010.html.ini
@@ -0,0 +1,2 @@
+[grid-gutters-010.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-011.html.ini
new file mode 100644
index 00000000000..8e6bf1d943f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-011.html.ini
@@ -0,0 +1,2 @@
+[grid-gutters-011.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-012.html.ini
new file mode 100644
index 00000000000..10228233b3c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-012.html.ini
@@ -0,0 +1,2 @@
+[grid-gutters-012.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-013.html.ini
new file mode 100644
index 00000000000..dc2966f85cd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-013.html.ini
@@ -0,0 +1,2 @@
+[grid-gutters-013.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-014.html.ini
new file mode 100644
index 00000000000..1429e7e04d9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-014.html.ini
@@ -0,0 +1,2 @@
+[grid-gutters-014.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-015.html.ini
new file mode 100644
index 00000000000..01fa5d5c83d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-015.html.ini
@@ -0,0 +1,2 @@
+[grid-gutters-015.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-016.html.ini
new file mode 100644
index 00000000000..5595aa4b815
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-016.html.ini
@@ -0,0 +1,2 @@
+[grid-gutters-016.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.worker.js.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-and-alignment.html.ini
index b864accf02f..7ae5eec44fc 100644
--- a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.worker.js.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-gutters-and-alignment.html.ini
@@ -1,78 +1,75 @@
-[2d.composite.grid.filter.no_shadow.drawImage.worker.html]
- [2d]
+[grid-gutters-and-alignment.html]
+ [.grid 1]
expected: FAIL
- [2d 1]
+ [.grid 2]
expected: FAIL
- [2d 2]
+ [.grid 3]
expected: FAIL
- [2d 3]
+ [.grid 4]
expected: FAIL
- [2d 4]
+ [.grid 5]
expected: FAIL
- [2d 5]
+ [.grid 6]
expected: FAIL
- [2d 6]
+ [.grid 7]
expected: FAIL
- [2d 7]
+ [.grid 8]
expected: FAIL
- [2d 8]
+ [.grid 9]
expected: FAIL
- [2d 9]
+ [.grid 10]
expected: FAIL
- [2d 10]
+ [.grid 11]
expected: FAIL
- [2d 11]
+ [.grid 12]
expected: FAIL
- [2d 12]
+ [.grid 13]
expected: FAIL
- [2d 13]
+ [.grid 14]
expected: FAIL
- [2d 14]
+ [.grid 15]
expected: FAIL
- [2d 15]
+ [.grid 16]
expected: FAIL
- [2d 16]
+ [.grid 17]
expected: FAIL
- [2d 17]
+ [.grid 18]
expected: FAIL
- [2d 18]
+ [.grid 19]
expected: FAIL
- [2d 19]
+ [.grid 20]
expected: FAIL
- [2d 20]
+ [.grid 21]
expected: FAIL
- [2d 21]
+ [.grid 22]
expected: FAIL
- [2d 22]
+ [.grid 23]
expected: FAIL
- [2d 23]
+ [.grid 24]
expected: FAIL
- [2d 24]
- expected: FAIL
-
- [2d 25]
+ [.grid 25]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-001.html.ini
new file mode 100644
index 00000000000..3f4e30d3dbb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-001.html.ini
@@ -0,0 +1,6 @@
+[grid-inline-axis-alignment-auto-margins-001.html]
+ [#grid 1]
+ expected: FAIL
+
+ [#grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-002.html.ini
new file mode 100644
index 00000000000..dff53b156f0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-002.html.ini
@@ -0,0 +1,6 @@
+[grid-inline-axis-alignment-auto-margins-002.html]
+ [#grid 1]
+ expected: FAIL
+
+ [#grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-003.html.ini
new file mode 100644
index 00000000000..49d082486f9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-003.html.ini
@@ -0,0 +1,6 @@
+[grid-inline-axis-alignment-auto-margins-003.html]
+ [#grid 1]
+ expected: FAIL
+
+ [#grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-004.html.ini
new file mode 100644
index 00000000000..a597d52d1f6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-004.html.ini
@@ -0,0 +1,6 @@
+[grid-inline-axis-alignment-auto-margins-004.html]
+ [#grid 1]
+ expected: FAIL
+
+ [#grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-005.html.ini
new file mode 100644
index 00000000000..7de55089840
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-005.html.ini
@@ -0,0 +1,6 @@
+[grid-inline-axis-alignment-auto-margins-005.html]
+ [#grid 1]
+ expected: FAIL
+
+ [#grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-006.html.ini
new file mode 100644
index 00000000000..076d3f32c51
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-006.html.ini
@@ -0,0 +1,6 @@
+[grid-inline-axis-alignment-auto-margins-006.html]
+ [#grid 1]
+ expected: FAIL
+
+ [#grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-007.html.ini
new file mode 100644
index 00000000000..15c698228f8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-axis-alignment-auto-margins-007.html.ini
@@ -0,0 +1,6 @@
+[grid-inline-axis-alignment-auto-margins-007.html]
+ [#grid 1]
+ expected: FAIL
+
+ [#grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-baseline.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-baseline.html.ini
new file mode 100644
index 00000000000..d49348abaef
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-inline-baseline.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-baseline.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows-vertical-lr.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows-vertical-lr.html.ini
new file mode 100644
index 00000000000..b18a77effd6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows-vertical-lr.html.ini
@@ -0,0 +1,12 @@
+[grid-item-alignment-with-orthogonal-flows-vertical-lr.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows-vertical-rl.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows-vertical-rl.html.ini
new file mode 100644
index 00000000000..c29c2d57ed5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows-vertical-rl.html.ini
@@ -0,0 +1,12 @@
+[grid-item-alignment-with-orthogonal-flows-vertical-rl.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows.html.ini
new file mode 100644
index 00000000000..e764ab71db8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-alignment-with-orthogonal-flows.html.ini
@@ -0,0 +1,21 @@
+[grid-item-alignment-with-orthogonal-flows.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-justify-self-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-justify-self-001.html.ini
new file mode 100644
index 00000000000..195a05ce9e7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-justify-self-001.html.ini
@@ -0,0 +1,60 @@
+[grid-item-aspect-ratio-justify-self-001.html]
+ [.item 1]
+ expected: FAIL
+
+ [.item 2]
+ expected: FAIL
+
+ [.item 3]
+ expected: FAIL
+
+ [.item 4]
+ expected: FAIL
+
+ [.item 5]
+ expected: FAIL
+
+ [.item 6]
+ expected: FAIL
+
+ [.item 7]
+ expected: FAIL
+
+ [.item 8]
+ expected: FAIL
+
+ [.item 9]
+ expected: FAIL
+
+ [.item 10]
+ expected: FAIL
+
+ [.item 11]
+ expected: FAIL
+
+ [.item 12]
+ expected: FAIL
+
+ [.item 13]
+ expected: FAIL
+
+ [.item 14]
+ expected: FAIL
+
+ [.item 15]
+ expected: FAIL
+
+ [.item 16]
+ expected: FAIL
+
+ [.item 17]
+ expected: FAIL
+
+ [.item 18]
+ expected: FAIL
+
+ [.item 19]
+ expected: FAIL
+
+ [.item 20]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-justify-self-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-justify-self-002.html.ini
new file mode 100644
index 00000000000..cb276e98604
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-justify-self-002.html.ini
@@ -0,0 +1,60 @@
+[grid-item-aspect-ratio-justify-self-002.html]
+ [.item 1]
+ expected: FAIL
+
+ [.item 2]
+ expected: FAIL
+
+ [.item 3]
+ expected: FAIL
+
+ [.item 4]
+ expected: FAIL
+
+ [.item 5]
+ expected: FAIL
+
+ [.item 6]
+ expected: FAIL
+
+ [.item 7]
+ expected: FAIL
+
+ [.item 8]
+ expected: FAIL
+
+ [.item 9]
+ expected: FAIL
+
+ [.item 10]
+ expected: FAIL
+
+ [.item 11]
+ expected: FAIL
+
+ [.item 12]
+ expected: FAIL
+
+ [.item 13]
+ expected: FAIL
+
+ [.item 14]
+ expected: FAIL
+
+ [.item 15]
+ expected: FAIL
+
+ [.item 16]
+ expected: FAIL
+
+ [.item 17]
+ expected: FAIL
+
+ [.item 18]
+ expected: FAIL
+
+ [.item 19]
+ expected: FAIL
+
+ [.item 20]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-stretch-1.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-stretch-1.html.ini
new file mode 100644
index 00000000000..11f47a434cf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-stretch-1.html.ini
@@ -0,0 +1,2 @@
+[grid-item-aspect-ratio-stretch-1.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-stretch-2.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-stretch-2.html.ini
new file mode 100644
index 00000000000..d0bd55478eb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-stretch-2.html.ini
@@ -0,0 +1,2 @@
+[grid-item-aspect-ratio-stretch-2.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-stretch-3.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-stretch-3.html.ini
new file mode 100644
index 00000000000..9c2f09879ec
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-stretch-3.html.ini
@@ -0,0 +1,2 @@
+[grid-item-aspect-ratio-stretch-3.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-stretch-4.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-stretch-4.html.ini
new file mode 100644
index 00000000000..55772ec4056
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-aspect-ratio-stretch-4.html.ini
@@ -0,0 +1,2 @@
+[grid-item-aspect-ratio-stretch-4.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-auto-margins-alignment-vertical-lr.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-auto-margins-alignment-vertical-lr.html.ini
new file mode 100644
index 00000000000..9db65bd1eec
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-auto-margins-alignment-vertical-lr.html.ini
@@ -0,0 +1,24 @@
+[grid-item-auto-margins-alignment-vertical-lr.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-auto-margins-alignment-vertical-rl.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-auto-margins-alignment-vertical-rl.html.ini
new file mode 100644
index 00000000000..1282ef95bb7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-auto-margins-alignment-vertical-rl.html.ini
@@ -0,0 +1,24 @@
+[grid-item-auto-margins-alignment-vertical-rl.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-auto-margins-alignment.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-auto-margins-alignment.html.ini
new file mode 100644
index 00000000000..4634c388323
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-auto-margins-alignment.html.ini
@@ -0,0 +1,24 @@
+[grid-item-auto-margins-alignment.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-content-baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-content-baseline-001.html.ini
new file mode 100644
index 00000000000..ff4aee80787
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-content-baseline-001.html.ini
@@ -0,0 +1,2 @@
+[grid-item-content-baseline-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-content-baseline-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-content-baseline-002.html.ini
new file mode 100644
index 00000000000..48e15df8cab
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-content-baseline-002.html.ini
@@ -0,0 +1,2 @@
+[grid-item-content-baseline-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-content-baseline-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-content-baseline-003.html.ini
new file mode 100644
index 00000000000..c0aa3c9077b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-content-baseline-003.html.ini
@@ -0,0 +1,2 @@
+[grid-item-content-baseline-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-content-baseline-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-content-baseline-004.html.ini
new file mode 100644
index 00000000000..185b98154ce
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-content-baseline-004.html.ini
@@ -0,0 +1,2 @@
+[grid-item-content-baseline-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-mixed-baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-mixed-baseline-001.html.ini
new file mode 100644
index 00000000000..c9ee8f0d818
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-mixed-baseline-001.html.ini
@@ -0,0 +1,2 @@
+[grid-item-mixed-baseline-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-mixed-baseline-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-mixed-baseline-002.html.ini
new file mode 100644
index 00000000000..d27ce1b0c33
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-mixed-baseline-002.html.ini
@@ -0,0 +1,2 @@
+[grid-item-mixed-baseline-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-mixed-baseline-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-mixed-baseline-003.html.ini
new file mode 100644
index 00000000000..b7fb97447a0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-mixed-baseline-003.html.ini
@@ -0,0 +1,2 @@
+[grid-item-mixed-baseline-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-mixed-baseline-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-mixed-baseline-004.html.ini
new file mode 100644
index 00000000000..8bf91f61edd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-mixed-baseline-004.html.ini
@@ -0,0 +1,2 @@
+[grid-item-mixed-baseline-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-1.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-1.html.ini
new file mode 100644
index 00000000000..f04b6340396
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-1.html.ini
@@ -0,0 +1,2 @@
+[grid-item-no-aspect-ratio-stretch-1.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-2.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-2.html.ini
new file mode 100644
index 00000000000..1866d16952b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-2.html.ini
@@ -0,0 +1,2 @@
+[grid-item-no-aspect-ratio-stretch-2.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-3.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-3.html.ini
new file mode 100644
index 00000000000..d48000be7d1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-3.html.ini
@@ -0,0 +1,2 @@
+[grid-item-no-aspect-ratio-stretch-3.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html.ini
new file mode 100644
index 00000000000..2b551dbabca
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html.ini
@@ -0,0 +1,2 @@
+[grid-item-no-aspect-ratio-stretch-4.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5.html.ini
new file mode 100644
index 00000000000..f71f9efe3c5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5.html.ini
@@ -0,0 +1,2 @@
+[grid-item-no-aspect-ratio-stretch-5.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6.html.ini
new file mode 100644
index 00000000000..9ee9cce78ad
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6.html.ini
@@ -0,0 +1,2 @@
+[grid-item-no-aspect-ratio-stretch-6.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-justify-baseline-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-justify-baseline-002.html.ini
new file mode 100644
index 00000000000..386a233dc6c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-justify-baseline-002.html.ini
@@ -0,0 +1,15 @@
+[grid-justify-baseline-002.html]
+ [#target > div 1]
+ expected: FAIL
+
+ [#target > div 2]
+ expected: FAIL
+
+ [#target > div 3]
+ expected: FAIL
+
+ [#target > div 5]
+ expected: FAIL
+
+ [#target > div 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-justify-baseline-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-justify-baseline-003.html.ini
new file mode 100644
index 00000000000..87e709f10ce
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-justify-baseline-003.html.ini
@@ -0,0 +1,9 @@
+[grid-justify-baseline-003.html]
+ [#target > div 1]
+ expected: FAIL
+
+ [#target > div 2]
+ expected: FAIL
+
+ [#target > div 3]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-justify-baseline-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-justify-baseline-004.html.ini
new file mode 100644
index 00000000000..75ad75fcdcc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-justify-baseline-004.html.ini
@@ -0,0 +1,9 @@
+[grid-justify-baseline-004.html]
+ [#target > div 1]
+ expected: FAIL
+
+ [#target > div 2]
+ expected: FAIL
+
+ [#target > div 3]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-justify-baseline-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-justify-baseline-005.html.ini
new file mode 100644
index 00000000000..23eb6eb259d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-justify-baseline-005.html.ini
@@ -0,0 +1,9 @@
+[grid-justify-baseline-005.html]
+ [#target > div 1]
+ expected: FAIL
+
+ [#target > div 2]
+ expected: FAIL
+
+ [#target > div 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-place-content-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-place-content-001.html.ini
new file mode 100644
index 00000000000..f1231d57087
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-place-content-001.html.ini
@@ -0,0 +1,30 @@
+[grid-place-content-001.html]
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-001.html.ini
new file mode 100644
index 00000000000..c1b9f65182a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-001.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-002.html.ini
new file mode 100644
index 00000000000..d4fa1cc361e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-002.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-003.html.ini
new file mode 100644
index 00000000000..6e11dc562f4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-003.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-003.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-004.html.ini
new file mode 100644
index 00000000000..9d9c5c1f8ee
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-004.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-004.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-005.html.ini
new file mode 100644
index 00000000000..ba1587b4e08
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-005.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-005.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-006.html.ini
new file mode 100644
index 00000000000..d5501cc09c6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-006.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-006.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-007.html.ini
new file mode 100644
index 00000000000..5dd679db202
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-007.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-007.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-008.html.ini
new file mode 100644
index 00000000000..0aa49b47ec9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-008.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-008.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-009.html.ini
new file mode 100644
index 00000000000..d8f40cc55d7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-009.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-009.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-010.html.ini
new file mode 100644
index 00000000000..d683b0f3715
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-010.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-010.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-011.html.ini
new file mode 100644
index 00000000000..5908879dc9a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-011.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-011.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-012.html.ini
new file mode 100644
index 00000000000..32677075485
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-012.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-012.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-013.html.ini
new file mode 100644
index 00000000000..c1133bb1e28
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-013.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-013.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-014.html.ini
new file mode 100644
index 00000000000..67508733498
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-014.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-014.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-015.html.ini
new file mode 100644
index 00000000000..1d83623a228
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-015.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-015.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-016.html.ini
new file mode 100644
index 00000000000..f2fe8f821c4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-016.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-016.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-017.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-017.html.ini
new file mode 100644
index 00000000000..ff32450c7f8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-017.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-alignment-positioned-items-017.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-sticky-positioned-items-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-sticky-positioned-items-001.html.ini
new file mode 100644
index 00000000000..cd685823cd5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-sticky-positioned-items-001.html.ini
@@ -0,0 +1,6 @@
+[grid-row-axis-alignment-sticky-positioned-items-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-sticky-positioned-items-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-sticky-positioned-items-002.html.ini
new file mode 100644
index 00000000000..85e518e5b54
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-alignment-sticky-positioned-items-002.html.ini
@@ -0,0 +1,6 @@
+[grid-row-axis-alignment-sticky-positioned-items-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html.ini
new file mode 100644
index 00000000000..9e4c6d60c01
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-self-baseline-synthesized-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html.ini
new file mode 100644
index 00000000000..862328cabbf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-self-baseline-synthesized-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html.ini
new file mode 100644
index 00000000000..461c6b46931
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-self-baseline-synthesized-003.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html.ini
new file mode 100644
index 00000000000..374e29aabaf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html.ini
@@ -0,0 +1,12 @@
+[grid-row-axis-self-baseline-synthesized-004.html]
+ [.inline-grid 1]
+ expected: FAIL
+
+ [.inline-grid 2]
+ expected: FAIL
+
+ [.inline-grid 3]
+ expected: FAIL
+
+ [.inline-grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-005.html.ini
new file mode 100644
index 00000000000..7fac4b58ef8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-005.html.ini
@@ -0,0 +1,6 @@
+[grid-row-axis-self-baseline-synthesized-005.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-001.html.ini
new file mode 100644
index 00000000000..035ed5bfe92
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-001.html.ini
@@ -0,0 +1,2 @@
+[grid-self-alignment-baseline-with-grid-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-002.html.ini
new file mode 100644
index 00000000000..54fbc1b2480
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-002.html.ini
@@ -0,0 +1,2 @@
+[grid-self-alignment-baseline-with-grid-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-003.html.ini
new file mode 100644
index 00000000000..0fe071a2285
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-003.html.ini
@@ -0,0 +1,2 @@
+[grid-self-alignment-baseline-with-grid-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-004.html.ini
new file mode 100644
index 00000000000..07c2ceed560
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-baseline-with-grid-004.html.ini
@@ -0,0 +1,2 @@
+[grid-self-alignment-baseline-with-grid-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-001.html.ini
new file mode 100644
index 00000000000..1b7b1205f8f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-001.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-non-static-positioned-items-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-002.html.ini
new file mode 100644
index 00000000000..fd62ad75ca9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-002.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-non-static-positioned-items-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-003.html.ini
new file mode 100644
index 00000000000..8cd5ff2bd26
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-003.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-non-static-positioned-items-003.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-004.html.ini
new file mode 100644
index 00000000000..53852c8ed2b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-004.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-non-static-positioned-items-004.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-005.html.ini
new file mode 100644
index 00000000000..55d32a86a62
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-005.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-non-static-positioned-items-005.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-006.html.ini
new file mode 100644
index 00000000000..ca190f6bdc8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-006.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-non-static-positioned-items-006.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-007.html.ini
new file mode 100644
index 00000000000..fcb4feb07bd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-007.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-non-static-positioned-items-007.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008.html.ini
new file mode 100644
index 00000000000..740331cd887
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-non-static-positioned-items-008.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009.html.ini
new file mode 100644
index 00000000000..b817ff63434
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-non-static-positioned-items-009.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-010.html.ini
new file mode 100644
index 00000000000..15dd048543c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-010.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-non-static-positioned-items-010.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011.html.ini
new file mode 100644
index 00000000000..7f0da84770a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-non-static-positioned-items-011.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012.html.ini
new file mode 100644
index 00000000000..42ea711a1df
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-non-static-positioned-items-012.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-001.html.ini
new file mode 100644
index 00000000000..8dfbdd87172
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-001.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-positioned-items-with-margin-border-padding-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-002.html.ini
new file mode 100644
index 00000000000..b0af2fb9898
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-002.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-positioned-items-with-margin-border-padding-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-003.html.ini
new file mode 100644
index 00000000000..13b8b016404
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-003.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-positioned-items-with-margin-border-padding-003.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-004.html.ini
new file mode 100644
index 00000000000..0a3ca0f6076
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-004.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-positioned-items-with-margin-border-padding-004.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-005.html.ini
new file mode 100644
index 00000000000..6e4a57d3173
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-005.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-positioned-items-with-margin-border-padding-005.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-006.html.ini
new file mode 100644
index 00000000000..271fe87e354
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-006.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-positioned-items-with-margin-border-padding-006.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-007.html.ini
new file mode 100644
index 00000000000..95048349845
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-007.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-positioned-items-with-margin-border-padding-007.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-008.html.ini
new file mode 100644
index 00000000000..401fa42bb0e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-008.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-positioned-items-with-margin-border-padding-008.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-009.html.ini
new file mode 100644
index 00000000000..632ccbaaa1f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-009.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-positioned-items-with-margin-border-padding-009.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-010.html.ini
new file mode 100644
index 00000000000..0ca4b2e3ecb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-010.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-positioned-items-with-margin-border-padding-010.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-011.html.ini
new file mode 100644
index 00000000000..48a964516a0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-011.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-positioned-items-with-margin-border-padding-011.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-012.html.ini
new file mode 100644
index 00000000000..ed11a13e462
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-012.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-positioned-items-with-margin-border-padding-012.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-013.html.ini
new file mode 100644
index 00000000000..aa45871e343
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-013.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-positioned-items-with-margin-border-padding-013.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-014.html.ini
new file mode 100644
index 00000000000..fa83c61f256
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-014.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-positioned-items-with-margin-border-padding-014.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-015.html.ini
new file mode 100644
index 00000000000..6da378ffdab
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-015.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-positioned-items-with-margin-border-padding-015.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-016.html.ini
new file mode 100644
index 00000000000..4798cfbe3bf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-016.html.ini
@@ -0,0 +1,12 @@
+[grid-self-alignment-positioned-items-with-margin-border-padding-016.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-001.html.ini
new file mode 100644
index 00000000000..051be6862ea
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-001.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-001.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-002.html.ini
new file mode 100644
index 00000000000..49a901eec42
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-002.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-002.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-003.html.ini
new file mode 100644
index 00000000000..27da9e536fe
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-003.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-003.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-004.html.ini
new file mode 100644
index 00000000000..f165c8b2944
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-004.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-004.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-005.html.ini
new file mode 100644
index 00000000000..809bbec86cb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-005.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-005.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-006.html.ini
new file mode 100644
index 00000000000..3c88b562c07
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-006.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-006.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-007.html.ini
new file mode 100644
index 00000000000..db537349a44
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-007.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-007.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-008.html.ini
new file mode 100644
index 00000000000..fec1a2e5339
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-008.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-008.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-009.html.ini
new file mode 100644
index 00000000000..78cfc1b8d72
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-009.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-009.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-010.html.ini
new file mode 100644
index 00000000000..3a1d08c72de
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-010.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-010.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-011.html.ini
new file mode 100644
index 00000000000..63ab81b818a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-011.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-011.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-012.html.ini
new file mode 100644
index 00000000000..8106baf5283
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-012.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-012.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-013.html.ini
new file mode 100644
index 00000000000..a743ca10ca3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-013.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-013.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-014.html.ini
new file mode 100644
index 00000000000..3beae5558cc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-014.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-014.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-015.html.ini
new file mode 100644
index 00000000000..14489fb6c64
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-015.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-015.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-016.html.ini
new file mode 100644
index 00000000000..e0928fe5690
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-016.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-016.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-input-range.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-input-range.html.ini
new file mode 100644
index 00000000000..3fb4ae35a48
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-input-range.html.ini
@@ -0,0 +1,2 @@
+[grid-self-alignment-stretch-input-range.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-001.html.ini
new file mode 100644
index 00000000000..9454ebf51c5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-001.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-lr-001.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-002.html.ini
new file mode 100644
index 00000000000..4bc5720278a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-002.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-lr-002.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-003.html.ini
new file mode 100644
index 00000000000..27e309773bf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-003.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-lr-003.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-004.html.ini
new file mode 100644
index 00000000000..2582477f29d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-004.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-lr-004.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-005.html.ini
new file mode 100644
index 00000000000..c01e6f6a6ff
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-005.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-lr-005.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-006.html.ini
new file mode 100644
index 00000000000..ca3038bb490
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-006.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-lr-006.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-007.html.ini
new file mode 100644
index 00000000000..a4ef6d30eb1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-007.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-lr-007.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-008.html.ini
new file mode 100644
index 00000000000..5ee1fe415ce
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-008.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-lr-008.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-009.html.ini
new file mode 100644
index 00000000000..5575bc34d55
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-009.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-lr-009.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-010.html.ini
new file mode 100644
index 00000000000..e6aedd40af9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-010.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-lr-010.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-011.html.ini
new file mode 100644
index 00000000000..5c67804aa9a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-011.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-lr-011.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-012.html.ini
new file mode 100644
index 00000000000..d400b197c4e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-012.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-lr-012.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-013.html.ini
new file mode 100644
index 00000000000..166b49f7c6f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-013.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-lr-013.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-014.html.ini
new file mode 100644
index 00000000000..bb27bb93d62
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-014.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-lr-014.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-015.html.ini
new file mode 100644
index 00000000000..d1a8b484541
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-015.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-lr-015.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-016.html.ini
new file mode 100644
index 00000000000..b6d0b1c50ae
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-lr-016.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-lr-016.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-001.html.ini
new file mode 100644
index 00000000000..d9444dbe95c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-001.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-rl-001.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-002.html.ini
new file mode 100644
index 00000000000..be33a6d7eaf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-002.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-rl-002.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-003.html.ini
new file mode 100644
index 00000000000..580158c034f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-003.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-rl-003.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-004.html.ini
new file mode 100644
index 00000000000..4fca65cc5bb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-004.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-rl-004.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-005.html.ini
new file mode 100644
index 00000000000..b1f1ff731db
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-005.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-rl-005.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-006.html.ini
new file mode 100644
index 00000000000..4eec51cb2eb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-006.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-rl-006.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-007.html.ini
new file mode 100644
index 00000000000..38edbbfdd6d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-007.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-rl-007.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-008.html.ini
new file mode 100644
index 00000000000..fffc0e20a68
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-008.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-rl-008.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-009.html.ini
new file mode 100644
index 00000000000..7dd9e9ae9af
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-009.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-rl-009.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-010.html.ini
new file mode 100644
index 00000000000..a69d2f03549
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-010.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-rl-010.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-011.html.ini
new file mode 100644
index 00000000000..ebe730ea2e2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-011.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-rl-011.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-012.html.ini
new file mode 100644
index 00000000000..ac93721b73b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-012.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-rl-012.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-013.html.ini
new file mode 100644
index 00000000000..b6bc2ca0c80
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-013.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-rl-013.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-014.html.ini
new file mode 100644
index 00000000000..dab4b10db3a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-014.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-rl-014.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-015.html.ini
new file mode 100644
index 00000000000..b42940bfe32
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-015.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-rl-015.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-016.html.ini
new file mode 100644
index 00000000000..9fa6a504a64
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment-stretch-vertical-rl-016.html.ini
@@ -0,0 +1,3 @@
+[grid-self-alignment-stretch-vertical-rl-016.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment.html.ini
new file mode 100644
index 00000000000..634aaaabf18
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-alignment.html.ini
@@ -0,0 +1,162 @@
+[grid-self-alignment.html]
+ [.child 2]
+ expected: FAIL
+
+ [.child 3]
+ expected: FAIL
+
+ [.child 4]
+ expected: FAIL
+
+ [.child 6]
+ expected: FAIL
+
+ [.child 7]
+ expected: FAIL
+
+ [.child 8]
+ expected: FAIL
+
+ [.child 9]
+ expected: FAIL
+
+ [.child 10]
+ expected: FAIL
+
+ [.child 11]
+ expected: FAIL
+
+ [.child 13]
+ expected: FAIL
+
+ [.child 14]
+ expected: FAIL
+
+ [.child 16]
+ expected: FAIL
+
+ [.child 17]
+ expected: FAIL
+
+ [.child 18]
+ expected: FAIL
+
+ [.child 19]
+ expected: FAIL
+
+ [.child 22]
+ expected: FAIL
+
+ [.child 23]
+ expected: FAIL
+
+ [.child 24]
+ expected: FAIL
+
+ [.child 26]
+ expected: FAIL
+
+ [.child 27]
+ expected: FAIL
+
+ [.child 28]
+ expected: FAIL
+
+ [.child 30]
+ expected: FAIL
+
+ [.child 31]
+ expected: FAIL
+
+ [.child 32]
+ expected: FAIL
+
+ [.child 33]
+ expected: FAIL
+
+ [.child 34]
+ expected: FAIL
+
+ [.child 35]
+ expected: FAIL
+
+ [.child 37]
+ expected: FAIL
+
+ [.child 38]
+ expected: FAIL
+
+ [.child 40]
+ expected: FAIL
+
+ [.child 41]
+ expected: FAIL
+
+ [.child 42]
+ expected: FAIL
+
+ [.child 43]
+ expected: FAIL
+
+ [.child 46]
+ expected: FAIL
+
+ [.child 47]
+ expected: FAIL
+
+ [.child 48]
+ expected: FAIL
+
+ [.child 50]
+ expected: FAIL
+
+ [.child 51]
+ expected: FAIL
+
+ [.child 52]
+ expected: FAIL
+
+ [.child 54]
+ expected: FAIL
+
+ [.child 55]
+ expected: FAIL
+
+ [.child 56]
+ expected: FAIL
+
+ [.child 57]
+ expected: FAIL
+
+ [.child 58]
+ expected: FAIL
+
+ [.child 59]
+ expected: FAIL
+
+ [.child 61]
+ expected: FAIL
+
+ [.child 62]
+ expected: FAIL
+
+ [.child 64]
+ expected: FAIL
+
+ [.child 65]
+ expected: FAIL
+
+ [.child 66]
+ expected: FAIL
+
+ [.child 67]
+ expected: FAIL
+
+ [.child 70]
+ expected: FAIL
+
+ [.child 71]
+ expected: FAIL
+
+ [.child 72]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001.html.ini
new file mode 100644
index 00000000000..4db7adfeff8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001.html.ini
@@ -0,0 +1,36 @@
+[grid-self-baseline-not-applied-if-sizing-cyclic-dependency-001.html]
+ [.inline-grid 1]
+ expected: FAIL
+
+ [.inline-grid 2]
+ expected: FAIL
+
+ [.inline-grid 3]
+ expected: FAIL
+
+ [.inline-grid 4]
+ expected: FAIL
+
+ [.inline-grid 5]
+ expected: FAIL
+
+ [.inline-grid 6]
+ expected: FAIL
+
+ [.inline-grid 7]
+ expected: FAIL
+
+ [.inline-grid 8]
+ expected: FAIL
+
+ [.inline-grid 9]
+ expected: FAIL
+
+ [.inline-grid 10]
+ expected: FAIL
+
+ [.inline-grid 11]
+ expected: FAIL
+
+ [.inline-grid 12]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-002.html.ini
new file mode 100644
index 00000000000..466aafc83dd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-002.html.ini
@@ -0,0 +1,72 @@
+[grid-self-baseline-not-applied-if-sizing-cyclic-dependency-002.html]
+ [.inline-grid 1]
+ expected: FAIL
+
+ [.inline-grid 2]
+ expected: FAIL
+
+ [.inline-grid 3]
+ expected: FAIL
+
+ [.inline-grid 4]
+ expected: FAIL
+
+ [.inline-grid 5]
+ expected: FAIL
+
+ [.inline-grid 6]
+ expected: FAIL
+
+ [.inline-grid 7]
+ expected: FAIL
+
+ [.inline-grid 8]
+ expected: FAIL
+
+ [.inline-grid 9]
+ expected: FAIL
+
+ [.inline-grid 10]
+ expected: FAIL
+
+ [.inline-grid 11]
+ expected: FAIL
+
+ [.inline-grid 12]
+ expected: FAIL
+
+ [.inline-grid 13]
+ expected: FAIL
+
+ [.inline-grid 14]
+ expected: FAIL
+
+ [.inline-grid 15]
+ expected: FAIL
+
+ [.inline-grid 16]
+ expected: FAIL
+
+ [.inline-grid 17]
+ expected: FAIL
+
+ [.inline-grid 18]
+ expected: FAIL
+
+ [.inline-grid 19]
+ expected: FAIL
+
+ [.inline-grid 20]
+ expected: FAIL
+
+ [.inline-grid 21]
+ expected: FAIL
+
+ [.inline-grid 22]
+ expected: FAIL
+
+ [.inline-grid 23]
+ expected: FAIL
+
+ [.inline-grid 24]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-003.html.ini
new file mode 100644
index 00000000000..64784ba2294
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-003.html.ini
@@ -0,0 +1,18 @@
+[grid-self-baseline-not-applied-if-sizing-cyclic-dependency-003.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-001.html.ini
new file mode 100644
index 00000000000..ce63592a7a2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-001.html.ini
@@ -0,0 +1,2 @@
+[replaced-alignment-with-aspect-ratio-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-002.html.ini
new file mode 100644
index 00000000000..1b39ae34918
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-002.html.ini
@@ -0,0 +1,2 @@
+[replaced-alignment-with-aspect-ratio-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-003.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-003.tentative.html.ini
new file mode 100644
index 00000000000..6891538c015
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-003.tentative.html.ini
@@ -0,0 +1,2 @@
+[replaced-alignment-with-aspect-ratio-003.tentative.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-004.html.ini
new file mode 100644
index 00000000000..e8d58c769b4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-004.html.ini
@@ -0,0 +1,2 @@
+[replaced-alignment-with-aspect-ratio-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-005.html.ini
new file mode 100644
index 00000000000..0fa264958cf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-005.html.ini
@@ -0,0 +1,2 @@
+[replaced-alignment-with-aspect-ratio-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-006.html.ini
new file mode 100644
index 00000000000..17d8dc9f310
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-006.html.ini
@@ -0,0 +1,2 @@
+[replaced-alignment-with-aspect-ratio-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-007.html.ini
new file mode 100644
index 00000000000..f6cdb5b14f4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-007.html.ini
@@ -0,0 +1,2 @@
+[replaced-alignment-with-aspect-ratio-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-008.html.ini
new file mode 100644
index 00000000000..14777f317aa
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-008.html.ini
@@ -0,0 +1,2 @@
+[replaced-alignment-with-aspect-ratio-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-009.html.ini
new file mode 100644
index 00000000000..0ae0f540f6f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/replaced-alignment-with-aspect-ratio-009.html.ini
@@ -0,0 +1,2 @@
+[replaced-alignment-with-aspect-ratio-009.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-001.html.ini
new file mode 100644
index 00000000000..7cf88fc5a15
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-001.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-002-b.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-002-b.html.ini
new file mode 100644
index 00000000000..1c36ec6353b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-002-b.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-002-b.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-002.html.ini
new file mode 100644
index 00000000000..d27b12601de
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-002.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-003.html.ini
new file mode 100644
index 00000000000..56736d84d72
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-003.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-004.html.ini
new file mode 100644
index 00000000000..039f4a04b0d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-004.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-005.html.ini
new file mode 100644
index 00000000000..1c03adcea0e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-005.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-006.html.ini
new file mode 100644
index 00000000000..b99aedcef03
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-006.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-007.html.ini
new file mode 100644
index 00000000000..c5314d816f7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-007.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-008.html.ini
new file mode 100644
index 00000000000..215c8b28837
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-008.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-001.html.ini
new file mode 100644
index 00000000000..c9d77650e8a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-001.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-changes-grid-area-size-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-002.html.ini
new file mode 100644
index 00000000000..531eaa307e7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-002.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-changes-grid-area-size-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-003.html.ini
new file mode 100644
index 00000000000..5e960632143
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-003.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-changes-grid-area-size-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-004.html.ini
new file mode 100644
index 00000000000..8f2b0b7602e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-004.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-changes-grid-area-size-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-005.html.ini
new file mode 100644
index 00000000000..5334b94ea13
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-005.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-changes-grid-area-size-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-006.html.ini
new file mode 100644
index 00000000000..12fd6bcac95
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-006.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-changes-grid-area-size-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-007.html.ini
new file mode 100644
index 00000000000..26737453497
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-007.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-changes-grid-area-size-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-008.html.ini
new file mode 100644
index 00000000000..89f31416483
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-008.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-changes-grid-area-size-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-009.html.ini
new file mode 100644
index 00000000000..d6b2810d504
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-009.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-changes-grid-area-size-009.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-010.html.ini
new file mode 100644
index 00000000000..c490c0c2584
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-010.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-changes-grid-area-size-010.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-011.html.ini
new file mode 100644
index 00000000000..a7ed2249f89
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-011.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-changes-grid-area-size-011.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-012.html.ini
new file mode 100644
index 00000000000..94869eae2b9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-012.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-changes-grid-area-size-012.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-001.html.ini
new file mode 100644
index 00000000000..08b1abae753
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-001.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-horiz-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002.html.ini
new file mode 100644
index 00000000000..b73f5e5c5d4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-horiz-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003.html.ini
new file mode 100644
index 00000000000..1bdfb067bf5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-horiz-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-004.html.ini
new file mode 100644
index 00000000000..074405580f5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-004.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-horiz-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005.html.ini
new file mode 100644
index 00000000000..423f5bf265b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-horiz-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-006.html.ini
new file mode 100644
index 00000000000..6675c36a01c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-006.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-horiz-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007.html.ini
new file mode 100644
index 00000000000..cd7b5cb2334
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-horiz-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-001.html.ini
new file mode 100644
index 00000000000..b26df647315
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-001.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-vertical-lr-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002.html.ini
new file mode 100644
index 00000000000..66badd723e7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-vertical-lr-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-003.html.ini
new file mode 100644
index 00000000000..d274a51df31
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-003.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-vertical-lr-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004.html.ini
new file mode 100644
index 00000000000..5164b313a0f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-vertical-lr-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005.html.ini
new file mode 100644
index 00000000000..84317d4ec9f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-vertical-lr-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-006.html.ini
new file mode 100644
index 00000000000..16342963975
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-006.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-vertical-lr-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007.html.ini
new file mode 100644
index 00000000000..b26c533a325
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-vertical-lr-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-001.html.ini
new file mode 100644
index 00000000000..8ee5c57462f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-001.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-vertical-rl-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002.html.ini
new file mode 100644
index 00000000000..4d18d6d3d99
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-vertical-rl-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003.html.ini
new file mode 100644
index 00000000000..30eaf12482b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-vertical-rl-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004.html.ini
new file mode 100644
index 00000000000..1943e1c5bb7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-vertical-rl-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005.html.ini
new file mode 100644
index 00000000000..171aa871023
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-vertical-rl-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-006.html.ini
new file mode 100644
index 00000000000..d2244d2952a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-006.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-vertical-rl-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007.html.ini
new file mode 100644
index 00000000000..12a4e2eeb8f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007.html.ini
@@ -0,0 +1,2 @@
+[grid-self-baseline-vertical-rl-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-no-interpolation.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-no-interpolation.html.ini
new file mode 100644
index 00000000000..ad6569584a3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-no-interpolation.html.ini
@@ -0,0 +1,1008 @@
+[grid-no-interpolation.html]
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-columns> from [initial\] to [123px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-columns> from [initial\] to [123px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-columns> from [initial\] to [123px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-columns> from [initial\] to [123px\] at (0.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-columns> from [initial\] to [123px\] at (0.6) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-columns> from [initial\] to [123px\] at (1) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-columns> from [initial\] to [123px\] at (1.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-columns> from [initial\] to [123px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-columns> from [initial\] to [123px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-columns> from [initial\] to [123px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-columns> from [initial\] to [123px\] at (0.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-columns> from [initial\] to [123px\] at (0.6) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-columns> from [initial\] to [123px\] at (1) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-columns> from [initial\] to [123px\] at (1.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-columns> from [initial\] to [123px\] at (-0.3) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-columns> from [initial\] to [123px\] at (0) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-columns> from [initial\] to [123px\] at (0.3) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-columns> from [initial\] to [123px\] at (0.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-columns> from [initial\] to [123px\] at (0.6) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-columns> from [initial\] to [123px\] at (1) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-columns> from [initial\] to [123px\] at (1.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-columns> from [initial\] to [123px\] at (-0.3) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-columns> from [initial\] to [123px\] at (0) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-columns> from [initial\] to [123px\] at (0.3) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-columns> from [initial\] to [123px\] at (0.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-columns> from [initial\] to [123px\] at (0.6) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-columns> from [initial\] to [123px\] at (1) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-columns> from [initial\] to [123px\] at (1.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-columns> from [initial\] to [123px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-columns> from [initial\] to [123px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-columns> from [initial\] to [123px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-columns> from [initial\] to [123px\] at (0.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-columns> from [initial\] to [123px\] at (0.6) should be [123px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-columns> from [initial\] to [123px\] at (1) should be [123px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-columns> from [initial\] to [123px\] at (1.5) should be [123px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-columns> from [initial\] to [123px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-columns> from [initial\] to [123px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-columns> from [initial\] to [123px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-columns> from [initial\] to [123px\] at (0.5) should be [123px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-columns> from [initial\] to [123px\] at (0.6) should be [123px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-columns> from [initial\] to [123px\] at (1) should be [123px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-columns> from [initial\] to [123px\] at (1.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-flow> from [initial\] to [column\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-flow> from [initial\] to [column\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-flow> from [initial\] to [column\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-flow> from [initial\] to [column\] at (0.5) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-flow> from [initial\] to [column\] at (0.6) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-flow> from [initial\] to [column\] at (1) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-flow> from [initial\] to [column\] at (1.5) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-flow> from [initial\] to [column\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-flow> from [initial\] to [column\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-flow> from [initial\] to [column\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-flow> from [initial\] to [column\] at (0.5) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-flow> from [initial\] to [column\] at (0.6) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-flow> from [initial\] to [column\] at (1) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-flow> from [initial\] to [column\] at (1.5) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-flow> from [initial\] to [column\] at (-0.3) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-flow> from [initial\] to [column\] at (0) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-flow> from [initial\] to [column\] at (0.3) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-flow> from [initial\] to [column\] at (0.5) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-flow> from [initial\] to [column\] at (0.6) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-flow> from [initial\] to [column\] at (1) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-flow> from [initial\] to [column\] at (1.5) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-flow> from [initial\] to [column\] at (-0.3) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-flow> from [initial\] to [column\] at (0) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-flow> from [initial\] to [column\] at (0.3) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-flow> from [initial\] to [column\] at (0.5) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-flow> from [initial\] to [column\] at (0.6) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-flow> from [initial\] to [column\] at (1) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-flow> from [initial\] to [column\] at (1.5) should be [column\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-flow> from [initial\] to [column\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-flow> from [initial\] to [column\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-flow> from [initial\] to [column\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-flow> from [initial\] to [column\] at (0.5) should be [column\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-flow> from [initial\] to [column\] at (0.6) should be [column\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-flow> from [initial\] to [column\] at (1) should be [column\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-flow> from [initial\] to [column\] at (1.5) should be [column\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-flow> from [initial\] to [column\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-flow> from [initial\] to [column\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-flow> from [initial\] to [column\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-flow> from [initial\] to [column\] at (0.5) should be [column\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-flow> from [initial\] to [column\] at (0.6) should be [column\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-flow> from [initial\] to [column\] at (1) should be [column\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-flow> from [initial\] to [column\] at (1.5) should be [column\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-rows> from [initial\] to [123px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-rows> from [initial\] to [123px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-rows> from [initial\] to [123px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-rows> from [initial\] to [123px\] at (0.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-rows> from [initial\] to [123px\] at (0.6) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-rows> from [initial\] to [123px\] at (1) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-auto-rows> from [initial\] to [123px\] at (1.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-rows> from [initial\] to [123px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-rows> from [initial\] to [123px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-rows> from [initial\] to [123px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-rows> from [initial\] to [123px\] at (0.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-rows> from [initial\] to [123px\] at (0.6) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-rows> from [initial\] to [123px\] at (1) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-auto-rows> from [initial\] to [123px\] at (1.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-rows> from [initial\] to [123px\] at (-0.3) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-rows> from [initial\] to [123px\] at (0) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-rows> from [initial\] to [123px\] at (0.3) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-rows> from [initial\] to [123px\] at (0.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-rows> from [initial\] to [123px\] at (0.6) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-rows> from [initial\] to [123px\] at (1) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-auto-rows> from [initial\] to [123px\] at (1.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-rows> from [initial\] to [123px\] at (-0.3) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-rows> from [initial\] to [123px\] at (0) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-rows> from [initial\] to [123px\] at (0.3) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-rows> from [initial\] to [123px\] at (0.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-rows> from [initial\] to [123px\] at (0.6) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-rows> from [initial\] to [123px\] at (1) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-auto-rows> from [initial\] to [123px\] at (1.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-rows> from [initial\] to [123px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-rows> from [initial\] to [123px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-rows> from [initial\] to [123px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-rows> from [initial\] to [123px\] at (0.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-rows> from [initial\] to [123px\] at (0.6) should be [123px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-rows> from [initial\] to [123px\] at (1) should be [123px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-auto-rows> from [initial\] to [123px\] at (1.5) should be [123px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-rows> from [initial\] to [123px\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-rows> from [initial\] to [123px\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-rows> from [initial\] to [123px\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-rows> from [initial\] to [123px\] at (0.5) should be [123px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-rows> from [initial\] to [123px\] at (0.6) should be [123px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-rows> from [initial\] to [123px\] at (1) should be [123px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-auto-rows> from [initial\] to [123px\] at (1.5) should be [123px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-column-end> from [initial\] to [123\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-column-end> from [initial\] to [123\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-column-end> from [initial\] to [123\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-column-end> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-column-end> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-column-end> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-column-end> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-column-end> from [initial\] to [123\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-column-end> from [initial\] to [123\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-column-end> from [initial\] to [123\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-column-end> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-column-end> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-column-end> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-column-end> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-column-end> from [initial\] to [123\] at (-0.3) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-column-end> from [initial\] to [123\] at (0) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-column-end> from [initial\] to [123\] at (0.3) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-column-end> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-column-end> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-column-end> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-column-end> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-column-end> from [initial\] to [123\] at (-0.3) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-column-end> from [initial\] to [123\] at (0) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-column-end> from [initial\] to [123\] at (0.3) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-column-end> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-column-end> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-column-end> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-column-end> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-column-end> from [initial\] to [123\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-column-end> from [initial\] to [123\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-column-end> from [initial\] to [123\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-column-end> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-column-end> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-column-end> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-column-end> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-column-end> from [initial\] to [123\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-column-end> from [initial\] to [123\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-column-end> from [initial\] to [123\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-column-end> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-column-end> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-column-end> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-column-end> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-column-start> from [initial\] to [123\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-column-start> from [initial\] to [123\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-column-start> from [initial\] to [123\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-column-start> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-column-start> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-column-start> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-column-start> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-column-start> from [initial\] to [123\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-column-start> from [initial\] to [123\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-column-start> from [initial\] to [123\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-column-start> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-column-start> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-column-start> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-column-start> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-column-start> from [initial\] to [123\] at (-0.3) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-column-start> from [initial\] to [123\] at (0) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-column-start> from [initial\] to [123\] at (0.3) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-column-start> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-column-start> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-column-start> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-column-start> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-column-start> from [initial\] to [123\] at (-0.3) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-column-start> from [initial\] to [123\] at (0) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-column-start> from [initial\] to [123\] at (0.3) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-column-start> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-column-start> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-column-start> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-column-start> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-column-start> from [initial\] to [123\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-column-start> from [initial\] to [123\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-column-start> from [initial\] to [123\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-column-start> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-column-start> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-column-start> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-column-start> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-column-start> from [initial\] to [123\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-column-start> from [initial\] to [123\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-column-start> from [initial\] to [123\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-column-start> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-column-start> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-column-start> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-column-start> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-row-end> from [initial\] to [123\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-row-end> from [initial\] to [123\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-row-end> from [initial\] to [123\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-row-end> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-row-end> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-row-end> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-row-end> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-row-end> from [initial\] to [123\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-row-end> from [initial\] to [123\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-row-end> from [initial\] to [123\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-row-end> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-row-end> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-row-end> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-row-end> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-row-end> from [initial\] to [123\] at (-0.3) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-row-end> from [initial\] to [123\] at (0) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-row-end> from [initial\] to [123\] at (0.3) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-row-end> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-row-end> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-row-end> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-row-end> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-row-end> from [initial\] to [123\] at (-0.3) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-row-end> from [initial\] to [123\] at (0) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-row-end> from [initial\] to [123\] at (0.3) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-row-end> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-row-end> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-row-end> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-row-end> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-row-end> from [initial\] to [123\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-row-end> from [initial\] to [123\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-row-end> from [initial\] to [123\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-row-end> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-row-end> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-row-end> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-row-end> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-row-end> from [initial\] to [123\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-row-end> from [initial\] to [123\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-row-end> from [initial\] to [123\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-row-end> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-row-end> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-row-end> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-row-end> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-row-start> from [initial\] to [123\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-row-start> from [initial\] to [123\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-row-start> from [initial\] to [123\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-row-start> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-row-start> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-row-start> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-row-start> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-row-start> from [initial\] to [123\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-row-start> from [initial\] to [123\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-row-start> from [initial\] to [123\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-row-start> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-row-start> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-row-start> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-row-start> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-row-start> from [initial\] to [123\] at (-0.3) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-row-start> from [initial\] to [123\] at (0) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-row-start> from [initial\] to [123\] at (0.3) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-row-start> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-row-start> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-row-start> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-row-start> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-row-start> from [initial\] to [123\] at (-0.3) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-row-start> from [initial\] to [123\] at (0) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-row-start> from [initial\] to [123\] at (0.3) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-row-start> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-row-start> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-row-start> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-row-start> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-row-start> from [initial\] to [123\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-row-start> from [initial\] to [123\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-row-start> from [initial\] to [123\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-row-start> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-row-start> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-row-start> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-row-start> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-row-start> from [initial\] to [123\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-row-start> from [initial\] to [123\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-row-start> from [initial\] to [123\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-row-start> from [initial\] to [123\] at (0.5) should be [123\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-row-start> from [initial\] to [123\] at (0.6) should be [123\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-row-start> from [initial\] to [123\] at (1) should be [123\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-row-start> from [initial\] to [123\] at (1.5) should be [123\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-areas> from [initial\] to ["."\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-areas> from [initial\] to ["."\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-areas> from [initial\] to ["."\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-areas> from [initial\] to ["."\] at (0.5) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-areas> from [initial\] to ["."\] at (0.6) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-areas> from [initial\] to ["."\] at (1) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-areas> from [initial\] to ["."\] at (1.5) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-areas> from [initial\] to ["."\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-areas> from [initial\] to ["."\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-areas> from [initial\] to ["."\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-areas> from [initial\] to ["."\] at (0.5) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-areas> from [initial\] to ["."\] at (0.6) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-areas> from [initial\] to ["."\] at (1) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-areas> from [initial\] to ["."\] at (1.5) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-areas> from [initial\] to ["."\] at (-0.3) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-areas> from [initial\] to ["."\] at (0) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-areas> from [initial\] to ["."\] at (0.3) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-areas> from [initial\] to ["."\] at (0.5) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-areas> from [initial\] to ["."\] at (0.6) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-areas> from [initial\] to ["."\] at (1) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-areas> from [initial\] to ["."\] at (1.5) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-areas> from [initial\] to ["."\] at (-0.3) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-areas> from [initial\] to ["."\] at (0) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-areas> from [initial\] to ["."\] at (0.3) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-areas> from [initial\] to ["."\] at (0.5) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-areas> from [initial\] to ["."\] at (0.6) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-areas> from [initial\] to ["."\] at (1) should be ["."\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-areas> from [initial\] to ["."\] at (1.5) should be ["."\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-areas> from [initial\] to ["."\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-areas> from [initial\] to ["."\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-areas> from [initial\] to ["."\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-areas> from [initial\] to ["."\] at (0.5) should be ["."\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-areas> from [initial\] to ["."\] at (0.6) should be ["."\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-areas> from [initial\] to ["."\] at (1) should be ["."\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-areas> from [initial\] to ["."\] at (1.5) should be ["."\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-areas> from [initial\] to ["."\] at (-0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-areas> from [initial\] to ["."\] at (0) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-areas> from [initial\] to ["."\] at (0.3) should be [initial\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-areas> from [initial\] to ["."\] at (0.5) should be ["."\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-areas> from [initial\] to ["."\] at (0.6) should be ["."\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-areas> from [initial\] to ["."\] at (1) should be ["."\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-areas> from [initial\] to ["."\] at (1.5) should be ["."\]]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-composition.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-composition.html.ini
new file mode 100644
index 00000000000..47563c70892
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-composition.html.ini
@@ -0,0 +1,285 @@
+[grid-template-columns-composition.html]
+ [Compositing: property <grid-template-columns> underlying [50px 10%\] from add [100px 100px\] to add [200px 20%\] at (-0.3) should be [120px calc(130px + 4%)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [50px 10%\] from add [100px 100px\] to add [200px 20%\] at (0) should be [150px calc(100px + 10%)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [50px 10%\] from add [100px 100px\] to add [200px 20%\] at (0.5) should be [200px calc(50px + 20%)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [50px 10%\] from add [100px 100px\] to add [200px 20%\] at (1) should be [250px 30%\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [50px 10%\] from add [100px 100px\] to add [200px 20%\] at (1.5) should be [300px calc(-50px + 40%)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 2fr\] to add [2fr 1fr\] at (-0.5) should be [1.5fr 3.5fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 2fr\] to add [2fr 1fr\] at (0) should be [2fr 3fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 2fr\] to add [2fr 1fr\] at (0.5) should be [2.5fr 2.5fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 2fr\] to add [2fr 1fr\] at (1) should be [3fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 2fr\] to add [2fr 1fr\] at (1.5) should be [3.5fr 1.5fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [50px\] from add [100px\] to replace [200px\] at (-0.3) should be [135px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [50px\] from add [100px\] to replace [200px\] at (0) should be [150px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [50px\] from add [100px\] to replace [200px\] at (0.5) should be [175px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [50px\] from add [100px\] to replace [200px\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [50px\] from add [100px\] to replace [200px\] at (1.5) should be [225px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr\] from add [1fr\] to replace [3fr\] at (-0.5) should be [1.5fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr\] from add [1fr\] to replace [3fr\] at (0) should be [2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr\] from add [1fr\] to replace [3fr\] at (0.5) should be [2.5fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr\] from add [1fr\] to replace [3fr\] at (1) should be [3fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr\] from add [1fr\] to replace [3fr\] at (1.5) should be [3.5fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 1fr\] to add [3fr auto\] at (-0.5) should be [1fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 1fr\] to add [3fr auto\] at (0) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 1fr\] to add [3fr auto\] at (0.5) should be [3fr auto\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 1fr\] to add [3fr auto\] at (1) should be [4fr auto\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 1fr\] to add [3fr auto\] at (1.5) should be [5fr auto\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr auto\] to add [3fr 3fr\] at (-0.5) should be [1fr auto\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr auto\] to add [3fr 3fr\] at (0) should be [2fr auto\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr auto\] to add [3fr 3fr\] at (0.5) should be [3fr 4fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr auto\] to add [3fr 3fr\] at (1) should be [4fr 4fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr auto\] to add [3fr 3fr\] at (1.5) should be [5fr 4fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr auto\] from add [1fr 1fr\] to add [3fr 3fr\] at (-0.5) should be [1fr 0fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr auto\] from add [1fr 1fr\] to add [3fr 3fr\] at (0) should be [2fr 1fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr auto\] from add [1fr 1fr\] to add [3fr 3fr\] at (0.5) should be [3fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr auto\] from add [1fr 1fr\] to add [3fr 3fr\] at (1) should be [4fr 3fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr auto\] from add [1fr 1fr\] to add [3fr 3fr\] at (1.5) should be [5fr 4fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [0fr repeat(2, 0fr 10px) 1fr\] from add [1fr repeat(2, 1fr 20px) 1fr\] to add [2fr repeat(2, 3fr 40px) 3fr\] at (-0.3) should be [0.7fr repeat(2, 0.4fr 24px) 1.4fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [0fr repeat(2, 0fr 10px) 1fr\] from add [1fr repeat(2, 1fr 20px) 1fr\] to add [2fr repeat(2, 3fr 40px) 3fr\] at (0) should be [1fr repeat(2, 1fr 30px) 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [0fr repeat(2, 0fr 10px) 1fr\] from add [1fr repeat(2, 1fr 20px) 1fr\] to add [2fr repeat(2, 3fr 40px) 3fr\] at (0.5) should be [1.5fr repeat(2, 2fr 40px) 3fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [0fr repeat(2, 0fr 10px) 1fr\] from add [1fr repeat(2, 1fr 20px) 1fr\] to add [2fr repeat(2, 3fr 40px) 3fr\] at (1) should be [2fr repeat(2, 3fr 50px) 4fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [0fr repeat(2, 0fr 10px) 1fr\] from add [1fr repeat(2, 1fr 20px) 1fr\] to add [2fr repeat(2, 3fr 40px) 3fr\] at (1.5) should be [2.5fr repeat(2, 4fr 60px) 5fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr [a b\] 1fr [d\]\] to add [3fr [c\] 3fr\] at (-0.5) should be [1fr [ a b \] 1fr [d\]\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr [a b\] 1fr [d\]\] to add [3fr [c\] 3fr\] at (0) should be [2fr [ a b \] 2fr [d\]\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr [a b\] 1fr [d\]\] to add [3fr [c\] 3fr\] at (0.5) should be [3fr [c\] 3fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr [a b\] 1fr [d\]\] to add [3fr [c\] 3fr\] at (1) should be [4fr [c\] 4fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr [a b\] 1fr [d\]\] to add [3fr [c\] 3fr\] at (1.5) should be [5fr [c\] 5fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [fit-content(5px) fit-content(20px)\] from add [fit-content(5px) fit-content(20px)\] to add [fit-content(15px) max-content\] at (-0.5) should be [fit-content(5px) fit-content(40px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [fit-content(5px) fit-content(20px)\] from add [fit-content(5px) fit-content(20px)\] to add [fit-content(15px) max-content\] at (0) should be [fit-content(10px) fit-content(40px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [fit-content(5px) fit-content(20px)\] from add [fit-content(5px) fit-content(20px)\] to add [fit-content(15px) max-content\] at (0.5) should be [fit-content(15px) max-content\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [fit-content(5px) fit-content(20px)\] from add [fit-content(5px) fit-content(20px)\] to add [fit-content(15px) max-content\] at (1) should be [fit-content(20px) max-content\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [fit-content(5px) fit-content(20px)\] from add [fit-content(5px) fit-content(20px)\] to add [fit-content(15px) max-content\] at (1.5) should be [fit-content(25px) max-content\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [minmax(5px, 1fr) minmax(10px, 2fr)\] from add [minmax(5px, 1fr) minmax(10px, 2fr)\] to add [minmax(15px, 3fr) minmax(30px, auto)\] at (-0.5) should be [minmax(5px, 1fr) minmax(10px, 4fr)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [minmax(5px, 1fr) minmax(10px, 2fr)\] from add [minmax(5px, 1fr) minmax(10px, 2fr)\] to add [minmax(15px, 3fr) minmax(30px, auto)\] at (0) should be [minmax(10px, 2fr) minmax(20px, 4fr)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [minmax(5px, 1fr) minmax(10px, 2fr)\] from add [minmax(5px, 1fr) minmax(10px, 2fr)\] to add [minmax(15px, 3fr) minmax(30px, auto)\] at (0.5) should be [minmax(15px, 3fr) minmax(30px, auto)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [minmax(5px, 1fr) minmax(10px, 2fr)\] from add [minmax(5px, 1fr) minmax(10px, 2fr)\] to add [minmax(15px, 3fr) minmax(30px, auto)\] at (1) should be [minmax(20px, 4fr) minmax(40px, auto)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [minmax(5px, 1fr) minmax(10px, 2fr)\] from add [minmax(5px, 1fr) minmax(10px, 2fr)\] to add [minmax(15px, 3fr) minmax(30px, auto)\] at (1.5) should be [minmax(25px, 5fr) minmax(50px, auto)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [none\] to add [1fr 1fr\] at (-0.5) should be [none\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [none\] to add [1fr 1fr\] at (0) should be [none\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [none\] to add [1fr 1fr\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [none\] to add [1fr 1fr\] at (0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [none\] to add [1fr 1fr\] at (0.7) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [none\] to add [1fr 1fr\] at (1) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [none\] to add [1fr 1fr\] at (1.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 1fr\] to add [none\] at (-0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 1fr\] to add [none\] at (0) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 1fr\] to add [none\] at (0.3) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 1fr\] to add [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 1fr\] to add [none\] at (0.7) should be [none\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 1fr\] to add [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr\] from add [1fr 1fr\] to add [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr 1fr\] from add [1fr 1fr 1fr\] to add [2fr 2fr\] at (-0.5) should be [2fr 2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr 1fr\] from add [1fr 1fr 1fr\] to add [2fr 2fr\] at (0) should be [2fr 2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr 1fr\] from add [1fr 1fr 1fr\] to add [2fr 2fr\] at (0.3) should be [2fr 2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr 1fr\] from add [1fr 1fr 1fr\] to add [2fr 2fr\] at (0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr 1fr\] from add [1fr 1fr 1fr\] to add [2fr 2fr\] at (0.7) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr 1fr\] from add [1fr 1fr 1fr\] to add [2fr 2fr\] at (1) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [1fr 1fr 1fr\] from add [1fr 1fr 1fr\] to add [2fr 2fr\] at (1.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [10px 20px 30px\] from add [15px 4px\] to add [30px 3px\] at (-0.5) should be [7.5px 4.5px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [10px 20px 30px\] from add [15px 4px\] to add [30px 3px\] at (0) should be [15px 4px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [10px 20px 30px\] from add [15px 4px\] to add [30px 3px\] at (0.5) should be [22.5px 3.5px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [10px 20px 30px\] from add [15px 4px\] to add [30px 3px\] at (1) should be [30px 3px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [10px 20px 30px\] from add [15px 4px\] to add [30px 3px\] at (1.5) should be [37.5px 2.5px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(3, 3fr 50px)\] at (-0.5) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(3, 3fr 50px)\] at (0) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(3, 3fr 50px)\] at (0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(3, 3fr 50px)\] at (0.5) should be [repeat(3, 3fr 50px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(3, 3fr 50px)\] at (0.7) should be [repeat(3, 3fr 50px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(3, 3fr 50px)\] at (1) should be [repeat(3, 3fr 50px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(3, 3fr 50px)\] at (1.5) should be [repeat(3, 3fr 50px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(2, 3fr)\] at (-0.5) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(2, 3fr)\] at (0) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(2, 3fr)\] at (0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(2, 3fr)\] at (0.5) should be [repeat(2, 3fr)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(2, 3fr)\] at (0.7) should be [repeat(2, 3fr)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(2, 3fr)\] at (1) should be [repeat(2, 3fr)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-columns> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(2, 3fr)\] at (1.5) should be [repeat(2, 3fr)\]]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-interpolation.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-interpolation.html.ini
new file mode 100644
index 00000000000..ab6905bc69c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-interpolation.html.ini
@@ -0,0 +1,2052 @@
+[grid-template-columns-interpolation.html]
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (-0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.6) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (-0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.6) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (-0.3) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.3) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.6) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (-0.3) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.3) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.6) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (-0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.6) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (-0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.6) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (-0.3) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.3) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (-0.3) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.3) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (-0.3) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.3) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (-0.3) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.3) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (-0.3) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.3) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (-0.3) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.3) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (-0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (-0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (-0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (-0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [none\] to [20px 30px\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [none\] to [20px 30px\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [none\] to [20px 30px\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [none\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [none\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [none\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [none\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [none\] to [20px 30px\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [none\] to [20px 30px\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [none\] to [20px 30px\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [none\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [none\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [none\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [none\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [none\] to [20px 30px\] at (-0.3) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [none\] to [20px 30px\] at (0) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [none\] to [20px 30px\] at (0.3) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [none\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [none\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [none\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [none\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [none\] to [20px 30px\] at (-0.3) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [none\] to [20px 30px\] at (0) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [none\] to [20px 30px\] at (0.3) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [none\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [none\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [none\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [none\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [none\] to [20px 30px\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [none\] to [20px 30px\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [none\] to [20px 30px\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [none\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [none\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [none\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [none\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [none\] to [20px 30px\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [none\] to [20px 30px\] at (0) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [none\] to [20px 30px\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [none\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [none\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [none\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [none\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (-1) should be [0px 10px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (0.4) should be [14px 24px 34px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (0.6) should be [16px 26px 36px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (1) should be [20px 30px 40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (2) should be [30px 40px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (-1) should be [0px 10px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (0.4) should be [14px 24px 34px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (0.6) should be [16px 26px 36px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (1) should be [20px 30px 40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (2) should be [30px 40px 50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (-1) should be [0px 10px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (0.4) should be [14px 24px 34px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (0.6) should be [16px 26px 36px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (1) should be [20px 30px 40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (2) should be [30px 40px 50px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (-1) should be [0px 10px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (0.4) should be [14px 24px 34px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (0.6) should be [16px 26px 36px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (1) should be [20px 30px 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20px 30px 40px\] at (2) should be [30px 40px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (-1) should be [calc(20px + -20%) calc(40px + -30%) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (0) should be [calc(10px + 0%) calc(20px + 0%) 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (0.4) should be [calc(6px + 8%) calc(12px + 12%) 34px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (0.6) should be [calc(4px + 12%) calc(8px + 18%) 36px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (1) should be [20% 30% 40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (2) should be [calc(-10px + 40%) calc(-20px + 60%) 50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (-1) should be [calc(20px + -20%) calc(40px + -30%) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (0) should be [calc(10px + 0%) calc(20px + 0%) 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (0.4) should be [calc(6px + 8%) calc(12px + 12%) 34px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (0.6) should be [calc(4px + 12%) calc(8px + 18%) 36px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (1) should be [20% 30% 40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (2) should be [calc(-10px + 40%) calc(-20px + 60%) 50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (-1) should be [calc(20px + -20%) calc(40px + -30%) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (0) should be [calc(10px + 0%) calc(20px + 0%) 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (0.4) should be [calc(6px + 8%) calc(12px + 12%) 34px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (0.6) should be [calc(4px + 12%) calc(8px + 18%) 36px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (1) should be [20% 30% 40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (2) should be [calc(-10px + 40%) calc(-20px + 60%) 50px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (-1) should be [calc(20px + -20%) calc(40px + -30%) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (0) should be [calc(10px + 0%) calc(20px + 0%) 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (0.4) should be [calc(6px + 8%) calc(12px + 12%) 34px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (0.6) should be [calc(4px + 12%) calc(8px + 18%) 36px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (1) should be [20% 30% 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 20px 30px\] to [20% 30% 40px\] at (2) should be [calc(-10px + 40%) calc(-20px + 60%) 50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (-1) should be [0fr 1fr 0fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0.4) should be [1.4fr 1fr 1.4fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0.6) should be [1.6fr auto 1.6fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (1) should be [2fr auto 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (2) should be [3fr auto 3fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (-1) should be [0fr 1fr 0fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0.4) should be [1.4fr 1fr 1.4fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0.6) should be [1.6fr auto 1.6fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (1) should be [2fr auto 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (2) should be [3fr auto 3fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (-1) should be [0fr 1fr 0fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0.4) should be [1.4fr 1fr 1.4fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0.6) should be [1.6fr auto 1.6fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (1) should be [2fr auto 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (2) should be [3fr auto 3fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (-1) should be [0fr 1fr 0fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0.4) should be [1.4fr 1fr 1.4fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0.6) should be [1.6fr auto 1.6fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (1) should be [2fr auto 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (2) should be [3fr auto 3fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (-1) should be [0fr [a b\] 1fr [d\] 0fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0) should be [1fr [a b\] 1fr [d\] 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0.4) should be [1.4fr [a b\] 1fr [d\] 1.4fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0.6) should be [1.6fr [c\] auto 1.6fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (1) should be [2fr [c\] auto 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (2) should be [3fr [c\] auto 3fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (-1) should be [0fr [a b\] 1fr [d\] 0fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0) should be [1fr [a b\] 1fr [d\] 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0.4) should be [1.4fr [a b\] 1fr [d\] 1.4fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0.6) should be [1.6fr [c\] auto 1.6fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (1) should be [2fr [c\] auto 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (2) should be [3fr [c\] auto 3fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (-1) should be [0fr [a b\] 1fr [d\] 0fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0) should be [1fr [a b\] 1fr [d\] 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0.4) should be [1.4fr [a b\] 1fr [d\] 1.4fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0.6) should be [1.6fr [c\] auto 1.6fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (1) should be [2fr [c\] auto 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (2) should be [3fr [c\] auto 3fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (-1) should be [0fr [a b\] 1fr [d\] 0fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0) should be [1fr [a b\] 1fr [d\] 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0.4) should be [1.4fr [a b\] 1fr [d\] 1.4fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0.6) should be [1.6fr [c\] auto 1.6fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (1) should be [2fr [c\] auto 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (2) should be [3fr [c\] auto 3fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (-1) should be [fit-content(0px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0) should be [fit-content(10px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0.4) should be [fit-content(14px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0.6) should be [fit-content(16px) max-content\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (1) should be [fit-content(20px) max-content\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (2) should be [fit-content(30px) max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (-1) should be [fit-content(0px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0) should be [fit-content(10px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0.4) should be [fit-content(14px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0.6) should be [fit-content(16px) max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (1) should be [fit-content(20px) max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (2) should be [fit-content(30px) max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (-1) should be [fit-content(0px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0) should be [fit-content(10px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0.4) should be [fit-content(14px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0.6) should be [fit-content(16px) max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (1) should be [fit-content(20px) max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (2) should be [fit-content(30px) max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (-1) should be [fit-content(0px) fit-content(20px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0) should be [fit-content(10px) fit-content(20px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0.4) should be [fit-content(14px) fit-content(20px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0.6) should be [fit-content(16px) max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (1) should be [fit-content(20px) max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (2) should be [fit-content(30px) max-content\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (-1) should be [minmax(0px, 0fr) minmax(10px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0) should be [minmax(10px, 1fr) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0.4) should be [minmax(14px, 1.4fr) minmax(24px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0.6) should be [minmax(16px, 1.6fr) minmax(26px, auto)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (1) should be [minmax(20px, 2fr) minmax(30px, auto)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (2) should be [minmax(30px, 3fr) minmax(40px, auto)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (-1) should be [minmax(0px, 0fr) minmax(10px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0) should be [minmax(10px, 1fr) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0.4) should be [minmax(14px, 1.4fr) minmax(24px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0.6) should be [minmax(16px, 1.6fr) minmax(26px, auto)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (1) should be [minmax(20px, 2fr) minmax(30px, auto)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (2) should be [minmax(30px, 3fr) minmax(40px, auto)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (-1) should be [minmax(0px, 0fr) minmax(10px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0) should be [minmax(10px, 1fr) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0.4) should be [minmax(14px, 1.4fr) minmax(24px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0.6) should be [minmax(16px, 1.6fr) minmax(26px, auto)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (1) should be [minmax(20px, 2fr) minmax(30px, auto)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (2) should be [minmax(30px, 3fr) minmax(40px, auto)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (-1) should be [minmax(0px, 0fr) minmax(10px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0) should be [minmax(10px, 1fr) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0.4) should be [minmax(14px, 1.4fr) minmax(24px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0.6) should be [minmax(16px, 1.6fr) minmax(26px, auto)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (1) should be [minmax(20px, 2fr) minmax(30px, auto)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (2) should be [minmax(30px, 3fr) minmax(40px, auto)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (-1) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0.4) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0.6) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (1) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (2) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (-1) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0.4) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0.6) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (1) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (2) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (-1) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0.4) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0.6) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (1) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (2) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (-1) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0.4) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0.6) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (1) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (2) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (-1) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0.4) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0.6) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (1) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (2) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (-1) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0.4) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0.6) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (1) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (2) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (-1) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0.4) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0.6) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (1) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (2) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (-1) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0.4) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0.6) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (1) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (2) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (-1) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0.4) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0.6) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (1) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (2) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (-1) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0.4) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0.6) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (1) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (2) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (-1) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0.4) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0.6) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (1) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (2) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (-1) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0.4) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0.6) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (1) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (2) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (-1) should be [0px 10px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (0.4) should be [14px 24px 34px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (0.6) should be [16px 26px 36px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (1) should be [20px 30px 40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (2) should be [30px 40px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (-1) should be [0px 10px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (0.4) should be [14px 24px 34px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (0.6) should be [16px 26px 36px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (1) should be [20px 30px 40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (2) should be [30px 40px 50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (-1) should be [0px 10px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (0.4) should be [14px 24px 34px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (0.6) should be [16px 26px 36px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (1) should be [20px 30px 40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (2) should be [30px 40px 50px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (-1) should be [0px 10px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (0.4) should be [14px 24px 34px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (0.6) should be [16px 26px 36px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (1) should be [20px 30px 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [inherit\] to [20px 30px 40px\] at (2) should be [30px 40px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (-0.3) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.3) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (-0.3) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.3) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (-0.3) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.3) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (-0.3) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.3) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (-0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.6) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (-0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.6) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (-0.3) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.3) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.6) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (-0.3) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.3) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.6) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (-0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.6) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (-0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.6) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (-1) should be [0fr repeat(2, 1fr auto 20px) 0fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0) should be [1fr repeat(2, 2fr auto 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0.4) should be [1.4fr repeat(2, 2.4fr auto 34px) 1.4fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0.6) should be [1.6fr repeat(2, 2.6fr 30px 36px) 1.6fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (1) should be [2fr repeat(2, 3fr 30px 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (2) should be [3fr repeat(2, 4fr 30px 50px) 3fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (-1) should be [0fr repeat(2, 1fr auto 20px) 0fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0) should be [1fr repeat(2, 2fr auto 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0.4) should be [1.4fr repeat(2, 2.4fr auto 34px) 1.4fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0.6) should be [1.6fr repeat(2, 2.6fr 30px 36px) 1.6fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (1) should be [2fr repeat(2, 3fr 30px 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (2) should be [3fr repeat(2, 4fr 30px 50px) 3fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (-1) should be [0fr repeat(2, 1fr auto 20px) 0fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0) should be [1fr repeat(2, 2fr auto 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0.4) should be [1.4fr repeat(2, 2.4fr auto 34px) 1.4fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0.6) should be [1.6fr repeat(2, 2.6fr 30px 36px) 1.6fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (1) should be [2fr repeat(2, 3fr 30px 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (2) should be [3fr repeat(2, 4fr 30px 50px) 3fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (-1) should be [0fr repeat(2, 1fr auto 20px) 0fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0) should be [1fr repeat(2, 2fr auto 30px) 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0.4) should be [1.4fr repeat(2, 2.4fr auto 34px) 1.4fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0.6) should be [1.6fr repeat(2, 2.6fr 30px 36px) 1.6fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (1) should be [2fr repeat(2, 3fr 30px 40px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (2) should be [3fr repeat(2, 4fr 30px 50px) 3fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (-0.3) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.3) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (-0.3) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.3) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (-0.3) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.3) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (-0.3) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.3) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (-0.3) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.3) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (-0.3) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.3) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-columns> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-neutral-keyframe-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-neutral-keyframe-001.html.ini
new file mode 100644
index 00000000000..183ca3cb243
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-neutral-keyframe-001.html.ini
@@ -0,0 +1,3 @@
+[grid-template-columns-neutral-keyframe-001.html]
+ [Invalidate the result for the neutral keyframe if the value of the <track-breadth> changes.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-neutral-keyframe-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-neutral-keyframe-002.html.ini
new file mode 100644
index 00000000000..7562ca277a0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-neutral-keyframe-002.html.ini
@@ -0,0 +1,3 @@
+[grid-template-columns-neutral-keyframe-002.html]
+ [Invalidate the result for the neutral keyframe if the type of <track-size> changes.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-neutral-keyframe-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-neutral-keyframe-003.html.ini
new file mode 100644
index 00000000000..4c0bcd0581d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-neutral-keyframe-003.html.ini
@@ -0,0 +1,3 @@
+[grid-template-columns-neutral-keyframe-003.html]
+ [Invalidate the result for the neutral keyframe if the size of the list changes.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-neutral-keyframe-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-neutral-keyframe-004.html.ini
new file mode 100644
index 00000000000..cb0607375d3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-columns-neutral-keyframe-004.html.ini
@@ -0,0 +1,3 @@
+[grid-template-columns-neutral-keyframe-004.html]
+ [Invalidate the result for the neutral keyframe if the named lines change.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-composition.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-composition.html.ini
new file mode 100644
index 00000000000..f073cb7ced7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-composition.html.ini
@@ -0,0 +1,285 @@
+[grid-template-rows-composition.html]
+ [Compositing: property <grid-template-rows> underlying [50px 10%\] from add [100px 100px\] to add [200px 20%\] at (-0.3) should be [120px calc(130px + 4%)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [50px 10%\] from add [100px 100px\] to add [200px 20%\] at (0) should be [150px calc(100px + 10%)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [50px 10%\] from add [100px 100px\] to add [200px 20%\] at (0.5) should be [200px calc(50px + 20%)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [50px 10%\] from add [100px 100px\] to add [200px 20%\] at (1) should be [250px 30%\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [50px 10%\] from add [100px 100px\] to add [200px 20%\] at (1.5) should be [300px calc(-50px + 40%)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 2fr\] to add [2fr 1fr\] at (-0.5) should be [1.5fr 3.5fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 2fr\] to add [2fr 1fr\] at (0) should be [2fr 3fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 2fr\] to add [2fr 1fr\] at (0.5) should be [2.5fr 2.5fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 2fr\] to add [2fr 1fr\] at (1) should be [3fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 2fr\] to add [2fr 1fr\] at (1.5) should be [3.5fr 1.5fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [50px\] from add [100px\] to replace [200px\] at (-0.3) should be [135px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [50px\] from add [100px\] to replace [200px\] at (0) should be [150px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [50px\] from add [100px\] to replace [200px\] at (0.5) should be [175px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [50px\] from add [100px\] to replace [200px\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [50px\] from add [100px\] to replace [200px\] at (1.5) should be [225px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr\] from add [1fr\] to replace [3fr\] at (-0.5) should be [1.5fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr\] from add [1fr\] to replace [3fr\] at (0) should be [2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr\] from add [1fr\] to replace [3fr\] at (0.5) should be [2.5fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr\] from add [1fr\] to replace [3fr\] at (1) should be [3fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr\] from add [1fr\] to replace [3fr\] at (1.5) should be [3.5fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 1fr\] to add [3fr auto\] at (-0.5) should be [1fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 1fr\] to add [3fr auto\] at (0) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 1fr\] to add [3fr auto\] at (0.5) should be [3fr auto\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 1fr\] to add [3fr auto\] at (1) should be [4fr auto\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 1fr\] to add [3fr auto\] at (1.5) should be [5fr auto\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr auto\] to add [3fr 3fr\] at (-0.5) should be [1fr auto\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr auto\] to add [3fr 3fr\] at (0) should be [2fr auto\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr auto\] to add [3fr 3fr\] at (0.5) should be [3fr 4fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr auto\] to add [3fr 3fr\] at (1) should be [4fr 4fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr auto\] to add [3fr 3fr\] at (1.5) should be [5fr 4fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr auto\] from add [1fr 1fr\] to add [3fr 3fr\] at (-0.5) should be [1fr 0fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr auto\] from add [1fr 1fr\] to add [3fr 3fr\] at (0) should be [2fr 1fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr auto\] from add [1fr 1fr\] to add [3fr 3fr\] at (0.5) should be [3fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr auto\] from add [1fr 1fr\] to add [3fr 3fr\] at (1) should be [4fr 3fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr auto\] from add [1fr 1fr\] to add [3fr 3fr\] at (1.5) should be [5fr 4fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [0fr repeat(2, 0fr 10px) 1fr\] from add [1fr repeat(2, 1fr 20px) 1fr\] to add [2fr repeat(2, 3fr 40px) 3fr\] at (-0.3) should be [0.7fr repeat(2, 0.4fr 24px) 1.4fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [0fr repeat(2, 0fr 10px) 1fr\] from add [1fr repeat(2, 1fr 20px) 1fr\] to add [2fr repeat(2, 3fr 40px) 3fr\] at (0) should be [1fr repeat(2, 1fr 30px) 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [0fr repeat(2, 0fr 10px) 1fr\] from add [1fr repeat(2, 1fr 20px) 1fr\] to add [2fr repeat(2, 3fr 40px) 3fr\] at (0.5) should be [1.5fr repeat(2, 2fr 40px) 3fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [0fr repeat(2, 0fr 10px) 1fr\] from add [1fr repeat(2, 1fr 20px) 1fr\] to add [2fr repeat(2, 3fr 40px) 3fr\] at (1) should be [2fr repeat(2, 3fr 50px) 4fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [0fr repeat(2, 0fr 10px) 1fr\] from add [1fr repeat(2, 1fr 20px) 1fr\] to add [2fr repeat(2, 3fr 40px) 3fr\] at (1.5) should be [2.5fr repeat(2, 4fr 60px) 5fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr [a b\] 1fr [d\]\] to add [3fr [c\] 3fr\] at (-0.5) should be [1fr [ a b \] 1fr [d\]\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr [a b\] 1fr [d\]\] to add [3fr [c\] 3fr\] at (0) should be [2fr [ a b \] 2fr [d\]\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr [a b\] 1fr [d\]\] to add [3fr [c\] 3fr\] at (0.5) should be [3fr [c\] 3fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr [a b\] 1fr [d\]\] to add [3fr [c\] 3fr\] at (1) should be [4fr [c\] 4fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr [a b\] 1fr [d\]\] to add [3fr [c\] 3fr\] at (1.5) should be [5fr [c\] 5fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [fit-content(5px) fit-content(20px)\] from add [fit-content(5px) fit-content(20px)\] to add [fit-content(15px) max-content\] at (-0.5) should be [fit-content(5px) fit-content(40px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [fit-content(5px) fit-content(20px)\] from add [fit-content(5px) fit-content(20px)\] to add [fit-content(15px) max-content\] at (0) should be [fit-content(10px) fit-content(40px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [fit-content(5px) fit-content(20px)\] from add [fit-content(5px) fit-content(20px)\] to add [fit-content(15px) max-content\] at (0.5) should be [fit-content(15px) max-content\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [fit-content(5px) fit-content(20px)\] from add [fit-content(5px) fit-content(20px)\] to add [fit-content(15px) max-content\] at (1) should be [fit-content(20px) max-content\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [fit-content(5px) fit-content(20px)\] from add [fit-content(5px) fit-content(20px)\] to add [fit-content(15px) max-content\] at (1.5) should be [fit-content(25px) max-content\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [minmax(5px, 1fr) minmax(10px, 2fr)\] from add [minmax(5px, 1fr) minmax(10px, 2fr)\] to add [minmax(15px, 3fr) minmax(30px, auto)\] at (-0.5) should be [minmax(5px, 1fr) minmax(10px, 4fr)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [minmax(5px, 1fr) minmax(10px, 2fr)\] from add [minmax(5px, 1fr) minmax(10px, 2fr)\] to add [minmax(15px, 3fr) minmax(30px, auto)\] at (0) should be [minmax(10px, 2fr) minmax(20px, 4fr)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [minmax(5px, 1fr) minmax(10px, 2fr)\] from add [minmax(5px, 1fr) minmax(10px, 2fr)\] to add [minmax(15px, 3fr) minmax(30px, auto)\] at (0.5) should be [minmax(15px, 3fr) minmax(30px, auto)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [minmax(5px, 1fr) minmax(10px, 2fr)\] from add [minmax(5px, 1fr) minmax(10px, 2fr)\] to add [minmax(15px, 3fr) minmax(30px, auto)\] at (1) should be [minmax(20px, 4fr) minmax(40px, auto)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [minmax(5px, 1fr) minmax(10px, 2fr)\] from add [minmax(5px, 1fr) minmax(10px, 2fr)\] to add [minmax(15px, 3fr) minmax(30px, auto)\] at (1.5) should be [minmax(25px, 5fr) minmax(50px, auto)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [none\] to add [1fr 1fr\] at (-0.5) should be [none\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [none\] to add [1fr 1fr\] at (0) should be [none\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [none\] to add [1fr 1fr\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [none\] to add [1fr 1fr\] at (0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [none\] to add [1fr 1fr\] at (0.7) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [none\] to add [1fr 1fr\] at (1) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [none\] to add [1fr 1fr\] at (1.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 1fr\] to add [none\] at (-0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 1fr\] to add [none\] at (0) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 1fr\] to add [none\] at (0.3) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 1fr\] to add [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 1fr\] to add [none\] at (0.7) should be [none\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 1fr\] to add [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr\] from add [1fr 1fr\] to add [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr 1fr\] from add [1fr 1fr 1fr\] to add [2fr 2fr\] at (-0.5) should be [2fr 2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr 1fr\] from add [1fr 1fr 1fr\] to add [2fr 2fr\] at (0) should be [2fr 2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr 1fr\] from add [1fr 1fr 1fr\] to add [2fr 2fr\] at (0.3) should be [2fr 2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr 1fr\] from add [1fr 1fr 1fr\] to add [2fr 2fr\] at (0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr 1fr\] from add [1fr 1fr 1fr\] to add [2fr 2fr\] at (0.7) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr 1fr\] from add [1fr 1fr 1fr\] to add [2fr 2fr\] at (1) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [1fr 1fr 1fr\] from add [1fr 1fr 1fr\] to add [2fr 2fr\] at (1.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [10px 20px 30px\] from add [15px 4px\] to add [30px 3px\] at (-0.5) should be [7.5px 4.5px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [10px 20px 30px\] from add [15px 4px\] to add [30px 3px\] at (0) should be [15px 4px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [10px 20px 30px\] from add [15px 4px\] to add [30px 3px\] at (0.5) should be [22.5px 3.5px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [10px 20px 30px\] from add [15px 4px\] to add [30px 3px\] at (1) should be [30px 3px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [10px 20px 30px\] from add [15px 4px\] to add [30px 3px\] at (1.5) should be [37.5px 2.5px\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(3, 3fr 50px)\] at (-0.5) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(3, 3fr 50px)\] at (0) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(3, 3fr 50px)\] at (0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(3, 3fr 50px)\] at (0.5) should be [repeat(3, 3fr 50px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(3, 3fr 50px)\] at (0.7) should be [repeat(3, 3fr 50px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(3, 3fr 50px)\] at (1) should be [repeat(3, 3fr 50px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(3, 3fr 50px)\] at (1.5) should be [repeat(3, 3fr 50px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(2, 3fr)\] at (-0.5) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(2, 3fr)\] at (0) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(2, 3fr)\] at (0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(2, 3fr)\] at (0.5) should be [repeat(2, 3fr)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(2, 3fr)\] at (0.7) should be [repeat(2, 3fr)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(2, 3fr)\] at (1) should be [repeat(2, 3fr)\]]
+ expected: FAIL
+
+ [Compositing: property <grid-template-rows> underlying [undefined\] from add [repeat(2, 2fr 30px)\] to add [repeat(2, 3fr)\] at (1.5) should be [repeat(2, 3fr)\]]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-interpolation.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-interpolation.html.ini
new file mode 100644
index 00000000000..26d7f9deb8d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-interpolation.html.ini
@@ -0,0 +1,2052 @@
+[grid-template-rows-interpolation.html]
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (-0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.6) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (-0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.6) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (-0.3) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.3) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.6) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (-0.3) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.3) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.6) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (-0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.6) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (-0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (0.6) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr 2fr\] at (1.5) should be [2fr 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (-0.3) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.3) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (-0.3) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.3) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (-0.3) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.3) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (-0.3) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.3) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (-0.3) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.3) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (-0.3) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.3) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (-0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (-0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (-0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (-0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.3) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.5) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (0.6) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (1) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [none\] at (1.5) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [none\] to [20px 30px\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [none\] to [20px 30px\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [none\] to [20px 30px\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [none\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [none\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [none\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [none\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [none\] to [20px 30px\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [none\] to [20px 30px\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [none\] to [20px 30px\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [none\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [none\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [none\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [none\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [none\] to [20px 30px\] at (-0.3) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [none\] to [20px 30px\] at (0) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [none\] to [20px 30px\] at (0.3) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [none\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [none\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [none\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [none\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [none\] to [20px 30px\] at (-0.3) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [none\] to [20px 30px\] at (0) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [none\] to [20px 30px\] at (0.3) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [none\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [none\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [none\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [none\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [none\] to [20px 30px\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [none\] to [20px 30px\] at (0) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [none\] to [20px 30px\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [none\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [none\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [none\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [none\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [none\] to [20px 30px\] at (-0.3) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [none\] to [20px 30px\] at (0) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [none\] to [20px 30px\] at (0.3) should be [none\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [none\] to [20px 30px\] at (0.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [none\] to [20px 30px\] at (0.6) should be [20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [none\] to [20px 30px\] at (1) should be [20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [none\] to [20px 30px\] at (1.5) should be [20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (-1) should be [0px 10px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (0.4) should be [14px 24px 34px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (0.6) should be [16px 26px 36px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (1) should be [20px 30px 40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (2) should be [30px 40px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (-1) should be [0px 10px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (0.4) should be [14px 24px 34px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (0.6) should be [16px 26px 36px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (1) should be [20px 30px 40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (2) should be [30px 40px 50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (-1) should be [0px 10px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (0.4) should be [14px 24px 34px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (0.6) should be [16px 26px 36px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (1) should be [20px 30px 40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (2) should be [30px 40px 50px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (-1) should be [0px 10px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (0.4) should be [14px 24px 34px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (0.6) should be [16px 26px 36px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (1) should be [20px 30px 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20px 30px 40px\] at (2) should be [30px 40px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (-1) should be [calc(20px + -20%) calc(40px + -30%) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (0) should be [calc(10px + 0%) calc(20px + 0%) 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (0.4) should be [calc(6px + 8%) calc(12px + 12%) 34px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (0.6) should be [calc(4px + 12%) calc(8px + 18%) 36px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (1) should be [20% 30% 40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (2) should be [calc(-10px + 40%) calc(-20px + 60%) 50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (-1) should be [calc(20px + -20%) calc(40px + -30%) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (0) should be [calc(10px + 0%) calc(20px + 0%) 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (0.4) should be [calc(6px + 8%) calc(12px + 12%) 34px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (0.6) should be [calc(4px + 12%) calc(8px + 18%) 36px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (1) should be [20% 30% 40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (2) should be [calc(-10px + 40%) calc(-20px + 60%) 50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (-1) should be [calc(20px + -20%) calc(40px + -30%) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (0) should be [calc(10px + 0%) calc(20px + 0%) 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (0.4) should be [calc(6px + 8%) calc(12px + 12%) 34px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (0.6) should be [calc(4px + 12%) calc(8px + 18%) 36px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (1) should be [20% 30% 40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (2) should be [calc(-10px + 40%) calc(-20px + 60%) 50px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (-1) should be [calc(20px + -20%) calc(40px + -30%) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (0) should be [calc(10px + 0%) calc(20px + 0%) 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (0.4) should be [calc(6px + 8%) calc(12px + 12%) 34px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (0.6) should be [calc(4px + 12%) calc(8px + 18%) 36px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (1) should be [20% 30% 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 20px 30px\] to [20% 30% 40px\] at (2) should be [calc(-10px + 40%) calc(-20px + 60%) 50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (-1) should be [0fr 1fr 0fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0.4) should be [1.4fr 1fr 1.4fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0.6) should be [1.6fr auto 1.6fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (1) should be [2fr auto 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (2) should be [3fr auto 3fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (-1) should be [0fr 1fr 0fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0.4) should be [1.4fr 1fr 1.4fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0.6) should be [1.6fr auto 1.6fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (1) should be [2fr auto 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (2) should be [3fr auto 3fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (-1) should be [0fr 1fr 0fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0.4) should be [1.4fr 1fr 1.4fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0.6) should be [1.6fr auto 1.6fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (1) should be [2fr auto 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (2) should be [3fr auto 3fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (-1) should be [0fr 1fr 0fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0.4) should be [1.4fr 1fr 1.4fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (0.6) should be [1.6fr auto 1.6fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (1) should be [2fr auto 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [2fr auto 2fr\] at (2) should be [3fr auto 3fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (-1) should be [0fr [a b\] 1fr [d\] 0fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0) should be [1fr [a b\] 1fr [d\] 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0.4) should be [1.4fr [a b\] 1fr [d\] 1.4fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0.6) should be [1.6fr [c\] auto 1.6fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (1) should be [2fr [c\] auto 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (2) should be [3fr [c\] auto 3fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (-1) should be [0fr [a b\] 1fr [d\] 0fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0) should be [1fr [a b\] 1fr [d\] 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0.4) should be [1.4fr [a b\] 1fr [d\] 1.4fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0.6) should be [1.6fr [c\] auto 1.6fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (1) should be [2fr [c\] auto 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (2) should be [3fr [c\] auto 3fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (-1) should be [0fr [a b\] 1fr [d\] 0fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0) should be [1fr [a b\] 1fr [d\] 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0.4) should be [1.4fr [a b\] 1fr [d\] 1.4fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0.6) should be [1.6fr [c\] auto 1.6fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (1) should be [2fr [c\] auto 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (2) should be [3fr [c\] auto 3fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (-1) should be [0fr [a b\] 1fr [d\] 0fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0) should be [1fr [a b\] 1fr [d\] 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0.4) should be [1.4fr [a b\] 1fr [d\] 1.4fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (0.6) should be [1.6fr [c\] auto 1.6fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (1) should be [2fr [c\] auto 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr [a b\] 1fr [d\] 1fr\] to [2fr [c\] auto 2fr\] at (2) should be [3fr [c\] auto 3fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (-1) should be [fit-content(0px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0) should be [fit-content(10px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0.4) should be [fit-content(14px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0.6) should be [fit-content(16px) max-content\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (1) should be [fit-content(20px) max-content\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (2) should be [fit-content(30px) max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (-1) should be [fit-content(0px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0) should be [fit-content(10px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0.4) should be [fit-content(14px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0.6) should be [fit-content(16px) max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (1) should be [fit-content(20px) max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (2) should be [fit-content(30px) max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (-1) should be [fit-content(0px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0) should be [fit-content(10px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0.4) should be [fit-content(14px) fit-content(20px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0.6) should be [fit-content(16px) max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (1) should be [fit-content(20px) max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (2) should be [fit-content(30px) max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (-1) should be [fit-content(0px) fit-content(20px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0) should be [fit-content(10px) fit-content(20px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0.4) should be [fit-content(14px) fit-content(20px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (0.6) should be [fit-content(16px) max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (1) should be [fit-content(20px) max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [fit-content(10px) fit-content(20px)\] to [fit-content(20px) max-content\] at (2) should be [fit-content(30px) max-content\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (-1) should be [minmax(0px, 0fr) minmax(10px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0) should be [minmax(10px, 1fr) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0.4) should be [minmax(14px, 1.4fr) minmax(24px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0.6) should be [minmax(16px, 1.6fr) minmax(26px, auto)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (1) should be [minmax(20px, 2fr) minmax(30px, auto)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (2) should be [minmax(30px, 3fr) minmax(40px, auto)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (-1) should be [minmax(0px, 0fr) minmax(10px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0) should be [minmax(10px, 1fr) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0.4) should be [minmax(14px, 1.4fr) minmax(24px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0.6) should be [minmax(16px, 1.6fr) minmax(26px, auto)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (1) should be [minmax(20px, 2fr) minmax(30px, auto)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (2) should be [minmax(30px, 3fr) minmax(40px, auto)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (-1) should be [minmax(0px, 0fr) minmax(10px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0) should be [minmax(10px, 1fr) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0.4) should be [minmax(14px, 1.4fr) minmax(24px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0.6) should be [minmax(16px, 1.6fr) minmax(26px, auto)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (1) should be [minmax(20px, 2fr) minmax(30px, auto)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (2) should be [minmax(30px, 3fr) minmax(40px, auto)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (-1) should be [minmax(0px, 0fr) minmax(10px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0) should be [minmax(10px, 1fr) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0.4) should be [minmax(14px, 1.4fr) minmax(24px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (0.6) should be [minmax(16px, 1.6fr) minmax(26px, auto)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (1) should be [minmax(20px, 2fr) minmax(30px, auto)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [minmax(10px, 1fr) minmax(20px, 2fr)\] to [minmax(20px, 2fr) minmax(30px, auto)\] at (2) should be [minmax(30px, 3fr) minmax(40px, auto)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (-1) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0.4) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0.6) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (1) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (2) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (-1) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0.4) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0.6) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (1) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (2) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (-1) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0.4) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0.6) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (1) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (2) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (-1) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0.4) should be [10px 10px 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (0.6) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (1) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px 10px 10px\] to [1fr fit-content(20px) minmax(20px, 2fr)\] at (2) should be [1fr fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (-1) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0.4) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0.6) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (1) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (2) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (-1) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0.4) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0.6) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (1) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (2) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (-1) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0.4) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0.6) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (1) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (2) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (-1) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0.4) should be [1fr 1fr 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (0.6) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (1) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr 1fr 1fr\] to [20px fit-content(20px) minmax(20px, 2fr)\] at (2) should be [20px fit-content(20px) minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (-1) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0.4) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0.6) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (1) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (2) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (-1) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0.4) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0.6) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (1) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (2) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (-1) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0.4) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0.6) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (1) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (2) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (-1) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0.4) should be [fit-content(10px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (0.6) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (1) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [fit-content(10px)\] to [minmax(20px, 2fr)\] at (2) should be [minmax(20px, 2fr)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (-1) should be [0px 10px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (0.4) should be [14px 24px 34px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (0.6) should be [16px 26px 36px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (1) should be [20px 30px 40px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (2) should be [30px 40px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (-1) should be [0px 10px 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (0.4) should be [14px 24px 34px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (0.6) should be [16px 26px 36px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (1) should be [20px 30px 40px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (2) should be [30px 40px 50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (-1) should be [0px 10px 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (0.4) should be [14px 24px 34px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (0.6) should be [16px 26px 36px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (1) should be [20px 30px 40px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (2) should be [30px 40px 50px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (-1) should be [0px 10px 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (0) should be [10px 20px 30px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (0.4) should be [14px 24px 34px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (0.6) should be [16px 26px 36px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (1) should be [20px 30px 40px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [inherit\] to [20px 30px 40px\] at (2) should be [30px 40px 50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (-0.3) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.3) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (-0.3) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.3) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (0.6) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(2, 3fr 40px 50px) 2fr\] at (1.5) should be [2fr repeat(2, 3fr 40px 50px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (-0.3) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.3) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (-0.3) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.3) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (-0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.3) should be [1fr repeat(2, 2fr 30px) 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (0.6) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr 30px) 1fr\] to [2fr repeat(3, 3fr 40px) 2fr\] at (1.5) should be [2fr repeat(3, 3fr 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (-0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.6) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (-0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.6) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (-0.3) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.3) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.6) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (-0.3) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.3) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.6) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (-0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.6) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (-0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.3) should be [repeat(2, 2fr 30px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (0.6) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [repeat(2, 2fr 30px)\] to [repeat(4, 40px)\] at (1.5) should be [repeat(4, 40px)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (-1) should be [0fr repeat(2, 1fr auto 20px) 0fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0) should be [1fr repeat(2, 2fr auto 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0.4) should be [1.4fr repeat(2, 2.4fr auto 34px) 1.4fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0.6) should be [1.6fr repeat(2, 2.6fr 30px 36px) 1.6fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (1) should be [2fr repeat(2, 3fr 30px 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (2) should be [3fr repeat(2, 4fr 30px 50px) 3fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (-1) should be [0fr repeat(2, 1fr auto 20px) 0fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0) should be [1fr repeat(2, 2fr auto 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0.4) should be [1.4fr repeat(2, 2.4fr auto 34px) 1.4fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0.6) should be [1.6fr repeat(2, 2.6fr 30px 36px) 1.6fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (1) should be [2fr repeat(2, 3fr 30px 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (2) should be [3fr repeat(2, 4fr 30px 50px) 3fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (-1) should be [0fr repeat(2, 1fr auto 20px) 0fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0) should be [1fr repeat(2, 2fr auto 30px) 1fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0.4) should be [1.4fr repeat(2, 2.4fr auto 34px) 1.4fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0.6) should be [1.6fr repeat(2, 2.6fr 30px 36px) 1.6fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (1) should be [2fr repeat(2, 3fr 30px 40px) 2fr\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (2) should be [3fr repeat(2, 4fr 30px 50px) 3fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (-1) should be [0fr repeat(2, 1fr auto 20px) 0fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0) should be [1fr repeat(2, 2fr auto 30px) 1fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0.4) should be [1.4fr repeat(2, 2.4fr auto 34px) 1.4fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (0.6) should be [1.6fr repeat(2, 2.6fr 30px 36px) 1.6fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (1) should be [2fr repeat(2, 3fr 30px 40px) 2fr\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [1fr repeat(2, 2fr auto 30px) 1fr\] to [2fr repeat(2, 3fr 30px 40px) 2fr\] at (2) should be [3fr repeat(2, 4fr 30px 50px) 3fr\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (-0.3) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.3) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (-0.3) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.3) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (0.6) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px 20px repeat(auto-fill, minmax(30px, 1fr))\] at (1.5) should be [20px 20px repeat(auto-fill, minmax(30px, 1fr))\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (-0.3) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.3) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (-0.3) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.3) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (0.6) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\] at (1.5) should be [20px repeat(auto-fit, minmax(30px, 1fr)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (-0.3) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.3) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (-0.3) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.3) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (-0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.3) should be [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (0.6) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
+
+ [Web Animations: property <grid-template-rows> from [10px repeat(auto-fill, minmax(25px, 1fr)) 10px\] to [20px repeat(auto-fill, minmax(35px, auto)) 20px\] at (1.5) should be [20px repeat(auto-fill, minmax(35px, auto)) 20px\]]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-neutral-keyframe-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-neutral-keyframe-001.html.ini
new file mode 100644
index 00000000000..98522f30675
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-neutral-keyframe-001.html.ini
@@ -0,0 +1,3 @@
+[grid-template-rows-neutral-keyframe-001.html]
+ [Invalidate the result for the neutral keyframe if the value of the <track-breadth> changes.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-neutral-keyframe-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-neutral-keyframe-002.html.ini
new file mode 100644
index 00000000000..e947c7a7a4f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-neutral-keyframe-002.html.ini
@@ -0,0 +1,3 @@
+[grid-template-rows-neutral-keyframe-002.html]
+ [Invalidate the result for the neutral keyframe if the type of <track-size> changes.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-neutral-keyframe-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-neutral-keyframe-003.html.ini
new file mode 100644
index 00000000000..e19968a3e66
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-neutral-keyframe-003.html.ini
@@ -0,0 +1,3 @@
+[grid-template-rows-neutral-keyframe-003.html]
+ [Invalidate the result for the neutral keyframe if the size of the list changes.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-neutral-keyframe-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-neutral-keyframe-004.html.ini
new file mode 100644
index 00000000000..7d568f8290a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/animation/grid-template-rows-neutral-keyframe-004.html.ini
@@ -0,0 +1,3 @@
+[grid-template-rows-neutral-keyframe-004.html]
+ [Invalidate the result for the neutral keyframe if the named lines change.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/child-border-box-and-max-content-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/child-border-box-and-max-content-001.html.ini
new file mode 100644
index 00000000000..e0f197868b8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/child-border-box-and-max-content-001.html.ini
@@ -0,0 +1,2 @@
+[child-border-box-and-max-content-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/child-border-box-and-max-content-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/child-border-box-and-max-content-002.html.ini
new file mode 100644
index 00000000000..796f0aaa788
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/child-border-box-and-max-content-002.html.ini
@@ -0,0 +1,2 @@
+[child-border-box-and-max-content-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/dynamic-grid-with-auto-fill.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/dynamic-grid-with-auto-fill.html.ini
new file mode 100644
index 00000000000..27f0cfef0e9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/dynamic-grid-with-auto-fill.html.ini
@@ -0,0 +1,2 @@
+[dynamic-grid-with-auto-fill.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/dynamic-grid-within-flexbox.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/dynamic-grid-within-flexbox.html.ini
new file mode 100644
index 00000000000..cfa4826e48f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/dynamic-grid-within-flexbox.html.ini
@@ -0,0 +1,2 @@
+[dynamic-grid-within-flexbox.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/firefox-bug-1881495.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/firefox-bug-1881495.html.ini
new file mode 100644
index 00000000000..5cf6aef4665
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/firefox-bug-1881495.html.ini
@@ -0,0 +1,2 @@
+[firefox-bug-1881495.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-container-baseline-synthesized-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-container-baseline-synthesized-001.html.ini
new file mode 100644
index 00000000000..4bf18d5d0b2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-container-baseline-synthesized-001.html.ini
@@ -0,0 +1,2 @@
+[grid-container-baseline-synthesized-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-container-baseline-synthesized-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-container-baseline-synthesized-002.html.ini
new file mode 100644
index 00000000000..b1f0ed70bf8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-container-baseline-synthesized-002.html.ini
@@ -0,0 +1,2 @@
+[grid-container-baseline-synthesized-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-container-baseline-synthesized-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-container-baseline-synthesized-003.html.ini
new file mode 100644
index 00000000000..30e114170b9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-container-baseline-synthesized-003.html.ini
@@ -0,0 +1,2 @@
+[grid-container-baseline-synthesized-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-container-baseline-synthesized-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-container-baseline-synthesized-004.html.ini
new file mode 100644
index 00000000000..6847ef99a24
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-container-baseline-synthesized-004.html.ini
@@ -0,0 +1,2 @@
+[grid-container-baseline-synthesized-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/explicit-grid-size-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/explicit-grid-size-001.html.ini
new file mode 100644
index 00000000000..1b6e951a0df
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/explicit-grid-size-001.html.ini
@@ -0,0 +1,33 @@
+[explicit-grid-size-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-distribution-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-distribution-001.html.ini
new file mode 100644
index 00000000000..be0c7119c01
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-distribution-001.html.ini
@@ -0,0 +1,18 @@
+[flex-content-distribution-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-resolution-columns-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-resolution-columns-001.html.ini
new file mode 100644
index 00000000000..484372fb8c0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-resolution-columns-001.html.ini
@@ -0,0 +1,45 @@
+[flex-content-resolution-columns-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-resolution-columns-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-resolution-columns-002.html.ini
new file mode 100644
index 00000000000..2005db50f31
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-resolution-columns-002.html.ini
@@ -0,0 +1,33 @@
+[flex-content-resolution-columns-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.worker.js.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-resolution-rows-001.html.ini
index 0f37ae87455..df5eefd6462 100644
--- a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.worker.js.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-resolution-rows-001.html.ini
@@ -1,78 +1,78 @@
-[2d.composite.grid.filter.no_shadow.fillRect.worker.html]
- [2d]
+[flex-content-resolution-rows-001.html]
+ [.grid 1]
expected: FAIL
- [2d 1]
+ [.grid 2]
expected: FAIL
- [2d 2]
+ [.grid 3]
expected: FAIL
- [2d 3]
+ [.grid 4]
expected: FAIL
- [2d 4]
+ [.grid 5]
expected: FAIL
- [2d 5]
+ [.grid 6]
expected: FAIL
- [2d 6]
+ [.grid 7]
expected: FAIL
- [2d 7]
+ [.grid 8]
expected: FAIL
- [2d 8]
+ [.grid 9]
expected: FAIL
- [2d 9]
+ [.grid 10]
expected: FAIL
- [2d 10]
+ [.grid 11]
expected: FAIL
- [2d 11]
+ [.grid 12]
expected: FAIL
- [2d 12]
+ [.grid 13]
expected: FAIL
- [2d 13]
+ [.grid 14]
expected: FAIL
- [2d 14]
+ [.grid 15]
expected: FAIL
- [2d 15]
+ [.grid 16]
expected: FAIL
- [2d 16]
+ [.grid 17]
expected: FAIL
- [2d 17]
+ [.grid 18]
expected: FAIL
- [2d 18]
+ [.grid 19]
expected: FAIL
- [2d 19]
+ [.grid 20]
expected: FAIL
- [2d 20]
+ [.grid 21]
expected: FAIL
- [2d 21]
+ [.grid 22]
expected: FAIL
- [2d 22]
+ [.grid 23]
expected: FAIL
- [2d 23]
+ [.grid 24]
expected: FAIL
- [2d 24]
+ [.grid 25]
expected: FAIL
- [2d 25]
+ [.grid 26]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-resolution-rows-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-resolution-rows-002.html.ini
new file mode 100644
index 00000000000..676deba93c5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-content-resolution-rows-002.html.ini
@@ -0,0 +1,63 @@
+[flex-content-resolution-rows-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-factor-sum-less-than-1-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-factor-sum-less-than-1-001.html.ini
new file mode 100644
index 00000000000..3d5225868c8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-factor-sum-less-than-1-001.html.ini
@@ -0,0 +1,12 @@
+[flex-factor-sum-less-than-1-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-item-grid-container-percentage-rows-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-item-grid-container-percentage-rows-001.html.ini
new file mode 100644
index 00000000000..2a86fe70d0a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/flex-item-grid-container-percentage-rows-001.html.ini
@@ -0,0 +1,2 @@
+[flex-item-grid-container-percentage-rows-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/fr-unit-with-percentage.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/fr-unit-with-percentage.html.ini
new file mode 100644
index 00000000000..089b6068a1a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/fr-unit-with-percentage.html.ini
@@ -0,0 +1,2 @@
+[fr-unit-with-percentage.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/fr-unit.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/fr-unit.html.ini
new file mode 100644
index 00000000000..a6e7e27fa14
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/fr-unit.html.ini
@@ -0,0 +1,2 @@
+[fr-unit.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-explicit-rows-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-explicit-rows-001.html.ini
new file mode 100644
index 00000000000..9ca5b8b71d2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-explicit-rows-001.html.ini
@@ -0,0 +1,3 @@
+[grid-auto-explicit-rows-001.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-fill-columns-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-fill-columns-001.html.ini
new file mode 100644
index 00000000000..732f2599baf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-fill-columns-001.html.ini
@@ -0,0 +1,99 @@
+[grid-auto-fill-columns-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-fill-rows-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-fill-rows-001.html.ini
new file mode 100644
index 00000000000..590b484d291
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-fill-rows-001.html.ini
@@ -0,0 +1,105 @@
+[grid-auto-fill-rows-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-fit-columns-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-fit-columns-001.html.ini
new file mode 100644
index 00000000000..30fcc86cfa5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-fit-columns-001.html.ini
@@ -0,0 +1,105 @@
+[grid-auto-fit-columns-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-fit-rows-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-fit-rows-001.html.ini
new file mode 100644
index 00000000000..d375edf3dc6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-fit-rows-001.html.ini
@@ -0,0 +1,99 @@
+[grid-auto-fit-rows-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-001.html.ini
new file mode 100644
index 00000000000..636820c3dce
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-001.html.ini
@@ -0,0 +1,2 @@
+[grid-auto-repeat-aspect-ratio-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-002.html.ini
new file mode 100644
index 00000000000..5636e067299
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-aspect-ratio-002.html.ini
@@ -0,0 +1,2 @@
+[grid-auto-repeat-aspect-ratio-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-dynamic-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-dynamic-002.html.ini
new file mode 100644
index 00000000000..b509f80456b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-dynamic-002.html.ini
@@ -0,0 +1,2 @@
+[grid-auto-repeat-dynamic-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-dynamic-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-dynamic-003.html.ini
new file mode 100644
index 00000000000..4328b8d9a5c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-dynamic-003.html.ini
@@ -0,0 +1,2 @@
+[grid-auto-repeat-dynamic-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-intrinsic-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-intrinsic-001.html.ini
new file mode 100644
index 00000000000..a2852e33e84
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-intrinsic-001.html.ini
@@ -0,0 +1,24 @@
+[grid-auto-repeat-intrinsic-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-max-size-001.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-max-size-001.tentative.html.ini
new file mode 100644
index 00000000000..5187e488e93
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-max-size-001.tentative.html.ini
@@ -0,0 +1,60 @@
+[grid-auto-repeat-max-size-001.tentative.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16: Percentage padding, min-content]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19: Percentage padding, max-content]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-max-size-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-max-size-002.html.ini
new file mode 100644
index 00000000000..97c343c253a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-max-size-002.html.ini
@@ -0,0 +1,12 @@
+[grid-auto-repeat-max-size-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-max-size-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-max-size-001.html.ini
new file mode 100644
index 00000000000..a3170ca7e6c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-max-size-001.html.ini
@@ -0,0 +1,12 @@
+[grid-auto-repeat-min-max-size-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-size-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-size-001.html.ini
new file mode 100644
index 00000000000..ca26a99d107
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-size-001.html.ini
@@ -0,0 +1,36 @@
+[grid-auto-repeat-min-size-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-size-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-size-002.html.ini
new file mode 100644
index 00000000000..322021d0784
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-size-002.html.ini
@@ -0,0 +1,12 @@
+[grid-auto-repeat-min-size-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-size-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-size-003.html.ini
new file mode 100644
index 00000000000..7cf8086d46c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-size-003.html.ini
@@ -0,0 +1,3 @@
+[grid-auto-repeat-min-size-003.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-size-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-size-004.html.ini
new file mode 100644
index 00000000000..1a5322676df
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-min-size-004.html.ini
@@ -0,0 +1,3 @@
+[grid-auto-repeat-min-size-004.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-minmax.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-minmax.html.ini
new file mode 100644
index 00000000000..821eeaaa354
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-minmax.html.ini
@@ -0,0 +1,2 @@
+[grid-auto-repeat-minmax.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-001.html.ini
new file mode 100644
index 00000000000..07fdcfd2d89
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-001.html.ini
@@ -0,0 +1,2 @@
+[grid-auto-repeat-multiple-values-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-002.html.ini
new file mode 100644
index 00000000000..dff55667834
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-002.html.ini
@@ -0,0 +1,2 @@
+[grid-auto-repeat-multiple-values-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-003.html.ini
new file mode 100644
index 00000000000..2b35667ed37
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-003.html.ini
@@ -0,0 +1,2 @@
+[grid-auto-repeat-multiple-values-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-positioned-container-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-positioned-container-001.html.ini
new file mode 100644
index 00000000000..0eb499e339f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-auto-repeat-positioned-container-001.html.ini
@@ -0,0 +1,2 @@
+[grid-auto-repeat-positioned-container-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-change-auto-repeat-tracks.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-change-auto-repeat-tracks.html.ini
new file mode 100644
index 00000000000..d2e620087ff
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-change-auto-repeat-tracks.html.ini
@@ -0,0 +1,48 @@
+[grid-change-auto-repeat-tracks.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-change-fit-content-argument-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-change-fit-content-argument-001.html.ini
new file mode 100644
index 00000000000..64d82750dee
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-change-fit-content-argument-001.html.ini
@@ -0,0 +1,18 @@
+[grid-change-fit-content-argument-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-change-intrinsic-size-with-auto-repeat-tracks-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-change-intrinsic-size-with-auto-repeat-tracks-001.html.ini
new file mode 100644
index 00000000000..67d68630066
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-change-intrinsic-size-with-auto-repeat-tracks-001.html.ini
@@ -0,0 +1,24 @@
+[grid-change-intrinsic-size-with-auto-repeat-tracks-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-auto-repeat-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-auto-repeat-001.html.ini
new file mode 100644
index 00000000000..2167323ce08
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-auto-repeat-001.html.ini
@@ -0,0 +1,36 @@
+[grid-inline-auto-repeat-001.html]
+ ['autoFillColumns' with: grid-template-columns: repeat(auto-fill, 10px); and grid-template-rows: 20px;]
+ expected: FAIL
+
+ ['autoFitColumns' with: grid-template-columns: repeat(auto-fit, 10px); and grid-template-rows: 20px;]
+ expected: FAIL
+
+ ['autoFillRows' with: grid-template-columns: 20px; and grid-template-rows: repeat(auto-fill, 10px);]
+ expected: FAIL
+
+ ['autoFitRows' with: grid-template-columns: 20px; and grid-template-rows: repeat(auto-fit, 10px);]
+ expected: FAIL
+
+ ['autoFillColumns' with: grid-template-columns: repeat(auto-fill, 9px); and grid-template-rows: 20px;]
+ expected: FAIL
+
+ ['autoFitColumns' with: grid-template-columns: repeat(auto-fit, 9px); and grid-template-rows: 20px;]
+ expected: FAIL
+
+ ['autoFillRows' with: grid-template-columns: 20px; and grid-template-rows: repeat(auto-fill, 9px);]
+ expected: FAIL
+
+ ['autoFitRows' with: grid-template-columns: 20px; and grid-template-rows: repeat(auto-fit, 9px);]
+ expected: FAIL
+
+ ['autoFillColumns' with: grid-template-columns: repeat(auto-fill, 30px); and grid-template-rows: 20px;]
+ expected: FAIL
+
+ ['autoFitColumns' with: grid-template-columns: repeat(auto-fit, 30px); and grid-template-rows: 20px;]
+ expected: FAIL
+
+ ['autoFillRows' with: grid-template-columns: 20px; and grid-template-rows: repeat(auto-fill, 30px);]
+ expected: FAIL
+
+ ['autoFitRows' with: grid-template-columns: 20px; and grid-template-rows: repeat(auto-fit, 30px);]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-flexible-lengths-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-flexible-lengths-001.html.ini
new file mode 100644
index 00000000000..9388e1e2166
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-flexible-lengths-001.html.ini
@@ -0,0 +1,186 @@
+[grid-inline-support-flexible-lengths-001.html]
+ ['emptyGrid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 10fr; and grid-template-rows: 10fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 10fr; and grid-template-rows: 10fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 0.5fr; and grid-template-rows: 0.5fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 0.5fr; and grid-template-rows: 0.5fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: .5fr; and grid-template-rows: .5fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: .5fr; and grid-template-rows: .5fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: minmax(100px, 1fr); and grid-template-rows: minmax(100px, 1fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(100px, 1fr); and grid-template-rows: minmax(100px, 1fr);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: minmax(1fr, 1fr); and grid-template-rows: minmax(1fr, 1fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(1fr, 1fr); and grid-template-rows: minmax(1fr, 1fr);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 0.25fr 0.75fr; and grid-template-rows: 0.25fr 0.75fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 0.25fr 0.75fr; and grid-template-rows: 0.25fr 0.75fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1fr 2fr 1fr; and grid-template-rows: 1fr 2fr 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr 2fr 1fr; and grid-template-rows: 1fr 2fr 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto 1fr 4fr 3fr 2fr; and grid-template-rows: auto 1fr 4fr 3fr 2fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto 1fr 4fr 3fr 2fr; and grid-template-rows: auto 1fr 4fr 3fr 2fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1fr 4fr 100px 3fr 2fr; and grid-template-rows: 1fr 4fr 100px 3fr 2fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr 4fr 100px 3fr 2fr; and grid-template-rows: 1fr 4fr 100px 3fr 2fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: max-content 1fr; and grid-template-rows: max-content 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: max-content 1fr; and grid-template-rows: max-content 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: min-content 1fr; and grid-template-rows: min-content 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: min-content 1fr; and grid-template-rows: min-content 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 300px 1fr; and grid-template-rows: 200px 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 300px 1fr; and grid-template-rows: 200px 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 800px 1fr; and grid-template-rows: 600px 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 800px 1fr; and grid-template-rows: 600px 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1000px 1fr; and grid-template-rows: 700px 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1000px 1fr; and grid-template-rows: 700px 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: calc(50px + 50%) 1fr; and grid-template-rows: calc(50px + 50%) 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: calc(50px + 50%) 1fr; and grid-template-rows: calc(50px + 50%) 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: minmax(100px, 300px) 1fr; and grid-template-rows: minmax(100px, 200px) 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(100px, 300px) 1fr; and grid-template-rows: minmax(100px, 200px) 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(4, 1fr); and grid-template-rows: repeat(4, 1fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(4, 1fr); and grid-template-rows: repeat(4, 1fr);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] repeat(4, [b\] 1fr [c\]) [d\]; and grid-template-rows: [z\] repeat(4, [y\] 1fr) [x\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] repeat(4, [b\] 1fr [c\]) [d\]; and grid-template-rows: [z\] repeat(4, [y\] 1fr) [x\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: fr; and grid-template-rows: fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: fr; and grid-template-rows: fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1 fr; and grid-template-rows: 1 fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1 fr; and grid-template-rows: 1 fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1free-space; and grid-template-rows: 1free-space;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1free-space; and grid-template-rows: 1free-space;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: -2fr; and grid-template-rows: -2fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: -2fr; and grid-template-rows: -2fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 0,5fr; and grid-template-rows: 0,5fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 0,5fr; and grid-template-rows: 0,5fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: calc(1fr + 100px); and grid-template-rows: calc(1fr + 100px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: calc(1fr + 100px); and grid-template-rows: calc(1fr + 100px);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: (1fr) auto; and grid-template-rows: (1fr) auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: (1fr) auto; and grid-template-rows: (1fr) auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: minmax(1fr, 1000px); and grid-template-rows: minmax(1fr, 700px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(1fr, 1000px); and grid-template-rows: minmax(1fr, 700px);]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-grid-template-areas-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-grid-template-areas-001.html.ini
new file mode 100644
index 00000000000..1cc462659b0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-grid-template-areas-001.html.ini
@@ -0,0 +1,135 @@
+[grid-inline-support-grid-template-areas-001.html]
+ ['inline-grid' with: grid-template-areas: none;]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: ".";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "lower UPPER 10 -minus _low 1-st ©copy_right line¶";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a b";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a b" "c d";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a b" "c d";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a b""c d";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a b"\t"c d";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a b"\n"c d";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a b" "a b";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a a" "b b";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: ". a ." "b a c";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: ".. a ..." "b a c";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: ".a..." "b a c";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "head head" "nav main" "foot .";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "head head" "nav main" "foot ....";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "head head" "nav main" "foot.";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: ". header header ." "nav main main main" "nav footer footer .";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "... header header ...." "nav main main main" "nav footer footer ....";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "...header header...." "nav main main main" "nav footer footer....";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "title stats" "score stats" "board board" "ctrls ctrls";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "title board" "stats board" "score ctrls";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: ". a" "b a" ". a";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: ".. a" "b a" "... a";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "..a" "b a" ".a";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a a a" "b b b";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: ". ." "a a";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "... ...." "a a";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: a;]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a" "b c";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a b" "c" "d e";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a b c" "d e";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a b"-"c d";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a b" - "c d";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a b" . "c d";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a b a";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a" "b" "a";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a b" "b b";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "b a" "b b";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a b" "b a";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "a ." ". a";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: ",";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "10%";]
+ expected: FAIL
+
+ ['inline-grid' with: grid-template-areas: "USD$";]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-grid-template-columns-rows-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-grid-template-columns-rows-001.html.ini
new file mode 100644
index 00000000000..72d264082e8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-grid-template-columns-rows-001.html.ini
@@ -0,0 +1,132 @@
+[grid-inline-support-grid-template-columns-rows-001.html]
+ ['emptyGrid' with: grid-template-columns: none; and grid-template-rows: none;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: none; and grid-template-rows: none;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto; and grid-template-rows: auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto; and grid-template-rows: auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 500px; and grid-template-rows: 300px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 500px; and grid-template-rows: 300px;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 40em; and grid-template-rows: 20em;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 40em; and grid-template-rows: 20em;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 25%; and grid-template-rows: 50%;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 25%; and grid-template-rows: 50%;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: calc(200px + 10%); and grid-template-rows: calc(25% + 50px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: calc(200px + 10%); and grid-template-rows: calc(25% + 50px);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: max-content; and grid-template-rows: max-content;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: max-content; and grid-template-rows: max-content;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: min-content; and grid-template-rows: min-content;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: min-content; and grid-template-rows: min-content;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: minmax(200px, 400px); and grid-template-rows: minmax(50px, 100px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(200px, 400px); and grid-template-rows: minmax(50px, 100px);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: minmax(calc(10% + 200px), calc(800px - 20%)); and grid-template-rows: minmax(calc(20% + 50px), calc(600px - 10%));]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(calc(10% + 200px), calc(800px - 20%)); and grid-template-rows: minmax(calc(20% + 50px), calc(600px - 10%));]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 500px 200px 50px; and grid-template-rows: 100px 300px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 500px 200px 50px; and grid-template-rows: 100px 300px;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 40em 100px 15%; and grid-template-rows: 50px 20em 10%;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 40em 100px 15%; and grid-template-rows: 50px 20em 10%;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 200px 1fr; and grid-template-rows: 1fr 100px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 200px 1fr; and grid-template-rows: 1fr 100px;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 2fr 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 2fr 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: minmax(25px, 75px) 750px; and grid-template-rows: minmax(50px, 150px) 500px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(25px, 75px) 750px; and grid-template-rows: minmax(50px, 150px) 500px;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: min-content 1fr calc(20px + 10%) minmax(30em, 50em); and grid-template-rows: min-content 1fr calc(10% + 40px) minmax(3em, 5em);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: min-content 1fr calc(20px + 10%) minmax(30em, 50em); and grid-template-rows: min-content 1fr calc(10% + 40px) minmax(3em, 5em);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: foo; and grid-template-rows: bar;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: foo; and grid-template-rows: bar;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto none; and grid-template-rows: none auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto none; and grid-template-rows: none auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 100px, 200px; and grid-template-rows: 300px, 400px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px, 200px; and grid-template-rows: 300px, 400px;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: minmax(100px, 200px, 300px); and grid-template-rows: minmax(100px, 200px, 300px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(100px, 200px, 300px); and grid-template-rows: minmax(100px, 200px, 300px);]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-named-grid-lines-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-named-grid-lines-001.html.ini
new file mode 100644
index 00000000000..795cee45f73
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-named-grid-lines-001.html.ini
@@ -0,0 +1,240 @@
+[grid-inline-support-named-grid-lines-001.html]
+ ['emptyGrid' with: grid-template-columns: [first\] auto [last\]; and grid-template-rows: [first\] auto [last\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [first\] auto [last\]; and grid-template-rows: [first\] auto [last\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [F1rst-L1_n3\] auto [L4st-L1_n3\]; and grid-template-rows: [F1rst-L1_n3\] auto [L4st-L1_n3\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [F1rst-L1_n3\] auto [L4st-L1_n3\]; and grid-template-rows: [F1rst-L1_n3\] auto [L4st-L1_n3\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [\] auto [ \]; and grid-template-rows: [ \] auto [\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [\] auto [ \]; and grid-template-rows: [ \] auto [\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [first\] auto; and grid-template-rows: [first\] auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [first\] auto; and grid-template-rows: [first\] auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto [last\]; and grid-template-rows: auto [last\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto [last\]; and grid-template-rows: auto [last\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [line\] auto [line\]; and grid-template-rows: [line\] auto [line\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [line\] auto [line\]; and grid-template-rows: [line\] auto [line\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [first line\] auto [last line\]; and grid-template-rows: [first line\] auto [last line\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [first line\] auto [last line\]; and grid-template-rows: [first line\] auto [last line\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] auto [b\] auto [c\]; and grid-template-rows: [a\] auto [b\] auto [c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] auto [b\] auto [c\]; and grid-template-rows: [a\] auto [b\] auto [c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto [b\] auto [c\]; and grid-template-rows: auto [b\] auto [c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto [b\] auto [c\]; and grid-template-rows: auto [b\] auto [c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] auto auto [c\]; and grid-template-rows: [a\] auto auto [c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] auto auto [c\]; and grid-template-rows: [a\] auto auto [c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] auto [b\] auto; and grid-template-rows: [a\] auto [b\] auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] auto [b\] auto; and grid-template-rows: [a\] auto [b\] auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] auto auto; and grid-template-rows: [a\] auto auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] auto auto; and grid-template-rows: [a\] auto auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto [b\] auto; and grid-template-rows: auto [b\] auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto [b\] auto; and grid-template-rows: auto [b\] auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto auto [c\]; and grid-template-rows: auto auto [c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto auto [c\]; and grid-template-rows: auto auto [c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] auto [a\] auto [a\]; and grid-template-rows: [a\] auto [a\] auto [a\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] auto [a\] auto [a\]; and grid-template-rows: [a\] auto [a\] auto [a\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a b c\] auto [a b c\] auto [a b c\]; and grid-template-rows: [a b c\] auto [a b c\] auto [a b c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a b c\] auto [a b c\] auto [a b c\]; and grid-template-rows: [a b c\] auto [a b c\] auto [a b c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] 40em [b\] 100px [c\] 15% [d\]; and grid-template-rows: [z\] 50px [y\] 20em [x\] 10% [w\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] 40em [b\] 100px [c\] 15% [d\]; and grid-template-rows: [z\] 50px [y\] 20em [x\] 10% [w\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] 200px [b\] 1fr [c\]; and grid-template-rows: [z\] 1fr [y\] 100px [x\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] 200px [b\] 1fr [c\]; and grid-template-rows: [z\] 1fr [y\] 100px [x\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] min-content [b\] 1fr [c\] calc(20px + 10%) [d\] minmax(30em, 50em) [e\]; and grid-template-rows: [z\] min-content [y\] 1fr [x\] calc(10% + 40px) [w\] minmax(3em, 5em) [v\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] min-content [b\] 1fr [c\] calc(20px + 10%) [d\] minmax(30em, 50em) [e\]; and grid-template-rows: [z\] min-content [y\] 1fr [x\] calc(10% + 40px) [w\] minmax(3em, 5em) [v\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\]; and grid-template-rows: [a\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\]; and grid-template-rows: [a\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a b\]; and grid-template-rows: [a b\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a b\]; and grid-template-rows: [a b\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] none [b\]; and grid-template-rows: [a\] none [b\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] none [b\]; and grid-template-rows: [a\] none [b\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] [b\]; and grid-template-rows: [a\] [b\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] [b\]; and grid-template-rows: [a\] [b\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: a auto b; and grid-template-rows: a auto b;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: a auto b; and grid-template-rows: a auto b;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: (a) auto (b); and grid-template-rows: (a) auto (b);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: (a) auto (b); and grid-template-rows: (a) auto (b);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 'a' auto 'b'; and grid-template-rows: 'a' auto 'b';]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 'a' auto 'b'; and grid-template-rows: 'a' auto 'b';]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: "a" auto "b"; and grid-template-rows: "a" auto "b";]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: "a" auto "b"; and grid-template-rows: "a" auto "b";]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a, b\] auto [a, b\]; and grid-template-rows: [a, b\] auto [a, b\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a, b\] auto [a, b\]; and grid-template-rows: [a, b\] auto [a, b\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] [b\] auto [c d\] [e\]; and grid-template-rows: [a\] [b\] auto [c d\] [e\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] [b\] auto [c d\] [e\]; and grid-template-rows: [a\] [b\] auto [c d\] [e\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a [b\]\] auto [c\]; and grid-template-rows: [a [b\]\] auto [c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a [b\]\] auto [c\]; and grid-template-rows: [a [b\]\] auto [c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] auto [[b\]\]; and grid-template-rows: [a\] auto [[b\]\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] auto [[b\]\]; and grid-template-rows: [a\] auto [[b\]\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a auto [b\]; and grid-template-rows: [a auto [b\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a auto [b\]; and grid-template-rows: [a auto [b\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a 100px\] auto [b\]; and grid-template-rows: [a 100px\] auto [b\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a 100px\] auto [b\]; and grid-template-rows: [a 100px\] auto [b\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a 50%\] auto [b\]; and grid-template-rows: [a 50%\] auto [b\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a 50%\] auto [b\]; and grid-template-rows: [a 50%\] auto [b\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [5\] auto [10\]; and grid-template-rows: [5\] auto [10\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [5\] auto [10\]; and grid-template-rows: [5\] auto [10\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a.\] auto [b*\]; and grid-template-rows: [a.\] auto [b*\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a.\] auto [b*\]; and grid-template-rows: [a.\] auto [b*\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [#a\] auto [$b\]; and grid-template-rows: [#a\] auto [$b\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [#a\] auto [$b\]; and grid-template-rows: [#a\] auto [$b\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [initial\] auto; and grid-template-rows: [initial\] auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [initial\] auto; and grid-template-rows: [initial\] auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [inherit\] auto; and grid-template-rows: [inherit\] auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [inherit\] auto; and grid-template-rows: [inherit\] auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [default\] auto; and grid-template-rows: [default\] auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [default\] auto; and grid-template-rows: [default\] auto;]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-repeat-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-repeat-001.html.ini
new file mode 100644
index 00000000000..f467acb877c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-support-repeat-001.html.ini
@@ -0,0 +1,120 @@
+[grid-inline-support-repeat-001.html]
+ ['emptyGrid' with: grid-template-columns: repeat(1, auto); and grid-template-rows: repeat(1, auto);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(1, auto); and grid-template-rows: repeat(1, auto);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(2, auto); and grid-template-rows: repeat(2, auto);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(2, auto); and grid-template-rows: repeat(2, auto);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(2, minmax(50px, calc(50px + 50%))); and grid-template-rows: repeat(2, minmax(50px, calc(50px + 50%)));]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(2, minmax(50px, calc(50px + 50%))); and grid-template-rows: repeat(2, minmax(50px, calc(50px + 50%)));]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(5, 10%); and grid-template-rows: repeat(5, 10%);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(5, 10%); and grid-template-rows: repeat(5, 10%);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: max-content repeat(2, 25%) 1fr; and grid-template-rows: 100px repeat(2, 25%) 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: max-content repeat(2, 25%) 1fr; and grid-template-rows: max-content repeat(2, 25%) 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(2, min-content 50px); and grid-template-rows: repeat(2, min-content 50px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(2, min-content 50px); and grid-template-rows: repeat(2, min-content 50px);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(2, [a\] minmax(50px, 100px) [b\] 25em [c\]); and grid-template-rows: repeat(2, [a\] minmax(50px, 100px) [b\] 25em [c\]);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(2, [a\] minmax(50px, 100px) [b\] 25em [c\]); and grid-template-rows: repeat(2, [a\] minmax(50px, 100px) [b\] 25em [c\]);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] repeat(2, auto [b\] 100px) [c\]; and grid-template-rows: [a\] repeat(2, auto [b\] 100px) [c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] repeat(2, auto [b\] 100px) [c\]; and grid-template-rows: [a\] repeat(2, auto [b\] 100px) [c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] auto repeat(2, [b\] 100px) [c\]; and grid-template-rows: [a\] auto repeat(2, [b\] 100px) [c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] auto repeat(2, [b\] 100px) [c\]; and grid-template-rows: [a\] auto repeat(2, [b\] 100px) [c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] repeat(2, auto [b\]) 100px [c\]; and grid-template-rows: [a\] repeat(2, auto [b\]) 100px [c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] repeat(2, auto [b\]) 100px [c\]; and grid-template-rows: [a\] repeat(2, auto [b\]) 100px [c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] repeat(2, [b\] 100px); and grid-template-rows: [a\] repeat(2, [b\] 100px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] repeat(2, [b\] 100px); and grid-template-rows: [a\] repeat(2, [b\] 100px);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] repeat(2, [b\] auto [c\]) [d\]; and grid-template-rows: [a\] repeat(2, [b\] auto [c\]) [d\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] repeat(2, [b\] auto [c\]) [d\]; and grid-template-rows: [a\] repeat(2, [b\] auto [c\]) [d\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] min-content repeat(2, [b\] 1fr [c\] calc(20px + 10%)) [d\] minmax(30em, 50em) [e\]; and grid-template-rows: [z\] min-content repeat(2, [y\] 1fr [x\] calc(10% + 40px)) [w\] minmax(3em, 5em) [v\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] min-content repeat(2, [b\] 1fr [c\] calc(20px + 10%)) [d\] minmax(30em, 50em) [e\]; and grid-template-rows: [z\] min-content repeat(2, [y\] 1fr [x\] calc(10% + 40px)) [w\] minmax(3em, 5em) [v\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(-1, auto); and grid-template-rows: repeat(-1, auto);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(-1, auto); and grid-template-rows: repeat(-1, auto);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(auto, 2); and grid-template-rows: repeat(auto, 2);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(auto, 2); and grid-template-rows: repeat(auto, 2);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat 2, auto; and grid-template-rows: repeat 2, auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat 2, auto; and grid-template-rows: repeat 2, auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(2 auto); and grid-template-rows: repeat(2 auto);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(2 auto); and grid-template-rows: repeat(2 auto);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 100px (repeat 2, auto); and grid-template-rows: (repeat 2, auto);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px (repeat 2, auto); and grid-template-rows: (repeat 2, auto);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(2, 50px repeat(2, 100px)); and grid-template-rows: repeat(2, 50px repeat(2, 100px));]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(2, 50px repeat(2, 100px)); and grid-template-rows: repeat(2, 50px repeat(2, 100px));]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 100px repeat(2, [a\]); and grid-template-rows: 100px repeat(2, [a\]);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px repeat(2, [a\]); and grid-template-rows: 100px repeat(2, [a\]);]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.html.ini
new file mode 100644
index 00000000000..33f909bbe5c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.html.ini
@@ -0,0 +1,114 @@
+[grid-inline-template-columns-rows-resolved-values-001.html]
+ ['grid' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto auto; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: ; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: ; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: auto auto;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 70px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 70px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px 70px;]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.tentative.html.ini
new file mode 100644
index 00000000000..1347a6153ba
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.tentative.html.ini
@@ -0,0 +1,228 @@
+[grid-inline-template-columns-rows-resolved-values-001.tentative.html]
+ ['grid' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto auto; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: auto auto; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: ; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: ; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: ; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: ; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: auto auto;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: auto auto;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 70px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 70px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 70px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 70px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px 70px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px 70px;]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-layout-auto-tracks.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-layout-auto-tracks.html.ini
new file mode 100644
index 00000000000..d6c0951b7e1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-layout-auto-tracks.html.ini
@@ -0,0 +1,2 @@
+[grid-layout-auto-tracks.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-layout-basic.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-layout-basic.html.ini
new file mode 100644
index 00000000000..c8c0b297604
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-layout-basic.html.ini
@@ -0,0 +1,2 @@
+[grid-layout-basic.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-layout-repeat-notation.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-layout-repeat-notation.html.ini
new file mode 100644
index 00000000000..4f4b973fa03
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-layout-repeat-notation.html.ini
@@ -0,0 +1,2 @@
+[grid-layout-repeat-notation.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-limits-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-limits-001.html.ini
new file mode 100644
index 00000000000..31185201a37
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-limits-001.html.ini
@@ -0,0 +1,6 @@
+[grid-limits-001.html]
+ [repeat(9999) should be supported in both axises]
+ expected: FAIL
+
+ [Implicit grid should support lines [-10k, 10k\].]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-minimum-contribution-with-percentages.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-minimum-contribution-with-percentages.html.ini
new file mode 100644
index 00000000000..73685e6f152
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-minimum-contribution-with-percentages.html.ini
@@ -0,0 +1,48 @@
+[grid-minimum-contribution-with-percentages.html]
+ [auto - columns]
+ expected: FAIL
+
+ [auto - rows]
+ expected: FAIL
+
+ [min - columns]
+ expected: FAIL
+
+ [min - rows]
+ expected: FAIL
+
+ [max - columns]
+ expected: FAIL
+
+ [max - rows]
+ expected: FAIL
+
+ [size - columns]
+ expected: FAIL
+
+ [size - rows]
+ expected: FAIL
+
+ [min max - columns]
+ expected: FAIL
+
+ [min max - rows]
+ expected: FAIL
+
+ [min size - columns]
+ expected: FAIL
+
+ [min size - rows]
+ expected: FAIL
+
+ [max size - columns]
+ expected: FAIL
+
+ [max size - rows]
+ expected: FAIL
+
+ [min max size - columns]
+ expected: FAIL
+
+ [min max size - rows]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-001.html.ini
new file mode 100644
index 00000000000..bfb06f353c3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-001.html.ini
@@ -0,0 +1,312 @@
+[grid-percentage-rows-indefinite-height-001.html]
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
+
+ [.grid 61]
+ expected: FAIL
+
+ [.grid 62]
+ expected: FAIL
+
+ [.grid 63]
+ expected: FAIL
+
+ [.grid 64]
+ expected: FAIL
+
+ [.grid 65]
+ expected: FAIL
+
+ [.grid 66]
+ expected: FAIL
+
+ [.grid 67]
+ expected: FAIL
+
+ [.grid 68]
+ expected: FAIL
+
+ [.grid 69]
+ expected: FAIL
+
+ [.grid 70]
+ expected: FAIL
+
+ [.grid 71]
+ expected: FAIL
+
+ [.grid 72]
+ expected: FAIL
+
+ [.grid 74]
+ expected: FAIL
+
+ [.grid 75]
+ expected: FAIL
+
+ [.grid 76]
+ expected: FAIL
+
+ [.grid 77]
+ expected: FAIL
+
+ [.grid 78]
+ expected: FAIL
+
+ [.grid 80]
+ expected: FAIL
+
+ [.grid 81]
+ expected: FAIL
+
+ [.grid 82]
+ expected: FAIL
+
+ [.grid 83]
+ expected: FAIL
+
+ [.grid 84]
+ expected: FAIL
+
+ [.grid 86]
+ expected: FAIL
+
+ [.grid 87]
+ expected: FAIL
+
+ [.grid 88]
+ expected: FAIL
+
+ [.grid 89]
+ expected: FAIL
+
+ [.grid 90]
+ expected: FAIL
+
+ [.grid 92]
+ expected: FAIL
+
+ [.grid 93]
+ expected: FAIL
+
+ [.grid 94]
+ expected: FAIL
+
+ [.grid 95]
+ expected: FAIL
+
+ [.grid 96]
+ expected: FAIL
+
+ [.grid 98]
+ expected: FAIL
+
+ [.grid 99]
+ expected: FAIL
+
+ [.grid 100]
+ expected: FAIL
+
+ [.grid 101]
+ expected: FAIL
+
+ [.grid 102]
+ expected: FAIL
+
+ [.grid 104]
+ expected: FAIL
+
+ [.grid 105]
+ expected: FAIL
+
+ [.grid 106]
+ expected: FAIL
+
+ [.grid 107]
+ expected: FAIL
+
+ [.grid 108]
+ expected: FAIL
+
+ [.grid 110]
+ expected: FAIL
+
+ [.grid 111]
+ expected: FAIL
+
+ [.grid 112]
+ expected: FAIL
+
+ [.grid 113]
+ expected: FAIL
+
+ [.grid 114]
+ expected: FAIL
+
+ [.grid 116]
+ expected: FAIL
+
+ [.grid 117]
+ expected: FAIL
+
+ [.grid 118]
+ expected: FAIL
+
+ [.grid 119]
+ expected: FAIL
+
+ [.grid 120]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-002.html.ini
new file mode 100644
index 00000000000..0df005234cf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-002.html.ini
@@ -0,0 +1,12 @@
+[grid-percentage-rows-indefinite-height-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-repeat-max-width-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-repeat-max-width-001.html.ini
new file mode 100644
index 00000000000..9fdc3e2c723
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-repeat-max-width-001.html.ini
@@ -0,0 +1,2 @@
+[grid-repeat-max-width-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-shorthand-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-shorthand-001.html.ini
new file mode 100644
index 00000000000..116eb8d405c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-shorthand-001.html.ini
@@ -0,0 +1,6 @@
+[grid-shorthand-001.html]
+ [Check gutter properties initial values]
+ expected: FAIL
+
+ [Check gutter properties after setting 'grid' shorthand]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-flexible-lengths-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-flexible-lengths-001.html.ini
new file mode 100644
index 00000000000..d382a520cb5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-flexible-lengths-001.html.ini
@@ -0,0 +1,186 @@
+[grid-support-flexible-lengths-001.html]
+ ['emptyGrid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 10fr; and grid-template-rows: 10fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 10fr; and grid-template-rows: 10fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 0.5fr; and grid-template-rows: 0.5fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 0.5fr; and grid-template-rows: 0.5fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: .5fr; and grid-template-rows: .5fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: .5fr; and grid-template-rows: .5fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: minmax(100px, 1fr); and grid-template-rows: minmax(100px, 1fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(100px, 1fr); and grid-template-rows: minmax(100px, 1fr);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: minmax(1fr, 1fr); and grid-template-rows: minmax(1fr, 1fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(1fr, 1fr); and grid-template-rows: minmax(1fr, 1fr);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 0.25fr 0.75fr; and grid-template-rows: 0.25fr 0.75fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 0.25fr 0.75fr; and grid-template-rows: 0.25fr 0.75fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1fr 2fr 1fr; and grid-template-rows: 1fr 2fr 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr 2fr 1fr; and grid-template-rows: 1fr 2fr 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto 1fr 4fr 3fr 2fr; and grid-template-rows: auto 1fr 4fr 3fr 2fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto 1fr 4fr 3fr 2fr; and grid-template-rows: auto 1fr 4fr 3fr 2fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1fr 4fr 100px 3fr 2fr; and grid-template-rows: 1fr 4fr 100px 3fr 2fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr 4fr 100px 3fr 2fr; and grid-template-rows: 1fr 4fr 100px 3fr 2fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: max-content 1fr; and grid-template-rows: max-content 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: max-content 1fr; and grid-template-rows: max-content 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: min-content 1fr; and grid-template-rows: min-content 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: min-content 1fr; and grid-template-rows: min-content 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 300px 1fr; and grid-template-rows: 200px 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 300px 1fr; and grid-template-rows: 200px 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 800px 1fr; and grid-template-rows: 600px 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 800px 1fr; and grid-template-rows: 600px 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1000px 1fr; and grid-template-rows: 700px 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1000px 1fr; and grid-template-rows: 700px 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: calc(50px + 50%) 1fr; and grid-template-rows: calc(50px + 50%) 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: calc(50px + 50%) 1fr; and grid-template-rows: calc(50px + 50%) 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: minmax(100px, 300px) 1fr; and grid-template-rows: minmax(100px, 200px) 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(100px, 300px) 1fr; and grid-template-rows: minmax(100px, 200px) 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(4, 1fr); and grid-template-rows: repeat(4, 1fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(4, 1fr); and grid-template-rows: repeat(4, 1fr);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] repeat(4, [b\] 1fr [c\]) [d\]; and grid-template-rows: [z\] repeat(4, [y\] 1fr) [x\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] repeat(4, [b\] 1fr [c\]) [d\]; and grid-template-rows: [z\] repeat(4, [y\] 1fr) [x\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: fr; and grid-template-rows: fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: fr; and grid-template-rows: fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1 fr; and grid-template-rows: 1 fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1 fr; and grid-template-rows: 1 fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1free-space; and grid-template-rows: 1free-space;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1free-space; and grid-template-rows: 1free-space;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: -2fr; and grid-template-rows: -2fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: -2fr; and grid-template-rows: -2fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 0,5fr; and grid-template-rows: 0,5fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 0,5fr; and grid-template-rows: 0,5fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: calc(1fr + 100px); and grid-template-rows: calc(1fr + 100px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: calc(1fr + 100px); and grid-template-rows: calc(1fr + 100px);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: (1fr) auto; and grid-template-rows: (1fr) auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: (1fr) auto; and grid-template-rows: (1fr) auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: minmax(1fr, 1000px); and grid-template-rows: minmax(1fr, 700px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(1fr, 1000px); and grid-template-rows: minmax(1fr, 700px);]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-grid-template-areas-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-grid-template-areas-001.html.ini
new file mode 100644
index 00000000000..3b53069d041
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-grid-template-areas-001.html.ini
@@ -0,0 +1,135 @@
+[grid-support-grid-template-areas-001.html]
+ ['grid' with: grid-template-areas: none;]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: ".";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "lower UPPER 10 -minus _low 1-st ©copy_right line¶";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a b";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a b" "c d";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a b" "c d";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a b""c d";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a b"\t"c d";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a b"\n"c d";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a b" "a b";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a a" "b b";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: ". a ." "b a c";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: ".. a ..." "b a c";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: ".a..." "b a c";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "head head" "nav main" "foot .";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "head head" "nav main" "foot ....";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "head head" "nav main" "foot.";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: ". header header ." "nav main main main" "nav footer footer .";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "... header header ...." "nav main main main" "nav footer footer ....";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "...header header...." "nav main main main" "nav footer footer....";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "title stats" "score stats" "board board" "ctrls ctrls";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "title board" "stats board" "score ctrls";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: ". a" "b a" ". a";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: ".. a" "b a" "... a";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "..a" "b a" ".a";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a a a" "b b b";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: ". ." "a a";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "... ...." "a a";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: a;]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a" "b c";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a b" "c" "d e";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a b c" "d e";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a b"-"c d";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a b" - "c d";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a b" . "c d";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a b a";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a" "b" "a";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a b" "b b";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "b a" "b b";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a b" "b a";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "a ." ". a";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: ",";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "10%";]
+ expected: FAIL
+
+ ['grid' with: grid-template-areas: "USD$";]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-grid-template-columns-rows-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-grid-template-columns-rows-001.html.ini
new file mode 100644
index 00000000000..d716d9394e5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-grid-template-columns-rows-001.html.ini
@@ -0,0 +1,132 @@
+[grid-support-grid-template-columns-rows-001.html]
+ ['emptyGrid' with: grid-template-columns: none; and grid-template-rows: none;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: none; and grid-template-rows: none;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto; and grid-template-rows: auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto; and grid-template-rows: auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 500px; and grid-template-rows: 300px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 500px; and grid-template-rows: 300px;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 40em; and grid-template-rows: 20em;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 40em; and grid-template-rows: 20em;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 25%; and grid-template-rows: 50%;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 25%; and grid-template-rows: 50%;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: calc(200px + 10%); and grid-template-rows: calc(25% + 50px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: calc(200px + 10%); and grid-template-rows: calc(25% + 50px);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: max-content; and grid-template-rows: max-content;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: max-content; and grid-template-rows: max-content;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: min-content; and grid-template-rows: min-content;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: min-content; and grid-template-rows: min-content;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: minmax(200px, 400px); and grid-template-rows: minmax(50px, 100px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(200px, 400px); and grid-template-rows: minmax(50px, 100px);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: minmax(calc(10% + 200px), calc(800px - 20%)); and grid-template-rows: minmax(calc(20% + 50px), calc(600px - 10%));]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(calc(10% + 200px), calc(800px - 20%)); and grid-template-rows: minmax(calc(20% + 50px), calc(600px - 10%));]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 500px 200px 50px; and grid-template-rows: 100px 300px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 500px 200px 50px; and grid-template-rows: 100px 300px;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 40em 100px 15%; and grid-template-rows: 50px 20em 10%;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 40em 100px 15%; and grid-template-rows: 50px 20em 10%;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 200px 1fr; and grid-template-rows: 1fr 100px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 200px 1fr; and grid-template-rows: 1fr 100px;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 2fr 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 2fr 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: minmax(25px, 75px) 750px; and grid-template-rows: minmax(50px, 150px) 500px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(25px, 75px) 750px; and grid-template-rows: minmax(50px, 150px) 500px;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: min-content 1fr calc(20px + 10%) minmax(30em, 50em); and grid-template-rows: min-content 1fr calc(10% + 40px) minmax(3em, 5em);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: min-content 1fr calc(20px + 10%) minmax(30em, 50em); and grid-template-rows: min-content 1fr calc(10% + 40px) minmax(3em, 5em);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: foo; and grid-template-rows: bar;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: foo; and grid-template-rows: bar;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto none; and grid-template-rows: none auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto none; and grid-template-rows: none auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 100px, 200px; and grid-template-rows: 300px, 400px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px, 200px; and grid-template-rows: 300px, 400px;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: minmax(100px, 200px, 300px); and grid-template-rows: minmax(100px, 200px, 300px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(100px, 200px, 300px); and grid-template-rows: minmax(100px, 200px, 300px);]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-named-grid-lines-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-named-grid-lines-001.html.ini
new file mode 100644
index 00000000000..57bbcd3c40a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-named-grid-lines-001.html.ini
@@ -0,0 +1,240 @@
+[grid-support-named-grid-lines-001.html]
+ ['emptyGrid' with: grid-template-columns: [first\] auto [last\]; and grid-template-rows: [first\] auto [last\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [first\] auto [last\]; and grid-template-rows: [first\] auto [last\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [F1rst-L1_n3\] auto [L4st-L1_n3\]; and grid-template-rows: [F1rst-L1_n3\] auto [L4st-L1_n3\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [F1rst-L1_n3\] auto [L4st-L1_n3\]; and grid-template-rows: [F1rst-L1_n3\] auto [L4st-L1_n3\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [\] auto [ \]; and grid-template-rows: [ \] auto [\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [\] auto [ \]; and grid-template-rows: [ \] auto [\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [first\] auto; and grid-template-rows: [first\] auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [first\] auto; and grid-template-rows: [first\] auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto [last\]; and grid-template-rows: auto [last\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto [last\]; and grid-template-rows: auto [last\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [line\] auto [line\]; and grid-template-rows: [line\] auto [line\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [line\] auto [line\]; and grid-template-rows: [line\] auto [line\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [first line\] auto [last line\]; and grid-template-rows: [first line\] auto [last line\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [first line\] auto [last line\]; and grid-template-rows: [first line\] auto [last line\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] auto [b\] auto [c\]; and grid-template-rows: [a\] auto [b\] auto [c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] auto [b\] auto [c\]; and grid-template-rows: [a\] auto [b\] auto [c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto [b\] auto [c\]; and grid-template-rows: auto [b\] auto [c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto [b\] auto [c\]; and grid-template-rows: auto [b\] auto [c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] auto auto [c\]; and grid-template-rows: [a\] auto auto [c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] auto auto [c\]; and grid-template-rows: [a\] auto auto [c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] auto [b\] auto; and grid-template-rows: [a\] auto [b\] auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] auto [b\] auto; and grid-template-rows: [a\] auto [b\] auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] auto auto; and grid-template-rows: [a\] auto auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] auto auto; and grid-template-rows: [a\] auto auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto [b\] auto; and grid-template-rows: auto [b\] auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto [b\] auto; and grid-template-rows: auto [b\] auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: auto auto [c\]; and grid-template-rows: auto auto [c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto auto [c\]; and grid-template-rows: auto auto [c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] auto [a\] auto [a\]; and grid-template-rows: [a\] auto [a\] auto [a\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] auto [a\] auto [a\]; and grid-template-rows: [a\] auto [a\] auto [a\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a b c\] auto [a b c\] auto [a b c\]; and grid-template-rows: [a b c\] auto [a b c\] auto [a b c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a b c\] auto [a b c\] auto [a b c\]; and grid-template-rows: [a b c\] auto [a b c\] auto [a b c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] 40em [b\] 100px [c\] 15% [d\]; and grid-template-rows: [z\] 50px [y\] 20em [x\] 10% [w\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] 40em [b\] 100px [c\] 15% [d\]; and grid-template-rows: [z\] 50px [y\] 20em [x\] 10% [w\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] 200px [b\] 1fr [c\]; and grid-template-rows: [z\] 1fr [y\] 100px [x\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] 200px [b\] 1fr [c\]; and grid-template-rows: [z\] 1fr [y\] 100px [x\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] min-content [b\] 1fr [c\] calc(20px + 10%) [d\] minmax(30em, 50em) [e\]; and grid-template-rows: [z\] min-content [y\] 1fr [x\] calc(10% + 40px) [w\] minmax(3em, 5em) [v\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] min-content [b\] 1fr [c\] calc(20px + 10%) [d\] minmax(30em, 50em) [e\]; and grid-template-rows: [z\] min-content [y\] 1fr [x\] calc(10% + 40px) [w\] minmax(3em, 5em) [v\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\]; and grid-template-rows: [a\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\]; and grid-template-rows: [a\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a b\]; and grid-template-rows: [a b\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a b\]; and grid-template-rows: [a b\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] none [b\]; and grid-template-rows: [a\] none [b\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] none [b\]; and grid-template-rows: [a\] none [b\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] [b\]; and grid-template-rows: [a\] [b\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] [b\]; and grid-template-rows: [a\] [b\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: a auto b; and grid-template-rows: a auto b;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: a auto b; and grid-template-rows: a auto b;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: (a) auto (b); and grid-template-rows: (a) auto (b);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: (a) auto (b); and grid-template-rows: (a) auto (b);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 'a' auto 'b'; and grid-template-rows: 'a' auto 'b';]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 'a' auto 'b'; and grid-template-rows: 'a' auto 'b';]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: "a" auto "b"; and grid-template-rows: "a" auto "b";]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: "a" auto "b"; and grid-template-rows: "a" auto "b";]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a, b\] auto [a, b\]; and grid-template-rows: [a, b\] auto [a, b\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a, b\] auto [a, b\]; and grid-template-rows: [a, b\] auto [a, b\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] [b\] auto [c d\] [e\]; and grid-template-rows: [a\] [b\] auto [c d\] [e\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] [b\] auto [c d\] [e\]; and grid-template-rows: [a\] [b\] auto [c d\] [e\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a [b\]\] auto [c\]; and grid-template-rows: [a [b\]\] auto [c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a [b\]\] auto [c\]; and grid-template-rows: [a [b\]\] auto [c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] auto [[b\]\]; and grid-template-rows: [a\] auto [[b\]\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] auto [[b\]\]; and grid-template-rows: [a\] auto [[b\]\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a auto [b\]; and grid-template-rows: [a auto [b\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a auto [b\]; and grid-template-rows: [a auto [b\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a 100px\] auto [b\]; and grid-template-rows: [a 100px\] auto [b\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a 100px\] auto [b\]; and grid-template-rows: [a 100px\] auto [b\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a 50%\] auto [b\]; and grid-template-rows: [a 50%\] auto [b\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a 50%\] auto [b\]; and grid-template-rows: [a 50%\] auto [b\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [5\] auto [10\]; and grid-template-rows: [5\] auto [10\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [5\] auto [10\]; and grid-template-rows: [5\] auto [10\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a.\] auto [b*\]; and grid-template-rows: [a.\] auto [b*\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a.\] auto [b*\]; and grid-template-rows: [a.\] auto [b*\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [#a\] auto [$b\]; and grid-template-rows: [#a\] auto [$b\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [#a\] auto [$b\]; and grid-template-rows: [#a\] auto [$b\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [initial\] auto; and grid-template-rows: [initial\] auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [initial\] auto; and grid-template-rows: [initial\] auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [inherit\] auto; and grid-template-rows: [inherit\] auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [inherit\] auto; and grid-template-rows: [inherit\] auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [default\] auto; and grid-template-rows: [default\] auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [default\] auto; and grid-template-rows: [default\] auto;]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-named-grid-lines-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-named-grid-lines-002.html.ini
new file mode 100644
index 00000000000..433542d206d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-named-grid-lines-002.html.ini
@@ -0,0 +1,2 @@
+[grid-support-named-grid-lines-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-named-grid-lines-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-named-grid-lines-003.html.ini
new file mode 100644
index 00000000000..31dac385fcc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-named-grid-lines-003.html.ini
@@ -0,0 +1,2 @@
+[grid-support-named-grid-lines-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-repeat-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-repeat-001.html.ini
new file mode 100644
index 00000000000..5d1cb160c3f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-repeat-001.html.ini
@@ -0,0 +1,120 @@
+[grid-support-repeat-001.html]
+ ['emptyGrid' with: grid-template-columns: repeat(1, auto); and grid-template-rows: repeat(1, auto);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(1, auto); and grid-template-rows: repeat(1, auto);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(2, auto); and grid-template-rows: repeat(2, auto);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(2, auto); and grid-template-rows: repeat(2, auto);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(2, minmax(50px, calc(50px + 50%))); and grid-template-rows: repeat(2, minmax(50px, calc(50px + 50%)));]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(2, minmax(50px, calc(50px + 50%))); and grid-template-rows: repeat(2, minmax(50px, calc(50px + 50%)));]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(5, 10%); and grid-template-rows: repeat(5, 10%);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(5, 10%); and grid-template-rows: repeat(5, 10%);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: max-content repeat(2, 25%) 1fr; and grid-template-rows: 100px repeat(2, 25%) 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: max-content repeat(2, 25%) 1fr; and grid-template-rows: max-content repeat(2, 25%) 1fr;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(2, min-content 50px); and grid-template-rows: repeat(2, min-content 50px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(2, min-content 50px); and grid-template-rows: repeat(2, min-content 50px);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(2, [a\] minmax(50px, 100px) [b\] 25em [c\]); and grid-template-rows: repeat(2, [a\] minmax(50px, 100px) [b\] 25em [c\]);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(2, [a\] minmax(50px, 100px) [b\] 25em [c\]); and grid-template-rows: repeat(2, [a\] minmax(50px, 100px) [b\] 25em [c\]);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] repeat(2, auto [b\] 100px) [c\]; and grid-template-rows: [a\] repeat(2, auto [b\] 100px) [c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] repeat(2, auto [b\] 100px) [c\]; and grid-template-rows: [a\] repeat(2, auto [b\] 100px) [c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] auto repeat(2, [b\] 100px) [c\]; and grid-template-rows: [a\] auto repeat(2, [b\] 100px) [c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] auto repeat(2, [b\] 100px) [c\]; and grid-template-rows: [a\] auto repeat(2, [b\] 100px) [c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] repeat(2, auto [b\]) 100px [c\]; and grid-template-rows: [a\] repeat(2, auto [b\]) 100px [c\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] repeat(2, auto [b\]) 100px [c\]; and grid-template-rows: [a\] repeat(2, auto [b\]) 100px [c\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] repeat(2, [b\] 100px); and grid-template-rows: [a\] repeat(2, [b\] 100px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] repeat(2, [b\] 100px); and grid-template-rows: [a\] repeat(2, [b\] 100px);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] repeat(2, [b\] auto [c\]) [d\]; and grid-template-rows: [a\] repeat(2, [b\] auto [c\]) [d\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] repeat(2, [b\] auto [c\]) [d\]; and grid-template-rows: [a\] repeat(2, [b\] auto [c\]) [d\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: [a\] min-content repeat(2, [b\] 1fr [c\] calc(20px + 10%)) [d\] minmax(30em, 50em) [e\]; and grid-template-rows: [z\] min-content repeat(2, [y\] 1fr [x\] calc(10% + 40px)) [w\] minmax(3em, 5em) [v\];]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: [a\] min-content repeat(2, [b\] 1fr [c\] calc(20px + 10%)) [d\] minmax(30em, 50em) [e\]; and grid-template-rows: [z\] min-content repeat(2, [y\] 1fr [x\] calc(10% + 40px)) [w\] minmax(3em, 5em) [v\];]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(-1, auto); and grid-template-rows: repeat(-1, auto);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(-1, auto); and grid-template-rows: repeat(-1, auto);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(auto, 2); and grid-template-rows: repeat(auto, 2);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(auto, 2); and grid-template-rows: repeat(auto, 2);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat 2, auto; and grid-template-rows: repeat 2, auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat 2, auto; and grid-template-rows: repeat 2, auto;]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(2 auto); and grid-template-rows: repeat(2 auto);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(2 auto); and grid-template-rows: repeat(2 auto);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 100px (repeat 2, auto); and grid-template-rows: (repeat 2, auto);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px (repeat 2, auto); and grid-template-rows: (repeat 2, auto);]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: repeat(2, 50px repeat(2, 100px)); and grid-template-rows: repeat(2, 50px repeat(2, 100px));]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: repeat(2, 50px repeat(2, 100px)); and grid-template-rows: repeat(2, 50px repeat(2, 100px));]
+ expected: FAIL
+
+ ['emptyGrid' with: grid-template-columns: 100px repeat(2, [a\]); and grid-template-rows: 100px repeat(2, [a\]);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px repeat(2, [a\]); and grid-template-rows: 100px repeat(2, [a\]);]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-repeat-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-repeat-002.html.ini
new file mode 100644
index 00000000000..8519b979c37
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-support-repeat-002.html.ini
@@ -0,0 +1,21 @@
+[grid-support-repeat-002.html]
+ [grid-template-columns: repeat(-1, auto); and grid-template-rows: repeat(-1, auto);]
+ expected: FAIL
+
+ [grid-template-columns: repeat(auto, 2); and grid-template-rows: repeat(auto, 2);]
+ expected: FAIL
+
+ [grid-template-columns: repeat 2, auto; and grid-template-rows: repeat 2, auto;]
+ expected: FAIL
+
+ [grid-template-columns: repeat(2 auto); and grid-template-rows: repeat(2 auto);]
+ expected: FAIL
+
+ [grid-template-columns: 100px (repeat 2, auto); and grid-template-rows: 100px (repeat 2, auto);]
+ expected: FAIL
+
+ [grid-template-columns: repeat(2, 50px repeat(2, 100px)); and grid-template-rows: repeat(2, 50px repeat(2, 100px));]
+ expected: FAIL
+
+ [grid-template-columns: 100px repeat(2, [a\]); and grid-template-rows: 100px repeat(2, [a\]);]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-template-columns-rows-changes-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-template-columns-rows-changes-001.html.ini
new file mode 100644
index 00000000000..66b2078e5e0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-template-columns-rows-changes-001.html.ini
@@ -0,0 +1,63 @@
+[grid-template-columns-rows-changes-001.html]
+ [#constrainedGrid 1]
+ expected: FAIL
+
+ [#constrainedGrid 2]
+ expected: FAIL
+
+ [#constrainedGrid 3]
+ expected: FAIL
+
+ [#constrainedGrid 4]
+ expected: FAIL
+
+ [#constrainedGrid 5]
+ expected: FAIL
+
+ [#constrainedGrid 6]
+ expected: FAIL
+
+ [#constrainedGridUndefinedHeight 7]
+ expected: FAIL
+
+ [#constrainedGridUndefinedHeight 8]
+ expected: FAIL
+
+ [#constrainedGridUndefinedHeight 9]
+ expected: FAIL
+
+ [#constrainedGridUndefinedHeight 10]
+ expected: FAIL
+
+ [#constrainedGridUndefinedHeight 11]
+ expected: FAIL
+
+ [#constrainedGridUndefinedHeight 12]
+ expected: FAIL
+
+ [#unconstrainedGrid 13]
+ expected: FAIL
+
+ [#unconstrainedGrid 14]
+ expected: FAIL
+
+ [#unconstrainedGrid 15]
+ expected: FAIL
+
+ [#unconstrainedGrid 16]
+ expected: FAIL
+
+ [#unconstrainedGrid 17]
+ expected: FAIL
+
+ [#unconstrainedGrid 18]
+ expected: FAIL
+
+ [#unconstrainedGrid 19]
+ expected: FAIL
+
+ [#unconstrainedGrid 20]
+ expected: FAIL
+
+ [#unconstrainedGrid 21]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-template-columns-rows-resolved-values-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-template-columns-rows-resolved-values-001.html.ini
new file mode 100644
index 00000000000..9bbf21b7206
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-template-columns-rows-resolved-values-001.html.ini
@@ -0,0 +1,114 @@
+[grid-template-columns-rows-resolved-values-001.html]
+ ['grid' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto auto; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: ; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: ; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: auto auto;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 70px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 70px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px 70px;]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-template-columns-rows-resolved-values-001.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-template-columns-rows-resolved-values-001.tentative.html.ini
new file mode 100644
index 00000000000..5f3f5713208
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-definition/grid-template-columns-rows-resolved-values-001.tentative.html.ini
@@ -0,0 +1,228 @@
+[grid-template-columns-rows-resolved-values-001.tentative.html]
+ ['grid' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto auto; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: auto auto; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: ; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: ; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: ; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: ; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ [Children of 'grid' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ [Children of 'gridItemsPositions' with: grid-template-columns: 60px 50px; and grid-template-rows: 60px 50px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: auto auto;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: auto auto;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: ; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumn' with: grid-template-columns: 100px 60px; and grid-template-rows: 50px 30px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: ;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: ;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 70px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: ; and grid-template-rows: 60px 70px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 70px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px; and grid-template-rows: 60px 70px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px;]
+ expected: FAIL
+
+ ['gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px 70px;]
+ expected: FAIL
+
+ [Children of 'gridAutoFlowColumnItemsPositions' with: grid-template-columns: 60px 70px; and grid-template-rows: 60px 70px;]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-important.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-important.html.ini
new file mode 100644
index 00000000000..b0608e5a7d7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-important.html.ini
@@ -0,0 +1,3 @@
+[grid-important.html]
+ [CSS Grid: !important flag parsing]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-in-table-cell-with-img.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-in-table-cell-with-img.html.ini
new file mode 100644
index 00000000000..48f316e2b3d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-in-table-cell-with-img.html.ini
@@ -0,0 +1,2 @@
+[grid-in-table-cell-with-img.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/anonymous-grid-item-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/anonymous-grid-item-001.html.ini
new file mode 100644
index 00000000000..e3a33ce7895
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/anonymous-grid-item-001.html.ini
@@ -0,0 +1,2 @@
+[anonymous-grid-item-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-001.html.ini
new file mode 100644
index 00000000000..1ad29e41fed
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-001.html.ini
@@ -0,0 +1,2 @@
+[aspect-ratio-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-002.html.ini
new file mode 100644
index 00000000000..6101b394b0a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-002.html.ini
@@ -0,0 +1,2 @@
+[aspect-ratio-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-003.html.ini
new file mode 100644
index 00000000000..c7f59630547
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-003.html.ini
@@ -0,0 +1,2 @@
+[aspect-ratio-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-004.html.ini
new file mode 100644
index 00000000000..f0aa608d5d2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-004.html.ini
@@ -0,0 +1,2 @@
+[aspect-ratio-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-005.html.ini
new file mode 100644
index 00000000000..04914089239
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/aspect-ratio-005.html.ini
@@ -0,0 +1,2 @@
+[aspect-ratio-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/explicitly-sized-grid-item-as-table.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/explicitly-sized-grid-item-as-table.html.ini
new file mode 100644
index 00000000000..1ab12e926a9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/explicitly-sized-grid-item-as-table.html.ini
@@ -0,0 +1,2 @@
+[explicitly-sized-grid-item-as-table.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-auto-margin-and-replaced-item-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-auto-margin-and-replaced-item-001.html.ini
new file mode 100644
index 00000000000..8c0fc3310eb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-auto-margin-and-replaced-item-001.html.ini
@@ -0,0 +1,2 @@
+[grid-auto-margin-and-replaced-item-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-automatic-minimum-intrinsic-aspect-ratio-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-automatic-minimum-intrinsic-aspect-ratio-001.html.ini
new file mode 100644
index 00000000000..ad4ec3c061b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-automatic-minimum-intrinsic-aspect-ratio-001.html.ini
@@ -0,0 +1,42 @@
+[grid-automatic-minimum-intrinsic-aspect-ratio-001.html]
+ [.container 1]
+ expected: FAIL
+
+ [.container 2]
+ expected: FAIL
+
+ [.container 3]
+ expected: FAIL
+
+ [.container 4]
+ expected: FAIL
+
+ [.container 5]
+ expected: FAIL
+
+ [.container 6]
+ expected: FAIL
+
+ [.container 7]
+ expected: FAIL
+
+ [.container 8]
+ expected: FAIL
+
+ [.container 9]
+ expected: FAIL
+
+ [.container 10]
+ expected: FAIL
+
+ [.container 11]
+ expected: FAIL
+
+ [.container 12]
+ expected: FAIL
+
+ [.container 13]
+ expected: FAIL
+
+ [.container 14]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-img-item-percent-max-height-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-img-item-percent-max-height-001.html.ini
new file mode 100644
index 00000000000..0554ac3743f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-img-item-percent-max-height-001.html.ini
@@ -0,0 +1,2 @@
+[grid-img-item-percent-max-height-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-items-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-items-001.html.ini
new file mode 100644
index 00000000000..96c1b44cd9b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-items-001.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-items-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-items-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-items-002.html.ini
new file mode 100644
index 00000000000..dc21d534b81
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-items-002.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-items-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-items-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-items-003.html.ini
new file mode 100644
index 00000000000..a2ec6237a49
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-items-003.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-items-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-items-inline-blocks-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-items-inline-blocks-001.html.ini
new file mode 100644
index 00000000000..1f097be803a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-items-inline-blocks-001.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-items-inline-blocks-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-001.html.ini
new file mode 100644
index 00000000000..45cf6fc0460
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-001.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-z-axis-ordering-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-002.html.ini
new file mode 100644
index 00000000000..4ff1ef0fe2d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-002.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-z-axis-ordering-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-003.html.ini
new file mode 100644
index 00000000000..837fbd2a8c1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-003.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-z-axis-ordering-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-004.html.ini
new file mode 100644
index 00000000000..fd41d4c1a42
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-004.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-z-axis-ordering-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-005.html.ini
new file mode 100644
index 00000000000..293ed0639f2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-005.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-z-axis-ordering-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-001.html.ini
new file mode 100644
index 00000000000..eb2233d3700
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-001.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-z-axis-ordering-overlapped-items-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-002.html.ini
new file mode 100644
index 00000000000..cb9905e7a27
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-002.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-z-axis-ordering-overlapped-items-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-003.html.ini
new file mode 100644
index 00000000000..f3a786abf7b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-003.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-z-axis-ordering-overlapped-items-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-004.html.ini
new file mode 100644
index 00000000000..03f883fbceb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-004.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-z-axis-ordering-overlapped-items-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-005.html.ini
new file mode 100644
index 00000000000..f89f4e9cfbe
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-005.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-z-axis-ordering-overlapped-items-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-006.html.ini
new file mode 100644
index 00000000000..479e338b1fd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-inline-z-axis-ordering-overlapped-items-006.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-z-axis-ordering-overlapped-items-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-containing-block-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-containing-block-001.html.ini
new file mode 100644
index 00000000000..a63e6010c69
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-containing-block-001.html.ini
@@ -0,0 +1,2 @@
+[grid-item-containing-block-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-containing-block-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-containing-block-002.html.ini
new file mode 100644
index 00000000000..e34679de092
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-containing-block-002.html.ini
@@ -0,0 +1,2 @@
+[grid-item-containing-block-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-containing-block-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-containing-block-003.html.ini
new file mode 100644
index 00000000000..6b5b4599316
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-containing-block-003.html.ini
@@ -0,0 +1,2 @@
+[grid-item-containing-block-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-containing-block-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-containing-block-004.html.ini
new file mode 100644
index 00000000000..279ac5a1a7a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-containing-block-004.html.ini
@@ -0,0 +1,2 @@
+[grid-item-containing-block-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001.html.ini
new file mode 100644
index 00000000000..8c97ea60744
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001.html.ini
@@ -0,0 +1,6 @@
+[grid-item-dynamic-min-contribution-001.html]
+ [Minimum size: auto]
+ expected: FAIL
+
+ [Minimum size: 0%]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-inline-contribution-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-inline-contribution-001.html.ini
new file mode 100644
index 00000000000..4e419a0a4ea
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-inline-contribution-001.html.ini
@@ -0,0 +1,2 @@
+[grid-item-inline-contribution-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-inline-contribution-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-inline-contribution-002.html.ini
new file mode 100644
index 00000000000..9612d9da81e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-inline-contribution-002.html.ini
@@ -0,0 +1,2 @@
+[grid-item-inline-contribution-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-inline-contribution-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-inline-contribution-003.html.ini
new file mode 100644
index 00000000000..4556846a007
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-inline-contribution-003.html.ini
@@ -0,0 +1,2 @@
+[grid-item-inline-contribution-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-min-auto-size-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-min-auto-size-001.html.ini
new file mode 100644
index 00000000000..06161eb11d0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-min-auto-size-001.html.ini
@@ -0,0 +1,6 @@
+[grid-item-min-auto-size-001.html]
+ [Computed min-width/min-height of specified auto inside display:none which would otherwise have been a grid item.]
+ expected: FAIL
+
+ [Computed min-width/min-height of specified auto with display:none which would otherwise have been a grid item.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-overflow-auto-max-height-percentage.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-overflow-auto-max-height-percentage.html.ini
new file mode 100644
index 00000000000..683d0fd8254
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-overflow-auto-max-height-percentage.html.ini
@@ -0,0 +1,2 @@
+[grid-item-overflow-auto-max-height-percentage.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-percentage-sizes-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-percentage-sizes-001.html.ini
new file mode 100644
index 00000000000..647d8b276b7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-percentage-sizes-001.html.ini
@@ -0,0 +1,2 @@
+[grid-item-percentage-sizes-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-percentage-sizes-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-percentage-sizes-002.html.ini
new file mode 100644
index 00000000000..13413a66329
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-percentage-sizes-002.html.ini
@@ -0,0 +1,2 @@
+[grid-item-percentage-sizes-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-percentage-sizes-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-percentage-sizes-003.html.ini
new file mode 100644
index 00000000000..dca16720afa
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-item-percentage-sizes-003.html.ini
@@ -0,0 +1,2 @@
+[grid-item-percentage-sizes-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-001.html.ini
new file mode 100644
index 00000000000..e51c666f6fd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-001.html.ini
@@ -0,0 +1,2 @@
+[grid-items-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-002.html.ini
new file mode 100644
index 00000000000..b21bb7ba631
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-002.html.ini
@@ -0,0 +1,2 @@
+[grid-items-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-003.html.ini
new file mode 100644
index 00000000000..c7663fd15e6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-003.html.ini
@@ -0,0 +1,2 @@
+[grid-items-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-contribution-negative-margins.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-contribution-negative-margins.html.ini
new file mode 100644
index 00000000000..ae6a5ad0492
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-contribution-negative-margins.html.ini
@@ -0,0 +1,2 @@
+[grid-items-contribution-negative-margins.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-inline-blocks-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-inline-blocks-001.html.ini
new file mode 100644
index 00000000000..1c0bb4bc56b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-inline-blocks-001.html.ini
@@ -0,0 +1,2 @@
+[grid-items-inline-blocks-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-height-orthogonal-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-height-orthogonal-001.html.ini
new file mode 100644
index 00000000000..f8ac39b8ca9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-height-orthogonal-001.html.ini
@@ -0,0 +1,138 @@
+[grid-items-minimum-height-orthogonal-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-001.html.ini
new file mode 100644
index 00000000000..99a7857e1d5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-001.html.ini
@@ -0,0 +1,132 @@
+[grid-items-minimum-width-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-002.html.ini
new file mode 100644
index 00000000000..1567b31d2ac
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-002.html.ini
@@ -0,0 +1,132 @@
+[grid-items-minimum-width-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-001.html.ini
new file mode 100644
index 00000000000..c563eecc6a1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-001.html.ini
@@ -0,0 +1,138 @@
+[grid-items-minimum-width-orthogonal-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-002.html.ini
new file mode 100644
index 00000000000..3d377ea3f09
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-orthogonal-002.html.ini
@@ -0,0 +1,132 @@
+[grid-items-minimum-width-orthogonal-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-001.html.ini
new file mode 100644
index 00000000000..cd029fedab3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-001.html.ini
@@ -0,0 +1,132 @@
+[grid-items-minimum-width-vertical-lr-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-002.html.ini
new file mode 100644
index 00000000000..1fe35ffc308
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-vertical-lr-002.html.ini
@@ -0,0 +1,132 @@
+[grid-items-minimum-width-vertical-lr-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-001.html.ini
new file mode 100644
index 00000000000..5548d804463
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-001.html.ini
@@ -0,0 +1,132 @@
+[grid-items-minimum-width-vertical-rl-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-002.html.ini
new file mode 100644
index 00000000000..85644ee52a1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-minimum-width-vertical-rl-002.html.ini
@@ -0,0 +1,132 @@
+[grid-items-minimum-width-vertical-rl-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-001.html.ini
new file mode 100644
index 00000000000..491c2f72def
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-001.html.ini
@@ -0,0 +1,24 @@
+[grid-items-percentage-margins-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-002.html.ini
new file mode 100644
index 00000000000..040eabfe51b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-002.html.ini
@@ -0,0 +1,24 @@
+[grid-items-percentage-margins-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-003.html.ini
new file mode 100644
index 00000000000..4b6a967b39d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-003.html.ini
@@ -0,0 +1,2 @@
+[grid-items-percentage-margins-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-004.html.ini
new file mode 100644
index 00000000000..a89715d83d7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-004.html.ini
@@ -0,0 +1,2 @@
+[grid-items-percentage-margins-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-005.html.ini
new file mode 100644
index 00000000000..9a5bf5f1dcf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-005.html.ini
@@ -0,0 +1,2 @@
+[grid-items-percentage-margins-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-006.html.ini
new file mode 100644
index 00000000000..6a02f497463
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-006.html.ini
@@ -0,0 +1,2 @@
+[grid-items-percentage-margins-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-007.html.ini
new file mode 100644
index 00000000000..48caed70d82
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-007.html.ini
@@ -0,0 +1,2 @@
+[grid-items-percentage-margins-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-011.html.ini
new file mode 100644
index 00000000000..32658aa2367
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-011.html.ini
@@ -0,0 +1,2 @@
+[grid-items-percentage-margins-011.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-012.html.ini
new file mode 100644
index 00000000000..28ba9596cf2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-012.html.ini
@@ -0,0 +1,2 @@
+[grid-items-percentage-margins-012.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-013.html.ini
new file mode 100644
index 00000000000..f0a3edc218b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-013.html.ini
@@ -0,0 +1,2 @@
+[grid-items-percentage-margins-013.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-014.html.ini
new file mode 100644
index 00000000000..3dc02145d4d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-014.html.ini
@@ -0,0 +1,2 @@
+[grid-items-percentage-margins-014.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-vertical-lr-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-vertical-lr-001.html.ini
new file mode 100644
index 00000000000..1f8f6dc96e6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-vertical-lr-001.html.ini
@@ -0,0 +1,24 @@
+[grid-items-percentage-margins-vertical-lr-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-vertical-lr-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-vertical-lr-002.html.ini
new file mode 100644
index 00000000000..91ffce31bda
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-vertical-lr-002.html.ini
@@ -0,0 +1,24 @@
+[grid-items-percentage-margins-vertical-lr-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-vertical-rl-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-vertical-rl-001.html.ini
new file mode 100644
index 00000000000..9dd4647245d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-vertical-rl-001.html.ini
@@ -0,0 +1,24 @@
+[grid-items-percentage-margins-vertical-rl-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-vertical-rl-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-vertical-rl-002.html.ini
new file mode 100644
index 00000000000..b17421c7019
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-margins-vertical-rl-002.html.ini
@@ -0,0 +1,24 @@
+[grid-items-percentage-margins-vertical-rl-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-001.html.ini
new file mode 100644
index 00000000000..ffd7434b8b9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-001.html.ini
@@ -0,0 +1,24 @@
+[grid-items-percentage-paddings-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-002.html.ini
new file mode 100644
index 00000000000..bd32df56ea8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-002.html.ini
@@ -0,0 +1,24 @@
+[grid-items-percentage-paddings-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-003.html.ini
new file mode 100644
index 00000000000..b1295db7783
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-003.html.ini
@@ -0,0 +1,2 @@
+[grid-items-percentage-paddings-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-007.html.ini
new file mode 100644
index 00000000000..eb700638775
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-007.html.ini
@@ -0,0 +1,2 @@
+[grid-items-percentage-paddings-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-011.html.ini
new file mode 100644
index 00000000000..d23c4e05ace
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-011.html.ini
@@ -0,0 +1,2 @@
+[grid-items-percentage-paddings-011.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-015.html.ini
new file mode 100644
index 00000000000..098c6d886d9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-015.html.ini
@@ -0,0 +1,3 @@
+[grid-items-percentage-paddings-015.html]
+ [#target 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-001.html.ini
new file mode 100644
index 00000000000..c6bdfbb5952
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-001.html.ini
@@ -0,0 +1,24 @@
+[grid-items-percentage-paddings-vertical-lr-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-002.html.ini
new file mode 100644
index 00000000000..8fc11469626
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-002.html.ini
@@ -0,0 +1,24 @@
+[grid-items-percentage-paddings-vertical-lr-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-001.html.ini
new file mode 100644
index 00000000000..7b80dac6529
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-001.html.ini
@@ -0,0 +1,24 @@
+[grid-items-percentage-paddings-vertical-rl-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-002.html.ini
new file mode 100644
index 00000000000..b85c11265ec
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-002.html.ini
@@ -0,0 +1,24 @@
+[grid-items-percentage-paddings-vertical-rl-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-relative-offsets-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-relative-offsets-001.html.ini
new file mode 100644
index 00000000000..f3c56105525
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-relative-offsets-001.html.ini
@@ -0,0 +1,18 @@
+[grid-items-relative-offsets-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-relative-offsets-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-relative-offsets-002.html.ini
new file mode 100644
index 00000000000..f266fcf3e5f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-relative-offsets-002.html.ini
@@ -0,0 +1,18 @@
+[grid-items-relative-offsets-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-sizing-alignment-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-sizing-alignment-001.html.ini
new file mode 100644
index 00000000000..6aa3cfc911a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-items-sizing-alignment-001.html.ini
@@ -0,0 +1,2 @@
+[grid-items-sizing-alignment-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-layout-grid-in-grid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-layout-grid-in-grid.html.ini
new file mode 100644
index 00000000000..eab0fc3d12d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-layout-grid-in-grid.html.ini
@@ -0,0 +1,2 @@
+[grid-layout-grid-in-grid.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-layout-z-order-a.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-layout-z-order-a.html.ini
new file mode 100644
index 00000000000..64b4b2b480e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-layout-z-order-a.html.ini
@@ -0,0 +1,2 @@
+[grid-layout-z-order-a.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-layout-z-order-b.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-layout-z-order-b.html.ini
new file mode 100644
index 00000000000..7573aba43fd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-layout-z-order-b.html.ini
@@ -0,0 +1,2 @@
+[grid-layout-z-order-b.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-001.html.ini
new file mode 100644
index 00000000000..53781d73ba6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-001.html.ini
@@ -0,0 +1,2 @@
+[grid-minimum-size-grid-items-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-002.html.ini
new file mode 100644
index 00000000000..e05644ef8c7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-002.html.ini
@@ -0,0 +1,2 @@
+[grid-minimum-size-grid-items-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-007.html.ini
new file mode 100644
index 00000000000..33ebeaa4e01
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-007.html.ini
@@ -0,0 +1,2 @@
+[grid-minimum-size-grid-items-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-009.html.ini
new file mode 100644
index 00000000000..9994c1da6eb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-009.html.ini
@@ -0,0 +1,2 @@
+[grid-minimum-size-grid-items-009.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-010.html.ini
new file mode 100644
index 00000000000..6d4319f4757
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-010.html.ini
@@ -0,0 +1,2 @@
+[grid-minimum-size-grid-items-010.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-011.html.ini
new file mode 100644
index 00000000000..5473b6be5df
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-011.html.ini
@@ -0,0 +1,2 @@
+[grid-minimum-size-grid-items-011.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-012.html.ini
new file mode 100644
index 00000000000..503edb1d7f1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-012.html.ini
@@ -0,0 +1,2 @@
+[grid-minimum-size-grid-items-012.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-013.html.ini
new file mode 100644
index 00000000000..348afd25e36
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-013.html.ini
@@ -0,0 +1,2 @@
+[grid-minimum-size-grid-items-013.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-014.html.ini
new file mode 100644
index 00000000000..e249de5021f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-014.html.ini
@@ -0,0 +1,2 @@
+[grid-minimum-size-grid-items-014.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-015.html.ini
new file mode 100644
index 00000000000..24857c2ef55
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-015.html.ini
@@ -0,0 +1,2 @@
+[grid-minimum-size-grid-items-015.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-016.html.ini
new file mode 100644
index 00000000000..4f6b18e9d54
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-016.html.ini
@@ -0,0 +1,2 @@
+[grid-minimum-size-grid-items-016.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-017.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-017.html.ini
new file mode 100644
index 00000000000..082ce4ead37
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-017.html.ini
@@ -0,0 +1,2 @@
+[grid-minimum-size-grid-items-017.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-018.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-018.html.ini
new file mode 100644
index 00000000000..54e244fa0d8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-018.html.ini
@@ -0,0 +1,2 @@
+[grid-minimum-size-grid-items-018.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-019.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-019.html.ini
new file mode 100644
index 00000000000..3117a50db74
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-019.html.ini
@@ -0,0 +1,2 @@
+[grid-minimum-size-grid-items-019.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-020.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-020.html.ini
new file mode 100644
index 00000000000..6e1d4445741
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-020.html.ini
@@ -0,0 +1,2 @@
+[grid-minimum-size-grid-items-020.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-021.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-021.html.ini
new file mode 100644
index 00000000000..df9c49100ba
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-021.html.ini
@@ -0,0 +1,216 @@
+[grid-minimum-size-grid-items-021.html]
+ [grid-1.width]
+ expected: FAIL
+
+ [grid-1.height]
+ expected: FAIL
+
+ [grid-1.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-1.gridTemplateRows]
+ expected: FAIL
+
+ [grid-2.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-2.gridTemplateRows]
+ expected: FAIL
+
+ [grid-3.height]
+ expected: FAIL
+
+ [grid-3.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-3.gridTemplateRows]
+ expected: FAIL
+
+ [grid-4.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-4.gridTemplateRows]
+ expected: FAIL
+
+ [grid-5.height]
+ expected: FAIL
+
+ [grid-5.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-5.gridTemplateRows]
+ expected: FAIL
+
+ [img-5.width]
+ expected: FAIL
+
+ [img-5.height]
+ expected: FAIL
+
+ [grid-6.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-6.gridTemplateRows]
+ expected: FAIL
+
+ [img-6.width]
+ expected: FAIL
+
+ [img-6.height]
+ expected: FAIL
+
+ [grid-7.width]
+ expected: FAIL
+
+ [grid-7.height]
+ expected: FAIL
+
+ [grid-7.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-7.gridTemplateRows]
+ expected: FAIL
+
+ [grid-8.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-8.gridTemplateRows]
+ expected: FAIL
+
+ [grid-9.height]
+ expected: FAIL
+
+ [grid-9.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-9.gridTemplateRows]
+ expected: FAIL
+
+ [grid-10.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-10.gridTemplateRows]
+ expected: FAIL
+
+ [grid-11.height]
+ expected: FAIL
+
+ [grid-11.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-11.gridTemplateRows]
+ expected: FAIL
+
+ [img-11.width]
+ expected: FAIL
+
+ [img-11.height]
+ expected: FAIL
+
+ [grid-12.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-12.gridTemplateRows]
+ expected: FAIL
+
+ [img-12.width]
+ expected: FAIL
+
+ [img-12.height]
+ expected: FAIL
+
+ [grid-13.width]
+ expected: FAIL
+
+ [grid-13.height]
+ expected: FAIL
+
+ [grid-13.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-13.gridTemplateRows]
+ expected: FAIL
+
+ [grid-14.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-14.gridTemplateRows]
+ expected: FAIL
+
+ [grid-15.height]
+ expected: FAIL
+
+ [grid-15.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-15.gridTemplateRows]
+ expected: FAIL
+
+ [grid-16.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-16.gridTemplateRows]
+ expected: FAIL
+
+ [grid-17.height]
+ expected: FAIL
+
+ [grid-17.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-17.gridTemplateRows]
+ expected: FAIL
+
+ [grid-18.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-18.gridTemplateRows]
+ expected: FAIL
+
+ [grid-19.width]
+ expected: FAIL
+
+ [grid-19.height]
+ expected: FAIL
+
+ [grid-19.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-19.gridTemplateRows]
+ expected: FAIL
+
+ [grid-20.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-20.gridTemplateRows]
+ expected: FAIL
+
+ [grid-21.height]
+ expected: FAIL
+
+ [grid-21.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-21.gridTemplateRows]
+ expected: FAIL
+
+ [grid-22.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-22.gridTemplateRows]
+ expected: FAIL
+
+ [grid-23.height]
+ expected: FAIL
+
+ [grid-23.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-23.gridTemplateRows]
+ expected: FAIL
+
+ [grid-24.gridTemplateColumns]
+ expected: FAIL
+
+ [grid-24.gridTemplateRows]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-022.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-022.html.ini
new file mode 100644
index 00000000000..10085606732
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-022.html.ini
@@ -0,0 +1,135 @@
+[grid-minimum-size-grid-items-022.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-023.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-023.html.ini
new file mode 100644
index 00000000000..4b7e6e7334b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-023.html.ini
@@ -0,0 +1,180 @@
+[grid-minimum-size-grid-items-023.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-024.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-024.html.ini
new file mode 100644
index 00000000000..1c1dd104aa2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-024.html.ini
@@ -0,0 +1,135 @@
+[grid-minimum-size-grid-items-024.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-025.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-025.html.ini
new file mode 100644
index 00000000000..99fff3ad6f8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-minimum-size-grid-items-025.html.ini
@@ -0,0 +1,180 @@
+[grid-minimum-size-grid-items-025.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
+
+ [.grid 25]
+ expected: FAIL
+
+ [.grid 26]
+ expected: FAIL
+
+ [.grid 27]
+ expected: FAIL
+
+ [.grid 28]
+ expected: FAIL
+
+ [.grid 29]
+ expected: FAIL
+
+ [.grid 30]
+ expected: FAIL
+
+ [.grid 31]
+ expected: FAIL
+
+ [.grid 32]
+ expected: FAIL
+
+ [.grid 33]
+ expected: FAIL
+
+ [.grid 34]
+ expected: FAIL
+
+ [.grid 35]
+ expected: FAIL
+
+ [.grid 36]
+ expected: FAIL
+
+ [.grid 37]
+ expected: FAIL
+
+ [.grid 38]
+ expected: FAIL
+
+ [.grid 39]
+ expected: FAIL
+
+ [.grid 40]
+ expected: FAIL
+
+ [.grid 41]
+ expected: FAIL
+
+ [.grid 42]
+ expected: FAIL
+
+ [.grid 43]
+ expected: FAIL
+
+ [.grid 44]
+ expected: FAIL
+
+ [.grid 45]
+ expected: FAIL
+
+ [.grid 46]
+ expected: FAIL
+
+ [.grid 47]
+ expected: FAIL
+
+ [.grid 48]
+ expected: FAIL
+
+ [.grid 49]
+ expected: FAIL
+
+ [.grid 50]
+ expected: FAIL
+
+ [.grid 51]
+ expected: FAIL
+
+ [.grid 52]
+ expected: FAIL
+
+ [.grid 53]
+ expected: FAIL
+
+ [.grid 54]
+ expected: FAIL
+
+ [.grid 55]
+ expected: FAIL
+
+ [.grid 56]
+ expected: FAIL
+
+ [.grid 57]
+ expected: FAIL
+
+ [.grid 58]
+ expected: FAIL
+
+ [.grid 59]
+ expected: FAIL
+
+ [.grid 60]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-size-with-orthogonal-child-dynamic.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-size-with-orthogonal-child-dynamic.html.ini
new file mode 100644
index 00000000000..81213664b94
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-size-with-orthogonal-child-dynamic.html.ini
@@ -0,0 +1,2 @@
+[grid-size-with-orthogonal-child-dynamic.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-001.html.ini
new file mode 100644
index 00000000000..3a9b399710f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-001.html.ini
@@ -0,0 +1,2 @@
+[grid-z-axis-ordering-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-002.html.ini
new file mode 100644
index 00000000000..3702bfaad3d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-002.html.ini
@@ -0,0 +1,2 @@
+[grid-z-axis-ordering-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-003.html.ini
new file mode 100644
index 00000000000..0a3c12ac1bf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-003.html.ini
@@ -0,0 +1,2 @@
+[grid-z-axis-ordering-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-004.html.ini
new file mode 100644
index 00000000000..221e23ddb98
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-004.html.ini
@@ -0,0 +1,2 @@
+[grid-z-axis-ordering-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-005.html.ini
new file mode 100644
index 00000000000..43014f76ca9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-005.html.ini
@@ -0,0 +1,2 @@
+[grid-z-axis-ordering-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-001.html.ini
new file mode 100644
index 00000000000..98556a4a8ca
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-001.html.ini
@@ -0,0 +1,2 @@
+[grid-z-axis-ordering-overlapped-items-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-002.html.ini
new file mode 100644
index 00000000000..c947cd0caf8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-002.html.ini
@@ -0,0 +1,2 @@
+[grid-z-axis-ordering-overlapped-items-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-003.html.ini
new file mode 100644
index 00000000000..80644b4df38
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-003.html.ini
@@ -0,0 +1,2 @@
+[grid-z-axis-ordering-overlapped-items-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-004.html.ini
new file mode 100644
index 00000000000..c6498b7b9c0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-004.html.ini
@@ -0,0 +1,2 @@
+[grid-z-axis-ordering-overlapped-items-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-005.html.ini
new file mode 100644
index 00000000000..c214befe848
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-005.html.ini
@@ -0,0 +1,2 @@
+[grid-z-axis-ordering-overlapped-items-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-006.html.ini
new file mode 100644
index 00000000000..b4f85a68692
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/grid-z-axis-ordering-overlapped-items-006.html.ini
@@ -0,0 +1,2 @@
+[grid-z-axis-ordering-overlapped-items-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/percentage-margin-dynamic.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/percentage-margin-dynamic.html.ini
new file mode 100644
index 00000000000..778674628bc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/percentage-margin-dynamic.html.ini
@@ -0,0 +1,2 @@
+[percentage-margin-dynamic.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/percentage-size-replaced-subitems-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/percentage-size-replaced-subitems-001.html.ini
new file mode 100644
index 00000000000..133e02f86e6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/percentage-size-replaced-subitems-001.html.ini
@@ -0,0 +1,2 @@
+[percentage-size-replaced-subitems-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/percentage-size-subitems-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/percentage-size-subitems-001.html.ini
new file mode 100644
index 00000000000..737426ab549
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/percentage-size-subitems-001.html.ini
@@ -0,0 +1,2 @@
+[percentage-size-subitems-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/percentage-size-subitems-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/percentage-size-subitems-002.html.ini
new file mode 100644
index 00000000000..f5817fbecc7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/percentage-size-subitems-002.html.ini
@@ -0,0 +1,2 @@
+[percentage-size-subitems-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-001.html.ini
new file mode 100644
index 00000000000..5c831df5045
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-001.html.ini
@@ -0,0 +1,2 @@
+[replaced-element-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-002.html.ini
new file mode 100644
index 00000000000..9be1a75b5c6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-002.html.ini
@@ -0,0 +1,2 @@
+[replaced-element-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-007.html.ini
new file mode 100644
index 00000000000..397bca2e36d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-007.html.ini
@@ -0,0 +1,2 @@
+[replaced-element-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-010.html.ini
new file mode 100644
index 00000000000..5306fd2e947
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-010.html.ini
@@ -0,0 +1,2 @@
+[replaced-element-010.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-011.html.ini
new file mode 100644
index 00000000000..873bd786ed2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-011.html.ini
@@ -0,0 +1,2 @@
+[replaced-element-011.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-012.html.ini
new file mode 100644
index 00000000000..f0f4f86b8fd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-012.html.ini
@@ -0,0 +1,2 @@
+[replaced-element-012.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-013.html.ini
new file mode 100644
index 00000000000..e31d7aaca38
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/replaced-element-013.html.ini
@@ -0,0 +1,2 @@
+[replaced-element-013.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/whitespace-in-grid-item-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/whitespace-in-grid-item-001.html.ini
new file mode 100644
index 00000000000..2cc0e5f26ce
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-items/whitespace-in-grid-item-001.html.ini
@@ -0,0 +1,2 @@
+[whitespace-in-grid-item-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-layout-properties.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-layout-properties.html.ini
new file mode 100644
index 00000000000..c50d8b963f7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-layout-properties.html.ini
@@ -0,0 +1,420 @@
+[grid-layout-properties.html]
+ [display: grid]
+ expected: FAIL
+
+ [display: inline-grid]
+ expected: FAIL
+
+ [grid-template-columns]
+ expected: FAIL
+
+ [grid-template-columns.initial]
+ expected: FAIL
+
+ [grid-template-columns.none]
+ expected: FAIL
+
+ [grid-template-columns.<line-names>]
+ expected: FAIL
+
+ [grid-template-columns.<track-size>.auto]
+ expected: FAIL
+
+ [grid-template-columns.<track-size>.<track-breadth>.<length>]
+ expected: FAIL
+
+ [grid-template-columns.<track-size>.<track-breadth>.<percentage>]
+ expected: FAIL
+
+ [grid-template-columns.<track-size>.<track-breadth>.<flex>]
+ expected: FAIL
+
+ [grid-template-columns.<track-size>.<track-breadth>.min-content]
+ expected: FAIL
+
+ [grid-template-columns.<track-size>.<track-breadth>.max-content]
+ expected: FAIL
+
+ [grid-template-columns.<track-size>.<track-breadth>.minmax()]
+ expected: FAIL
+
+ [grid-template-columns.reset]
+ expected: FAIL
+
+ [grid-template-rows]
+ expected: FAIL
+
+ [grid-template-rows.initial]
+ expected: FAIL
+
+ [grid-template-rows.none]
+ expected: FAIL
+
+ [grid-template-rows.<line-names>]
+ expected: FAIL
+
+ [grid-template-rows.<track-size>.auto]
+ expected: FAIL
+
+ [grid-template-rows.<track-size>.<track-breadth>.<length>]
+ expected: FAIL
+
+ [grid-template-rows.<track-size>.<track-breadth>.<percentage>]
+ expected: FAIL
+
+ [grid-template-rows.<track-size>.<track-breadth>.<flex>]
+ expected: FAIL
+
+ [grid-template-rows.<track-size>.<track-breadth>.min-content]
+ expected: FAIL
+
+ [grid-template-rows.<track-size>.<track-breadth>.max-content]
+ expected: FAIL
+
+ [grid-template-rows.<track-size>.<track-breadth>.minmax()]
+ expected: FAIL
+
+ [grid-template-rows.reset]
+ expected: FAIL
+
+ [grid-template-areas]
+ expected: FAIL
+
+ [grid-template-areas.initial]
+ expected: FAIL
+
+ [grid-template-areas.none]
+ expected: FAIL
+
+ [grid-template-areas.<string>+]
+ expected: FAIL
+
+ [grid-template-areas.reset]
+ expected: FAIL
+
+ [grid-template]
+ expected: FAIL
+
+ [grid-template.initial]
+ expected: FAIL
+
+ [grid-template.none]
+ expected: FAIL
+
+ [grid-template.<grid-template-rows> / <grid-template-columns>]
+ expected: FAIL
+
+ [grid-template.<line-names>]
+ expected: FAIL
+
+ [grid-template.<string>+]
+ expected: FAIL
+
+ [grid-template.<string><track-size>+]
+ expected: FAIL
+
+ [grid-template.reset]
+ expected: FAIL
+
+ [grid-auto-columns]
+ expected: FAIL
+
+ [grid-auto-columns.initial]
+ expected: FAIL
+
+ [grid-auto-columns.<track-size>.auto]
+ expected: FAIL
+
+ [grid-auto-columns.<track-size>.<track-breadth>.<length>]
+ expected: FAIL
+
+ [grid-auto-columns.<track-size>.<track-breadth>.<percentage>]
+ expected: FAIL
+
+ [grid-auto-columns.<track-size>.<track-breadth>.<flex>]
+ expected: FAIL
+
+ [grid-auto-columns.<track-size>.<track-breadth>.min-content]
+ expected: FAIL
+
+ [grid-auto-columns.<track-size>.<track-breadth>.max-content]
+ expected: FAIL
+
+ [grid-auto-columns.<track-size>.<track-breadth>.minmax()]
+ expected: FAIL
+
+ [grid-auto-columns.reset]
+ expected: FAIL
+
+ [grid-auto-rows]
+ expected: FAIL
+
+ [grid-auto-rows.initial]
+ expected: FAIL
+
+ [grid-auto-rows.<track-size>.auto]
+ expected: FAIL
+
+ [grid-auto-rows.<track-size>.<track-breadth>.<length>]
+ expected: FAIL
+
+ [grid-auto-rows.<track-size>.<track-breadth>.<percentage>]
+ expected: FAIL
+
+ [grid-auto-rows.<track-size>.<track-breadth>.<flex>]
+ expected: FAIL
+
+ [grid-auto-rows.<track-size>.<track-breadth>.min-content]
+ expected: FAIL
+
+ [grid-auto-rows.<track-size>.<track-breadth>.max-content]
+ expected: FAIL
+
+ [grid-auto-rows.<track-size>.<track-breadth>.minmax()]
+ expected: FAIL
+
+ [grid-auto-rows.reset]
+ expected: FAIL
+
+ [grid-auto-flow]
+ expected: FAIL
+
+ [grid-auto-flow.initial]
+ expected: FAIL
+
+ [grid-auto-flow.row]
+ expected: FAIL
+
+ [grid-auto-flow.column]
+ expected: FAIL
+
+ [grid-auto-flow.dense]
+ expected: FAIL
+
+ [grid-auto-flow.row dense]
+ expected: FAIL
+
+ [grid-auto-flow.column dense]
+ expected: FAIL
+
+ [grid-auto-flow.reset]
+ expected: FAIL
+
+ [grid-row-start]
+ expected: FAIL
+
+ [grid-row-start.initial]
+ expected: FAIL
+
+ [grid-row-start.auto]
+ expected: FAIL
+
+ [grid-row-start.<custom-ident>]
+ expected: FAIL
+
+ [grid-row-start.<integer>]
+ expected: FAIL
+
+ [grid-row-start.<integer> <ident>]
+ expected: FAIL
+
+ [grid-row-start.span <integer>]
+ expected: FAIL
+
+ [grid-row-start.span <custom-ident>]
+ expected: FAIL
+
+ [grid-row-start.span <integer> <custom-ident>]
+ expected: FAIL
+
+ [grid-row-start.reset]
+ expected: FAIL
+
+ [grid-column-start]
+ expected: FAIL
+
+ [grid-column-start.initial]
+ expected: FAIL
+
+ [grid-column-start.auto]
+ expected: FAIL
+
+ [grid-column-start.<custom-ident>]
+ expected: FAIL
+
+ [grid-column-start.<integer>]
+ expected: FAIL
+
+ [grid-column-start.<integer> <ident>]
+ expected: FAIL
+
+ [grid-column-start.span <integer>]
+ expected: FAIL
+
+ [grid-column-start.span <custom-ident>]
+ expected: FAIL
+
+ [grid-column-start.span <integer> <custom-ident>]
+ expected: FAIL
+
+ [grid-column-start.reset]
+ expected: FAIL
+
+ [grid-row-end]
+ expected: FAIL
+
+ [grid-row-end.initial]
+ expected: FAIL
+
+ [grid-row-end.auto]
+ expected: FAIL
+
+ [grid-row-end.<custom-ident>]
+ expected: FAIL
+
+ [grid-row-end.<integer>]
+ expected: FAIL
+
+ [grid-row-end.<integer> <ident>]
+ expected: FAIL
+
+ [grid-row-end.span <integer>]
+ expected: FAIL
+
+ [grid-row-end.span <custom-ident>]
+ expected: FAIL
+
+ [grid-row-end.span <integer> <custom-ident>]
+ expected: FAIL
+
+ [grid-row-end.reset]
+ expected: FAIL
+
+ [grid-column-end]
+ expected: FAIL
+
+ [grid-column-end.initial]
+ expected: FAIL
+
+ [grid-column-end.auto]
+ expected: FAIL
+
+ [grid-column-end.<custom-ident>]
+ expected: FAIL
+
+ [grid-column-end.<integer>]
+ expected: FAIL
+
+ [grid-column-end.<integer> <ident>]
+ expected: FAIL
+
+ [grid-column-end.span <integer>]
+ expected: FAIL
+
+ [grid-column-end.span <custom-ident>]
+ expected: FAIL
+
+ [grid-column-end.span <integer> <custom-ident>]
+ expected: FAIL
+
+ [grid-column-end.reset]
+ expected: FAIL
+
+ [grid-column]
+ expected: FAIL
+
+ [grid-column.initial]
+ expected: FAIL
+
+ [grid-column.auto]
+ expected: FAIL
+
+ [grid-column.<custom-ident>]
+ expected: FAIL
+
+ [grid-column.<integer> start]
+ expected: FAIL
+
+ [grid-column.<integer>]
+ expected: FAIL
+
+ [grid-column.<integer> <ident>]
+ expected: FAIL
+
+ [grid-column.span <integer>]
+ expected: FAIL
+
+ [grid-column.span <custom-ident>]
+ expected: FAIL
+
+ [grid-column.span <integer> <custom-ident>]
+ expected: FAIL
+
+ [grid-column.reset]
+ expected: FAIL
+
+ [grid-row]
+ expected: FAIL
+
+ [grid-row.initial]
+ expected: FAIL
+
+ [grid-row.auto]
+ expected: FAIL
+
+ [grid-row.<custom-ident>]
+ expected: FAIL
+
+ [grid-row.<integer> start]
+ expected: FAIL
+
+ [grid-row.<integer>]
+ expected: FAIL
+
+ [grid-row.<integer> <ident>]
+ expected: FAIL
+
+ [grid-row.span <integer>]
+ expected: FAIL
+
+ [grid-row.span <custom-ident>]
+ expected: FAIL
+
+ [grid-row.span <integer> <custom-ident>]
+ expected: FAIL
+
+ [grid-row.reset]
+ expected: FAIL
+
+ [grid-area]
+ expected: FAIL
+
+ [grid-area.initial]
+ expected: FAIL
+
+ [grid-area.auto]
+ expected: FAIL
+
+ [grid-area.<custom-ident>]
+ expected: FAIL
+
+ [grid-area.<integer> start]
+ expected: FAIL
+
+ [grid-area.<integer>]
+ expected: FAIL
+
+ [grid-area.<integer> <ident>]
+ expected: FAIL
+
+ [grid-area.span <integer>]
+ expected: FAIL
+
+ [grid-area.span <custom-ident>]
+ expected: FAIL
+
+ [grid-area.span <integer> <custom-ident>]
+ expected: FAIL
+
+ [grid-area.reset]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/compute-intrinsic-widths-scrollbar-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/compute-intrinsic-widths-scrollbar-001.html.ini
new file mode 100644
index 00000000000..87eb0d44f90
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/compute-intrinsic-widths-scrollbar-001.html.ini
@@ -0,0 +1,6 @@
+[compute-intrinsic-widths-scrollbar-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/display-grid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/display-grid.html.ini
new file mode 100644
index 00000000000..5ca965e132c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/display-grid.html.ini
@@ -0,0 +1,2 @@
+[display-grid.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/display-inline-grid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/display-inline-grid.html.ini
new file mode 100644
index 00000000000..fbcdadc5696
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/display-inline-grid.html.ini
@@ -0,0 +1,2 @@
+[display-inline-grid.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.worker.js.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-box-sizing-001.html.ini
index 958c1fb9bea..7f1fc8f5a91 100644
--- a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.worker.js.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-box-sizing-001.html.ini
@@ -1,78 +1,72 @@
-[2d.composite.grid.filter.shadow.fillRect.worker.html]
- [2d]
+[grid-box-sizing-001.html]
+ [.grid 1]
expected: FAIL
- [2d 1]
+ [.grid 2]
expected: FAIL
- [2d 2]
+ [.grid 3]
expected: FAIL
- [2d 3]
+ [.grid 4]
expected: FAIL
- [2d 4]
+ [.grid 5]
expected: FAIL
- [2d 5]
+ [.grid 6]
expected: FAIL
- [2d 6]
+ [.grid 7]
expected: FAIL
- [2d 7]
+ [.grid 8]
expected: FAIL
- [2d 8]
+ [.grid 9]
expected: FAIL
- [2d 9]
+ [.grid 10]
expected: FAIL
- [2d 10]
+ [.grid 11]
expected: FAIL
- [2d 11]
+ [.grid 12]
expected: FAIL
- [2d 12]
+ [.grid 13]
expected: FAIL
- [2d 13]
+ [.grid 14]
expected: FAIL
- [2d 14]
+ [.grid 15]
expected: FAIL
- [2d 15]
+ [.grid 16]
expected: FAIL
- [2d 16]
+ [.grid 17]
expected: FAIL
- [2d 17]
+ [.grid 18]
expected: FAIL
- [2d 18]
+ [.grid 19]
expected: FAIL
- [2d 19]
+ [.grid 20]
expected: FAIL
- [2d 20]
+ [.grid 21]
expected: FAIL
- [2d 21]
+ [.grid 22]
expected: FAIL
- [2d 22]
+ [.grid 23]
expected: FAIL
- [2d 23]
- expected: FAIL
-
- [2d 24]
- expected: FAIL
-
- [2d 25]
+ [.grid 24]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-button-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-button-001.html.ini
new file mode 100644
index 00000000000..5d1f6c12f76
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-button-001.html.ini
@@ -0,0 +1,6 @@
+[grid-button-001.html]
+ [[data-expected-width\] 1]
+ expected: FAIL
+
+ [[data-expected-width\] 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-margin-border-padding-scrollbar-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-margin-border-padding-scrollbar-001.html.ini
new file mode 100644
index 00000000000..7e1d0e0bfae
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-margin-border-padding-scrollbar-001.html.ini
@@ -0,0 +1,48 @@
+[grid-container-margin-border-padding-scrollbar-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-scrollbar-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-scrollbar-001.html.ini
new file mode 100644
index 00000000000..01d9498d63e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-scrollbar-001.html.ini
@@ -0,0 +1,2 @@
+[grid-container-scrollbar-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001.html.ini
new file mode 100644
index 00000000000..02bab1ab17f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-scrollbar-vertical-lr-001.html.ini
@@ -0,0 +1,2 @@
+[grid-container-scrollbar-vertical-lr-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001.html.ini
new file mode 100644
index 00000000000..b873019dd02
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-scrollbar-vertical-rl-001.html.ini
@@ -0,0 +1,2 @@
+[grid-container-scrollbar-vertical-rl-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-scrollbars-sizing-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-scrollbars-sizing-002.html.ini
new file mode 100644
index 00000000000..65f447695c9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-scrollbars-sizing-002.html.ini
@@ -0,0 +1,2 @@
+[grid-container-scrollbars-sizing-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-sizing-constraints-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-sizing-constraints-001.html.ini
new file mode 100644
index 00000000000..2c285a92a5b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-container-sizing-constraints-001.html.ini
@@ -0,0 +1,45 @@
+[grid-container-sizing-constraints-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-display-grid-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-display-grid-001.html.ini
new file mode 100644
index 00000000000..ed6ec496501
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-display-grid-001.html.ini
@@ -0,0 +1,2 @@
+[grid-display-grid-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-display-inline-grid-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-display-inline-grid-001.html.ini
new file mode 100644
index 00000000000..788df95eebc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-display-inline-grid-001.html.ini
@@ -0,0 +1,2 @@
+[grid-display-inline-grid-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-float-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-float-002.html.ini
new file mode 100644
index 00000000000..665d2d54938
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-float-002.html.ini
@@ -0,0 +1,3 @@
+[grid-float-002.html]
+ [.container 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-floats-no-intrude-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-floats-no-intrude-001.html.ini
new file mode 100644
index 00000000000..bf75afbdee0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-floats-no-intrude-001.html.ini
@@ -0,0 +1,2 @@
+[grid-floats-no-intrude-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-floats-no-intrude-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-floats-no-intrude-002.html.ini
new file mode 100644
index 00000000000..d5f69932c21
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-floats-no-intrude-002.html.ini
@@ -0,0 +1,2 @@
+[grid-floats-no-intrude-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-gutters-and-flex-content-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-gutters-and-flex-content-001.html.ini
new file mode 100644
index 00000000000..6ba87481cde
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-gutters-and-flex-content-001.html.ini
@@ -0,0 +1,24 @@
+[grid-gutters-and-flex-content-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-gutters-and-tracks-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-gutters-and-tracks-001.html.ini
new file mode 100644
index 00000000000..129b20ed2ad
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-gutters-and-tracks-001.html.ini
@@ -0,0 +1,51 @@
+[grid-gutters-and-tracks-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-gutters-as-percentage-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-gutters-as-percentage-001.html.ini
new file mode 100644
index 00000000000..07aacd6059c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-gutters-as-percentage-001.html.ini
@@ -0,0 +1,48 @@
+[grid-gutters-as-percentage-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-inline-floats-no-intrude-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-inline-floats-no-intrude-001.html.ini
new file mode 100644
index 00000000000..de624aacf44
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-inline-floats-no-intrude-001.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-floats-no-intrude-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-inline-margins-no-collapse-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-inline-margins-no-collapse-001.html.ini
new file mode 100644
index 00000000000..0bc470fac77
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-inline-margins-no-collapse-001.html.ini
@@ -0,0 +1,2 @@
+[grid-inline-margins-no-collapse-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-item-accepts-first-letter-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-item-accepts-first-letter-001.html.ini
new file mode 100644
index 00000000000..116bf6ed4fe
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-item-accepts-first-letter-001.html.ini
@@ -0,0 +1,6 @@
+[grid-item-accepts-first-letter-001.html]
+ [.grid,.inline-grid 1]
+ expected: FAIL
+
+ [.grid,.inline-grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-item-accepts-first-line-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-item-accepts-first-line-001.html.ini
new file mode 100644
index 00000000000..7238cbdfc01
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-item-accepts-first-line-001.html.ini
@@ -0,0 +1,6 @@
+[grid-item-accepts-first-line-001.html]
+ [.grid,.inline-grid 1]
+ expected: FAIL
+
+ [.grid,.inline-grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-item-hit-test.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-item-hit-test.html.ini
new file mode 100644
index 00000000000..2c02e66e5a2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-item-hit-test.html.ini
@@ -0,0 +1,3 @@
+[grid-item-hit-test.html]
+ [grid-item-hit-test]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-margins-no-collapse-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-margins-no-collapse-001.html.ini
new file mode 100644
index 00000000000..e679221faca
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-margins-no-collapse-001.html.ini
@@ -0,0 +1,2 @@
+[grid-margins-no-collapse-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-margins-no-collapse-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-margins-no-collapse-002.html.ini
new file mode 100644
index 00000000000..547383e95b8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-margins-no-collapse-002.html.ini
@@ -0,0 +1,2 @@
+[grid-margins-no-collapse-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-min-max-height-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-min-max-height-001.html.ini
new file mode 100644
index 00000000000..9922b9e77a7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-min-max-height-001.html.ini
@@ -0,0 +1,6 @@
+[grid-min-max-height-001.html]
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-size-shrink-to-fit-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-size-shrink-to-fit-001.html.ini
new file mode 100644
index 00000000000..67233e4812d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-size-shrink-to-fit-001.html.ini
@@ -0,0 +1,12 @@
+[grid-size-shrink-to-fit-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-support-display-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-support-display-001.html.ini
new file mode 100644
index 00000000000..9e5e6dbfd1d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-model/grid-support-display-001.html.ini
@@ -0,0 +1,18 @@
+[grid-support-display-001.html]
+ [Test style display 'grid']
+ expected: FAIL
+
+ [Test style display 'inline-grid']
+ expected: FAIL
+
+ [Test CSS display 'grid']
+ expected: FAIL
+
+ [Test CSS display 'inline-grid']
+ expected: FAIL
+
+ [Test JavaScript display 'grid']
+ expected: FAIL
+
+ [Test JavaScript display 'inline-grid']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-tracks-fractional-fr.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-tracks-fractional-fr.html.ini
new file mode 100644
index 00000000000..a9c61b6bd1e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-tracks-fractional-fr.html.ini
@@ -0,0 +1,3 @@
+[grid-tracks-fractional-fr.html]
+ [Tests fractional fr-units which should multiply to whole numbers.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-tracks-stretched-with-different-flex-factors-sum.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-tracks-stretched-with-different-flex-factors-sum.html.ini
new file mode 100644
index 00000000000..d8fc97024c0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-tracks-stretched-with-different-flex-factors-sum.html.ini
@@ -0,0 +1,6 @@
+[grid-tracks-stretched-with-different-flex-factors-sum.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-with-aspect-ratio-uses-content-box-height-for-track-sizing.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-with-aspect-ratio-uses-content-box-height-for-track-sizing.html.ini
new file mode 100644
index 00000000000..be001036d18
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-with-aspect-ratio-uses-content-box-height-for-track-sizing.html.ini
@@ -0,0 +1,2 @@
+[grid-with-aspect-ratio-uses-content-box-height-for-track-sizing.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-with-dynamic-img.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-with-dynamic-img.html.ini
new file mode 100644
index 00000000000..bd5f7c04c7c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-with-dynamic-img.html.ini
@@ -0,0 +1,2 @@
+[grid-with-dynamic-img.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-with-orthogonal-child-within-flexbox.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-with-orthogonal-child-within-flexbox.html.ini
new file mode 100644
index 00000000000..2a5641ef46d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-with-orthogonal-child-within-flexbox.html.ini
@@ -0,0 +1,2 @@
+[grid-with-orthogonal-child-within-flexbox.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-within-flexbox-definite-change.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-within-flexbox-definite-change.html.ini
new file mode 100644
index 00000000000..16a6aa12262
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-within-flexbox-definite-change.html.ini
@@ -0,0 +1,2 @@
+[grid-within-flexbox-definite-change.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/grid-within-flexbox-indefinite.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/grid-within-flexbox-indefinite.html.ini
new file mode 100644
index 00000000000..de8dbad9c0d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/grid-within-flexbox-indefinite.html.ini
@@ -0,0 +1,2 @@
+[grid-within-flexbox-indefinite.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-001.html.ini
new file mode 100644
index 00000000000..fe71193b1a8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-001.html.ini
@@ -0,0 +1,2 @@
+[grid-support-grid-auto-columns-rows-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-002.html.ini
new file mode 100644
index 00000000000..471709d5fa3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-002.html.ini
@@ -0,0 +1,2 @@
+[grid-support-grid-auto-columns-rows-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-003.html.ini
new file mode 100644
index 00000000000..bee2c618937
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/implicit-grids/grid-support-grid-auto-columns-rows-003.html.ini
@@ -0,0 +1,2 @@
+[grid-support-grid-auto-columns-rows-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/inheritance.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/inheritance.html.ini
new file mode 100644
index 00000000000..4929af8ef09
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/inheritance.html.ini
@@ -0,0 +1,60 @@
+[inheritance.html]
+ [Property grid-auto-columns has initial value auto]
+ expected: FAIL
+
+ [Property grid-auto-columns does not inherit]
+ expected: FAIL
+
+ [Property grid-auto-flow has initial value row]
+ expected: FAIL
+
+ [Property grid-auto-flow does not inherit]
+ expected: FAIL
+
+ [Property grid-auto-rows has initial value auto]
+ expected: FAIL
+
+ [Property grid-auto-rows does not inherit]
+ expected: FAIL
+
+ [Property grid-column-end has initial value auto]
+ expected: FAIL
+
+ [Property grid-column-end does not inherit]
+ expected: FAIL
+
+ [Property grid-column-start has initial value auto]
+ expected: FAIL
+
+ [Property grid-column-start does not inherit]
+ expected: FAIL
+
+ [Property grid-row-end has initial value auto]
+ expected: FAIL
+
+ [Property grid-row-end does not inherit]
+ expected: FAIL
+
+ [Property grid-row-start has initial value auto]
+ expected: FAIL
+
+ [Property grid-row-start does not inherit]
+ expected: FAIL
+
+ [Property grid-template-areas has initial value none]
+ expected: FAIL
+
+ [Property grid-template-areas does not inherit]
+ expected: FAIL
+
+ [Property grid-template-columns has initial value none]
+ expected: FAIL
+
+ [Property grid-template-columns does not inherit]
+ expected: FAIL
+
+ [Property grid-template-rows has initial value none]
+ expected: FAIL
+
+ [Property grid-template-rows does not inherit]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-001.html.ini
new file mode 100644
index 00000000000..1f566e37a3d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-001.html.ini
@@ -0,0 +1,144 @@
+[baseline-alignment-affects-intrinsic-size-001.html]
+ [#grid1-auto-auto 1]
+ expected: FAIL
+
+ [#grid2-auto-auto 2]
+ expected: FAIL
+
+ [#grid3-auto-auto 3]
+ expected: FAIL
+
+ [#grid4-auto-auto 4]
+ expected: FAIL
+
+ [#grid1-auto-min-content 5]
+ expected: FAIL
+
+ [#grid2-auto-min-content 6]
+ expected: FAIL
+
+ [#grid3-auto-min-content 7]
+ expected: FAIL
+
+ [#grid4-auto-min-content 8]
+ expected: FAIL
+
+ [#grid1-auto-max-content 9]
+ expected: FAIL
+
+ [#grid2-auto-max-content 10]
+ expected: FAIL
+
+ [#grid3-auto-max-content 11]
+ expected: FAIL
+
+ [#grid4-auto-max-content 12]
+ expected: FAIL
+
+ [#grid1-min-content-auto 13]
+ expected: FAIL
+
+ [#grid2-min-content-auto 14]
+ expected: FAIL
+
+ [#grid3-min-content-auto 15]
+ expected: FAIL
+
+ [#grid4-min-content-auto 16]
+ expected: FAIL
+
+ [#grid1-min-content-min-content 17]
+ expected: FAIL
+
+ [#grid2-min-content-min-content 18]
+ expected: FAIL
+
+ [#grid3-min-content-min-content 19]
+ expected: FAIL
+
+ [#grid4-min-content-min-content 20]
+ expected: FAIL
+
+ [#grid1-min-content-max-content 21]
+ expected: FAIL
+
+ [#grid2-min-content-max-content 22]
+ expected: FAIL
+
+ [#grid3-min-content-max-content 23]
+ expected: FAIL
+
+ [#grid4-min-content-max-content 24]
+ expected: FAIL
+
+ [#grid1-max-content-auto 25]
+ expected: FAIL
+
+ [#grid2-max-content-auto 26]
+ expected: FAIL
+
+ [#grid3-max-content-auto 27]
+ expected: FAIL
+
+ [#grid4-max-content-auto 28]
+ expected: FAIL
+
+ [#grid1-max-content-min-content 29]
+ expected: FAIL
+
+ [#grid2-max-content-min-content 30]
+ expected: FAIL
+
+ [#grid3-max-content-min-content 31]
+ expected: FAIL
+
+ [#grid4-max-content-min-content 32]
+ expected: FAIL
+
+ [#grid1-max-content-max-content 33]
+ expected: FAIL
+
+ [#grid2-max-content-max-content 34]
+ expected: FAIL
+
+ [#grid3-max-content-max-content 35]
+ expected: FAIL
+
+ [#grid4-max-content-max-content 36]
+ expected: FAIL
+
+ [#grid1-0px-auto 37]
+ expected: FAIL
+
+ [#grid2-0px-auto 38]
+ expected: FAIL
+
+ [#grid3-0px-auto 39]
+ expected: FAIL
+
+ [#grid4-0px-auto 40]
+ expected: FAIL
+
+ [#grid1-0px-min-content 41]
+ expected: FAIL
+
+ [#grid2-0px-min-content 42]
+ expected: FAIL
+
+ [#grid3-0px-min-content 43]
+ expected: FAIL
+
+ [#grid4-0px-min-content 44]
+ expected: FAIL
+
+ [#grid1-0px-max-content 45]
+ expected: FAIL
+
+ [#grid2-0px-max-content 46]
+ expected: FAIL
+
+ [#grid3-0px-max-content 47]
+ expected: FAIL
+
+ [#grid4-0px-max-content 48]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-002.html.ini
new file mode 100644
index 00000000000..128551a288d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-002.html.ini
@@ -0,0 +1,144 @@
+[baseline-alignment-affects-intrinsic-size-002.html]
+ [#grid1-auto-auto 1]
+ expected: FAIL
+
+ [#grid2-auto-auto 2]
+ expected: FAIL
+
+ [#grid3-auto-auto 3]
+ expected: FAIL
+
+ [#grid4-auto-auto 4]
+ expected: FAIL
+
+ [#grid1-auto-min-content 5]
+ expected: FAIL
+
+ [#grid2-auto-min-content 6]
+ expected: FAIL
+
+ [#grid3-auto-min-content 7]
+ expected: FAIL
+
+ [#grid4-auto-min-content 8]
+ expected: FAIL
+
+ [#grid1-auto-max-content 9]
+ expected: FAIL
+
+ [#grid2-auto-max-content 10]
+ expected: FAIL
+
+ [#grid3-auto-max-content 11]
+ expected: FAIL
+
+ [#grid4-auto-max-content 12]
+ expected: FAIL
+
+ [#grid1-min-content-auto 13]
+ expected: FAIL
+
+ [#grid2-min-content-auto 14]
+ expected: FAIL
+
+ [#grid3-min-content-auto 15]
+ expected: FAIL
+
+ [#grid4-min-content-auto 16]
+ expected: FAIL
+
+ [#grid1-min-content-min-content 17]
+ expected: FAIL
+
+ [#grid2-min-content-min-content 18]
+ expected: FAIL
+
+ [#grid3-min-content-min-content 19]
+ expected: FAIL
+
+ [#grid4-min-content-min-content 20]
+ expected: FAIL
+
+ [#grid1-min-content-max-content 21]
+ expected: FAIL
+
+ [#grid2-min-content-max-content 22]
+ expected: FAIL
+
+ [#grid3-min-content-max-content 23]
+ expected: FAIL
+
+ [#grid4-min-content-max-content 24]
+ expected: FAIL
+
+ [#grid1-max-content-auto 25]
+ expected: FAIL
+
+ [#grid2-max-content-auto 26]
+ expected: FAIL
+
+ [#grid3-max-content-auto 27]
+ expected: FAIL
+
+ [#grid4-max-content-auto 28]
+ expected: FAIL
+
+ [#grid1-max-content-min-content 29]
+ expected: FAIL
+
+ [#grid2-max-content-min-content 30]
+ expected: FAIL
+
+ [#grid3-max-content-min-content 31]
+ expected: FAIL
+
+ [#grid4-max-content-min-content 32]
+ expected: FAIL
+
+ [#grid1-max-content-max-content 33]
+ expected: FAIL
+
+ [#grid2-max-content-max-content 34]
+ expected: FAIL
+
+ [#grid3-max-content-max-content 35]
+ expected: FAIL
+
+ [#grid4-max-content-max-content 36]
+ expected: FAIL
+
+ [#grid1-0px-auto 37]
+ expected: FAIL
+
+ [#grid2-0px-auto 38]
+ expected: FAIL
+
+ [#grid3-0px-auto 39]
+ expected: FAIL
+
+ [#grid4-0px-auto 40]
+ expected: FAIL
+
+ [#grid1-0px-min-content 41]
+ expected: FAIL
+
+ [#grid2-0px-min-content 42]
+ expected: FAIL
+
+ [#grid3-0px-min-content 43]
+ expected: FAIL
+
+ [#grid4-0px-min-content 44]
+ expected: FAIL
+
+ [#grid1-0px-max-content 45]
+ expected: FAIL
+
+ [#grid2-0px-max-content 46]
+ expected: FAIL
+
+ [#grid3-0px-max-content 47]
+ expected: FAIL
+
+ [#grid4-0px-max-content 48]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-003.html.ini
new file mode 100644
index 00000000000..25434de386c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-003.html.ini
@@ -0,0 +1,72 @@
+[baseline-alignment-affects-intrinsic-size-003.html]
+ [#grid1-auto-auto 1]
+ expected: FAIL
+
+ [#grid2-auto-auto 2]
+ expected: FAIL
+
+ [#grid1-auto-min-content 3]
+ expected: FAIL
+
+ [#grid2-auto-min-content 4]
+ expected: FAIL
+
+ [#grid1-auto-max-content 5]
+ expected: FAIL
+
+ [#grid2-auto-max-content 6]
+ expected: FAIL
+
+ [#grid1-min-content-auto 7]
+ expected: FAIL
+
+ [#grid2-min-content-auto 8]
+ expected: FAIL
+
+ [#grid1-min-content-min-content 9]
+ expected: FAIL
+
+ [#grid2-min-content-min-content 10]
+ expected: FAIL
+
+ [#grid1-min-content-max-content 11]
+ expected: FAIL
+
+ [#grid2-min-content-max-content 12]
+ expected: FAIL
+
+ [#grid1-max-content-auto 13]
+ expected: FAIL
+
+ [#grid2-max-content-auto 14]
+ expected: FAIL
+
+ [#grid1-max-content-min-content 15]
+ expected: FAIL
+
+ [#grid2-max-content-min-content 16]
+ expected: FAIL
+
+ [#grid1-max-content-max-content 17]
+ expected: FAIL
+
+ [#grid2-max-content-max-content 18]
+ expected: FAIL
+
+ [#grid1-0px-auto 19]
+ expected: FAIL
+
+ [#grid2-0px-auto 20]
+ expected: FAIL
+
+ [#grid1-0px-min-content 21]
+ expected: FAIL
+
+ [#grid2-0px-min-content 22]
+ expected: FAIL
+
+ [#grid1-0px-max-content 23]
+ expected: FAIL
+
+ [#grid2-0px-max-content 24]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-004.html.ini
new file mode 100644
index 00000000000..6bb706ae1be
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-004.html.ini
@@ -0,0 +1,72 @@
+[baseline-alignment-affects-intrinsic-size-004.html]
+ [#grid1-auto-auto 1]
+ expected: FAIL
+
+ [#grid2-auto-auto 2]
+ expected: FAIL
+
+ [#grid1-auto-min-content 3]
+ expected: FAIL
+
+ [#grid2-auto-min-content 4]
+ expected: FAIL
+
+ [#grid1-auto-max-content 5]
+ expected: FAIL
+
+ [#grid2-auto-max-content 6]
+ expected: FAIL
+
+ [#grid1-min-content-auto 7]
+ expected: FAIL
+
+ [#grid2-min-content-auto 8]
+ expected: FAIL
+
+ [#grid1-min-content-min-content 9]
+ expected: FAIL
+
+ [#grid2-min-content-min-content 10]
+ expected: FAIL
+
+ [#grid1-min-content-max-content 11]
+ expected: FAIL
+
+ [#grid2-min-content-max-content 12]
+ expected: FAIL
+
+ [#grid1-max-content-auto 13]
+ expected: FAIL
+
+ [#grid2-max-content-auto 14]
+ expected: FAIL
+
+ [#grid1-max-content-min-content 15]
+ expected: FAIL
+
+ [#grid2-max-content-min-content 16]
+ expected: FAIL
+
+ [#grid1-max-content-max-content 17]
+ expected: FAIL
+
+ [#grid2-max-content-max-content 18]
+ expected: FAIL
+
+ [#grid1-0px-auto 19]
+ expected: FAIL
+
+ [#grid2-0px-auto 20]
+ expected: FAIL
+
+ [#grid1-0px-min-content 21]
+ expected: FAIL
+
+ [#grid2-0px-min-content 22]
+ expected: FAIL
+
+ [#grid1-0px-max-content 23]
+ expected: FAIL
+
+ [#grid2-0px-max-content 24]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-005.html.ini
new file mode 100644
index 00000000000..4557521639e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-005.html.ini
@@ -0,0 +1,72 @@
+[baseline-alignment-affects-intrinsic-size-005.html]
+ [#grid1-auto-auto 1]
+ expected: FAIL
+
+ [#grid2-auto-auto 2]
+ expected: FAIL
+
+ [#grid1-auto-min-content 3]
+ expected: FAIL
+
+ [#grid2-auto-min-content 4]
+ expected: FAIL
+
+ [#grid1-auto-max-content 5]
+ expected: FAIL
+
+ [#grid2-auto-max-content 6]
+ expected: FAIL
+
+ [#grid1-min-content-auto 7]
+ expected: FAIL
+
+ [#grid2-min-content-auto 8]
+ expected: FAIL
+
+ [#grid1-min-content-min-content 9]
+ expected: FAIL
+
+ [#grid2-min-content-min-content 10]
+ expected: FAIL
+
+ [#grid1-min-content-max-content 11]
+ expected: FAIL
+
+ [#grid2-min-content-max-content 12]
+ expected: FAIL
+
+ [#grid1-max-content-auto 13]
+ expected: FAIL
+
+ [#grid2-max-content-auto 14]
+ expected: FAIL
+
+ [#grid1-max-content-min-content 15]
+ expected: FAIL
+
+ [#grid2-max-content-min-content 16]
+ expected: FAIL
+
+ [#grid1-max-content-max-content 17]
+ expected: FAIL
+
+ [#grid2-max-content-max-content 18]
+ expected: FAIL
+
+ [#grid1-0px-auto 19]
+ expected: FAIL
+
+ [#grid2-0px-auto 20]
+ expected: FAIL
+
+ [#grid1-0px-min-content 21]
+ expected: FAIL
+
+ [#grid2-0px-min-content 22]
+ expected: FAIL
+
+ [#grid1-0px-max-content 23]
+ expected: FAIL
+
+ [#grid2-0px-max-content 24]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-006.html.ini
new file mode 100644
index 00000000000..d49d72d8c35
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/baseline-alignment-affects-intrinsic-size-006.html.ini
@@ -0,0 +1,72 @@
+[baseline-alignment-affects-intrinsic-size-006.html]
+ [#grid1-auto-auto 1]
+ expected: FAIL
+
+ [#grid2-auto-auto 2]
+ expected: FAIL
+
+ [#grid1-auto-min-content 3]
+ expected: FAIL
+
+ [#grid2-auto-min-content 4]
+ expected: FAIL
+
+ [#grid1-auto-max-content 5]
+ expected: FAIL
+
+ [#grid2-auto-max-content 6]
+ expected: FAIL
+
+ [#grid1-min-content-auto 7]
+ expected: FAIL
+
+ [#grid2-min-content-auto 8]
+ expected: FAIL
+
+ [#grid1-min-content-min-content 9]
+ expected: FAIL
+
+ [#grid2-min-content-min-content 10]
+ expected: FAIL
+
+ [#grid1-min-content-max-content 11]
+ expected: FAIL
+
+ [#grid2-min-content-max-content 12]
+ expected: FAIL
+
+ [#grid1-max-content-auto 13]
+ expected: FAIL
+
+ [#grid2-max-content-auto 14]
+ expected: FAIL
+
+ [#grid1-max-content-min-content 15]
+ expected: FAIL
+
+ [#grid2-max-content-min-content 16]
+ expected: FAIL
+
+ [#grid1-max-content-max-content 17]
+ expected: FAIL
+
+ [#grid2-max-content-max-content 18]
+ expected: FAIL
+
+ [#grid1-0px-auto 19]
+ expected: FAIL
+
+ [#grid2-0px-auto 20]
+ expected: FAIL
+
+ [#grid1-0px-min-content 21]
+ expected: FAIL
+
+ [#grid2-0px-min-content 22]
+ expected: FAIL
+
+ [#grid1-0px-max-content 23]
+ expected: FAIL
+
+ [#grid2-0px-max-content 24]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-and-intrinsic-sizes-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-and-intrinsic-sizes-001.html.ini
new file mode 100644
index 00000000000..1803657031c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-and-intrinsic-sizes-001.html.ini
@@ -0,0 +1,21 @@
+[flex-and-intrinsic-sizes-001.html]
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-and-intrinsic-sizes-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-and-intrinsic-sizes-002.html.ini
new file mode 100644
index 00000000000..9ea03631ebf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-and-intrinsic-sizes-002.html.ini
@@ -0,0 +1,2 @@
+[flex-and-intrinsic-sizes-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-sizing-columns-min-max-width-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-sizing-columns-min-max-width-001.html.ini
new file mode 100644
index 00000000000..85dd7ca14b8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-sizing-columns-min-max-width-001.html.ini
@@ -0,0 +1,36 @@
+[flex-sizing-columns-min-max-width-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-sizing-rows-indefinite-height.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-sizing-rows-indefinite-height.html.ini
new file mode 100644
index 00000000000..f60d85c2234
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-sizing-rows-indefinite-height.html.ini
@@ -0,0 +1,2 @@
+[flex-sizing-rows-indefinite-height.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-sizing-rows-min-max-height-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-sizing-rows-min-max-height-001.html.ini
new file mode 100644
index 00000000000..464114f1070
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-sizing-rows-min-max-height-001.html.ini
@@ -0,0 +1,36 @@
+[flex-sizing-rows-min-max-height-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-tracks-with-fractional-size.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-tracks-with-fractional-size.html.ini
new file mode 100644
index 00000000000..20b3dd531e5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/flex-tracks-with-fractional-size.html.ini
@@ -0,0 +1,2 @@
+[flex-tracks-with-fractional-size.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-001.html.ini
new file mode 100644
index 00000000000..f36383ab789
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-001.html.ini
@@ -0,0 +1,2 @@
+[grid-as-flex-item-should-not-shrink-to-fit-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-002.html.ini
new file mode 100644
index 00000000000..01e19347ff9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-002.html.ini
@@ -0,0 +1,2 @@
+[grid-as-flex-item-should-not-shrink-to-fit-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-003.html.ini
new file mode 100644
index 00000000000..f5ef6b7191c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-003.html.ini
@@ -0,0 +1,2 @@
+[grid-as-flex-item-should-not-shrink-to-fit-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-004.html.ini
new file mode 100644
index 00000000000..2acccff409d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-004.html.ini
@@ -0,0 +1,2 @@
+[grid-as-flex-item-should-not-shrink-to-fit-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-005.html.ini
new file mode 100644
index 00000000000..c91429d8133
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-005.html.ini
@@ -0,0 +1,2 @@
+[grid-as-flex-item-should-not-shrink-to-fit-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-006.html.ini
new file mode 100644
index 00000000000..3339eee25ce
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-006.html.ini
@@ -0,0 +1,2 @@
+[grid-as-flex-item-should-not-shrink-to-fit-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-007.html.ini
new file mode 100644
index 00000000000..12a326d9678
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-007.html.ini
@@ -0,0 +1,2 @@
+[grid-as-flex-item-should-not-shrink-to-fit-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-008.html.ini
new file mode 100644
index 00000000000..df8aa5e738c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-008.html.ini
@@ -0,0 +1,2 @@
+[grid-as-flex-item-should-not-shrink-to-fit-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-automatic-minimum-for-auto-columns-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-automatic-minimum-for-auto-columns-001.html.ini
new file mode 100644
index 00000000000..841d24fde34
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-automatic-minimum-for-auto-columns-001.html.ini
@@ -0,0 +1,12 @@
+[grid-automatic-minimum-for-auto-columns-001.html]
+ [Check that min-width is honored when sizing auto columns.]
+ expected: FAIL
+
+ [Check that min-width is honored when sizing auto columns and spanning grid items.]
+ expected: FAIL
+
+ [Check the interactions between width and min-width and auto tracks.]
+ expected: FAIL
+
+ [Check that borders and paddings are considering when computing min sizes.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-container-percentage-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-container-percentage-001.html.ini
new file mode 100644
index 00000000000..f2e92e24cad
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-container-percentage-001.html.ini
@@ -0,0 +1,54 @@
+[grid-container-percentage-001.html]
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-container-percentage-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-container-percentage-002.html.ini
new file mode 100644
index 00000000000..86c1903e253
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-container-percentage-002.html.ini
@@ -0,0 +1,69 @@
+[grid-container-percentage-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
+
+ [.grid 17]
+ expected: FAIL
+
+ [.grid 18]
+ expected: FAIL
+
+ [.grid 19]
+ expected: FAIL
+
+ [.grid 20]
+ expected: FAIL
+
+ [.grid 21]
+ expected: FAIL
+
+ [.grid 22]
+ expected: FAIL
+
+ [.grid 23]
+ expected: FAIL
+
+ [.grid 24]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-002.html.ini
new file mode 100644
index 00000000000..9564f061c1e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-002.html.ini
@@ -0,0 +1,3 @@
+[grid-content-distribution-must-account-for-track-sizing-002.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-003.html.ini
new file mode 100644
index 00000000000..4de8176e90b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-003.html.ini
@@ -0,0 +1,3 @@
+[grid-content-distribution-must-account-for-track-sizing-003.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-004.html.ini
new file mode 100644
index 00000000000..2f618c421db
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-004.html.ini
@@ -0,0 +1,3 @@
+[grid-content-distribution-must-account-for-track-sizing-004.html]
+ [.grid 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-find-fr-size-gutters-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-find-fr-size-gutters-001.html.ini
new file mode 100644
index 00000000000..14d46278447
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-find-fr-size-gutters-001.html.ini
@@ -0,0 +1,48 @@
+[grid-find-fr-size-gutters-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
+
+ [.grid 13]
+ expected: FAIL
+
+ [.grid 14]
+ expected: FAIL
+
+ [.grid 15]
+ expected: FAIL
+
+ [.grid 16]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-find-fr-size-gutters-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-find-fr-size-gutters-002.html.ini
new file mode 100644
index 00000000000..623c5855cd6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-find-fr-size-gutters-002.html.ini
@@ -0,0 +1,18 @@
+[grid-find-fr-size-gutters-002.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-find-fr-size-restart-algorithm.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-find-fr-size-restart-algorithm.html.ini
new file mode 100644
index 00000000000..b454160557b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-find-fr-size-restart-algorithm.html.ini
@@ -0,0 +1,2 @@
+[grid-find-fr-size-restart-algorithm.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-fit-content-percentage.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-fit-content-percentage.html.ini
new file mode 100644
index 00000000000..c6e3c070ff9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-fit-content-percentage.html.ini
@@ -0,0 +1,60 @@
+[grid-fit-content-percentage.html]
+ [fit-content(0%); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(50%); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(75%); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(100%); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(150%); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(calc(0px + 0%)); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(calc(0px + 50%)); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(calc(0px + 75%)); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(calc(0px + 100%)); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(calc(0px + 150%)); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(0%); min-width: auto]
+ expected: FAIL
+
+ [fit-content(50%); min-width: auto]
+ expected: FAIL
+
+ [fit-content(75%); min-width: auto]
+ expected: FAIL
+
+ [fit-content(100%); min-width: auto]
+ expected: FAIL
+
+ [fit-content(150%); min-width: auto]
+ expected: FAIL
+
+ [fit-content(calc(0px + 0%)); min-width: auto]
+ expected: FAIL
+
+ [fit-content(calc(0px + 50%)); min-width: auto]
+ expected: FAIL
+
+ [fit-content(calc(0px + 75%)); min-width: auto]
+ expected: FAIL
+
+ [fit-content(calc(0px + 100%)); min-width: auto]
+ expected: FAIL
+
+ [fit-content(calc(0px + 150%)); min-width: auto]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-001.html.ini
new file mode 100644
index 00000000000..793ac284517
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-001.html.ini
@@ -0,0 +1,90 @@
+[grid-flex-track-intrinsic-sizes-001.html]
+ ['grid' with: grid-template-columns: 0fr; and grid-template-rows: 0fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(0, .5fr); and grid-template-rows: minmax(0, .5fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(0, 1fr); and grid-template-rows: minmax(0, 1fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(0, 2fr); and grid-template-rows: minmax(0, 2fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(75px, 1fr); and grid-template-rows: minmax(75px, 1fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 0fr 1fr; and grid-template-rows: 0fr 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr 0fr; and grid-template-rows: 1fr 0fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 1fr 3fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 0fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 1fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(15px, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(15px, 0fr) minmax(0, 1fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(20px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(20px, 1fr) minmax(0, 1fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(30px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(30px, 1fr) minmax(0, 1fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr minmax(25px, 1fr); and grid-template-rows: 1fr minmax(25px, 1fr);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr max-content; and grid-template-rows: 1fr max-content;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(0, 0fr) auto; and grid-template-rows: minmax(0, 0fr) auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(0, 1fr) auto; and grid-template-rows: minmax(0, 1fr) auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(25px, 0fr) auto; and grid-template-rows: minmax(25px, 0fr) auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(25px, 1fr) auto; and grid-template-rows: minmax(25px, 1fr) auto;]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-002.html.ini
new file mode 100644
index 00000000000..1518f246042
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-002.html.ini
@@ -0,0 +1,15 @@
+[grid-flex-track-intrinsic-sizes-002.html]
+ ['grid' with: grid-template-columns: 1fr auto auto auto; and grid-template-rows: 1fr auto auto auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(0, 1fr) auto auto auto; and grid-template-rows: minmax(0, 1fr) auto auto auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr 1fr 1fr 1fr; and grid-template-rows: 1fr 1fr 1fr 1fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr 1fr 1fr 4fr; and grid-template-rows: 1fr 1fr 1fr 4fr;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 1fr 1fr 1fr; and grid-template-rows: 1fr 1fr 1fr;]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-003.html.ini
new file mode 100644
index 00000000000..82bb050a252
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-003.html.ini
@@ -0,0 +1,306 @@
+[grid-flex-track-intrinsic-sizes-003.html]
+ [auto min item 'grid' with: grid-template-columns: 0fr; and grid-template-rows: 0fr;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr);]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: minmax(0, .5fr); and grid-template-rows: minmax(0, .5fr);]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: minmax(0, 1fr); and grid-template-rows: minmax(0, 1fr);]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: minmax(0, 2fr); and grid-template-rows: minmax(0, 2fr);]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: minmax(75px, 1fr); and grid-template-rows: minmax(75px, 1fr);]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 0fr 1fr; and grid-template-rows: 0fr 1fr;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 1fr 0fr; and grid-template-rows: 1fr 0fr;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 1fr 3fr;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 0fr);]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 1fr);]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: minmax(15px, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(15px, 0fr) minmax(0, 1fr);]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: minmax(20px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(20px, 1fr) minmax(0, 1fr);]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: minmax(40px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(40px, 1fr) minmax(0, 1fr);]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr);]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr);]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr);]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 1fr minmax(25px, 1fr); and grid-template-rows: 1fr minmax(25px, 1fr);]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 0fr min-content; and grid-template-rows: 0fr min-content;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 0.5fr auto; and grid-template-rows: 0.5fr auto;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 1fr max-content; and grid-template-rows: 1fr max-content;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: 1fr min-content; and grid-template-rows: 1fr min-content;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: minmax(0, 0fr) min-content; and grid-template-rows: minmax(0, 0fr) min-content;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: minmax(0, 0fr) auto; and grid-template-rows: minmax(0, 0fr) auto;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: minmax(0, 1fr) auto; and grid-template-rows: minmax(0, 1fr) auto;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: minmax(25px, 0fr) auto; and grid-template-rows: minmax(25px, 0fr) auto;]
+ expected: FAIL
+
+ [auto min item 'grid' with: grid-template-columns: minmax(25px, 1fr) auto; and grid-template-rows: minmax(25px, 1fr) auto;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 0fr; and grid-template-rows: 0fr;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr);]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: minmax(0, .5fr); and grid-template-rows: minmax(0, .5fr);]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: minmax(0, 1fr); and grid-template-rows: minmax(0, 1fr);]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: minmax(0, 2fr); and grid-template-rows: minmax(0, 2fr);]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: minmax(75px, 1fr); and grid-template-rows: minmax(75px, 1fr);]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 0fr 1fr; and grid-template-rows: 0fr 1fr;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 1fr 0fr; and grid-template-rows: 1fr 0fr;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 1fr 3fr;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 0fr);]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 1fr);]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: minmax(15px, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(15px, 0fr) minmax(0, 1fr);]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: minmax(20px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(20px, 1fr) minmax(0, 1fr);]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: minmax(40px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(40px, 1fr) minmax(0, 1fr);]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr);]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr);]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr);]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 1fr minmax(25px, 1fr); and grid-template-rows: 1fr minmax(25px, 1fr);]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 0fr min-content; and grid-template-rows: 0fr min-content;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 0.5fr auto; and grid-template-rows: 0.5fr auto;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 1fr max-content; and grid-template-rows: 1fr max-content;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: 1fr min-content; and grid-template-rows: 1fr min-content;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr) min-content; and grid-template-rows: minmax(0, 0fr) min-content;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: minmax(0, 0fr) auto; and grid-template-rows: minmax(0, 0fr) auto;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: minmax(0, 1fr) auto; and grid-template-rows: minmax(0, 1fr) auto;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: minmax(25px, 0fr) auto; and grid-template-rows: minmax(25px, 0fr) auto;]
+ expected: FAIL
+
+ [min-content min item 'grid' with: grid-template-columns: minmax(25px, 1fr) auto; and grid-template-rows: minmax(25px, 1fr) auto;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 0fr; and grid-template-rows: 0fr;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr);]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: minmax(0, .5fr); and grid-template-rows: minmax(0, .5fr);]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: minmax(0, 1fr); and grid-template-rows: minmax(0, 1fr);]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: minmax(0, 2fr); and grid-template-rows: minmax(0, 2fr);]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: minmax(75px, 1fr); and grid-template-rows: minmax(75px, 1fr);]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 0fr 1fr; and grid-template-rows: 0fr 1fr;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 1fr 0fr; and grid-template-rows: 1fr 0fr;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 1fr 3fr;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 0fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 0fr);]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: minmax(0, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(0, 0fr) minmax(0, 1fr);]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: minmax(15px, 0fr) minmax(0, 1fr); and grid-template-rows: minmax(15px, 0fr) minmax(0, 1fr);]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: minmax(20px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(20px, 1fr) minmax(0, 1fr);]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: minmax(40px, 1fr) minmax(0, 1fr); and grid-template-rows: minmax(40px, 1fr) minmax(0, 1fr);]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr);]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr);]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr);]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 1fr minmax(25px, 1fr); and grid-template-rows: 1fr minmax(25px, 1fr);]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 0fr min-content; and grid-template-rows: 0fr min-content;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 0.5fr auto; and grid-template-rows: 0.5fr auto;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 1fr max-content; and grid-template-rows: 1fr max-content;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: 1fr min-content; and grid-template-rows: 1fr min-content;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: minmax(0, 0fr) min-content; and grid-template-rows: minmax(0, 0fr) min-content;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: minmax(0, 0fr) auto; and grid-template-rows: minmax(0, 0fr) auto;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: minmax(0, 1fr) auto; and grid-template-rows: minmax(0, 1fr) auto;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: minmax(25px, 0fr) auto; and grid-template-rows: minmax(25px, 0fr) auto;]
+ expected: FAIL
+
+ [50px min item 'grid' with: grid-template-columns: minmax(25px, 1fr) auto; and grid-template-rows: minmax(25px, 1fr) auto;]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-intrinsic-size-dynamic-block-size.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-intrinsic-size-dynamic-block-size.html.ini
new file mode 100644
index 00000000000..5eb93e94106
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-intrinsic-size-dynamic-block-size.html.ini
@@ -0,0 +1,2 @@
+[grid-intrinsic-size-dynamic-block-size.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-intrinsic-size-with-orthogonal-items.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-intrinsic-size-with-orthogonal-items.html.ini
new file mode 100644
index 00000000000..a1c9f935857
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-intrinsic-size-with-orthogonal-items.html.ini
@@ -0,0 +1,21 @@
+[grid-intrinsic-size-with-orthogonal-items.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-intrinsic-track-sizes-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-intrinsic-track-sizes-001.html.ini
new file mode 100644
index 00000000000..774b634befc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-intrinsic-track-sizes-001.html.ini
@@ -0,0 +1,93 @@
+[grid-intrinsic-track-sizes-001.html]
+ ['grid' with: grid-template-columns: auto; and grid-template-rows: auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: min-content; and grid-template-rows: min-content;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: max-content; and grid-template-rows: max-content;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(0, auto); and grid-template-rows: minmax(0, auto);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(0, min-content); and grid-template-rows: minmax(0, min-content);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(0, max-content); and grid-template-rows: minmax(0, max-content);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(auto, 10px); and grid-template-rows: minmax(auto, 10px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(min-content, 10px); and grid-template-rows: minmax(min-content, 10px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(max-content, 10px); and grid-template-rows: minmax(max-content, 10px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: auto auto; and grid-template-rows: auto auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: min-content min-content; and grid-template-rows: min-content min-content;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: max-content max-content; and grid-template-rows: max-content max-content;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(0, auto) minmax(0, auto); and grid-template-rows: minmax(0, auto) minmax(0, auto);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(0, min-content) minmax(0, min-content); and grid-template-rows: minmax(0, min-content) minmax(0, min-content);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(0, max-content) minmax(0, max-content); and grid-template-rows: minmax(0, max-content) minmax(0, max-content);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(auto, 4px) minmax(auto, 4px); and grid-template-rows: minmax(auto, 4px) minmax(auto, 4px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(auto, 10px) minmax(auto, 10px); and grid-template-rows: minmax(auto, 10px) minmax(auto, 10px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(min-content, 10px) minmax(min-content, 10px); and grid-template-rows: minmax(min-content, 10px) minmax(min-content, 10px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: minmax(max-content, 10px) minmax(max-content, 10px); and grid-template-rows: minmax(max-content, 10px) minmax(max-content, 10px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 20px auto; and grid-template-rows: 20px auto;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 20px min-content; and grid-template-rows: 20px min-content;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 20px max-content; and grid-template-rows: 20px max-content;]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 20px minmax(0, auto); and grid-template-rows: 20px minmax(0, auto);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 20px minmax(0, min-content); and grid-template-rows: 20px minmax(0, min-content);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 20px minmax(0, max-content); and grid-template-rows: 20px minmax(0, max-content);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 20px minmax(auto, 30px); and grid-template-rows: 20px minmax(auto, 30px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 20px minmax(min-content, 6px); and grid-template-rows: 20px minmax(min-content, 6px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 20px minmax(min-content, 40px); and grid-template-rows: 20px minmax(min-content, 40px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 20px minmax(max-content, 6px); and grid-template-rows: 20px minmax(max-content, 6px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: 20px minmax(max-content, 30px); and grid-template-rows: 20px minmax(max-content, 30px);]
+ expected: FAIL
+
+ ['grid' with: grid-template-columns: max-content min-content; and grid-template-rows: max-content min-content;]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-item-margin-auto-columns-rows-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-item-margin-auto-columns-rows-001.html.ini
new file mode 100644
index 00000000000..c1da7487f09
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-item-margin-auto-columns-rows-001.html.ini
@@ -0,0 +1,12 @@
+[grid-item-margin-auto-columns-rows-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-item-margin-auto-columns-rows-vertical-lr-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-item-margin-auto-columns-rows-vertical-lr-001.html.ini
new file mode 100644
index 00000000000..80311ac8bcb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-item-margin-auto-columns-rows-vertical-lr-001.html.ini
@@ -0,0 +1,12 @@
+[grid-item-margin-auto-columns-rows-vertical-lr-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-item-margin-auto-columns-rows-vertical-rl-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-item-margin-auto-columns-rows-vertical-rl-001.html.ini
new file mode 100644
index 00000000000..f7cf2d3a8d9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-item-margin-auto-columns-rows-vertical-rl-001.html.ini
@@ -0,0 +1,12 @@
+[grid-item-margin-auto-columns-rows-vertical-rl-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-layout-free-space-unit.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-layout-free-space-unit.html.ini
new file mode 100644
index 00000000000..c76787069f7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-layout-free-space-unit.html.ini
@@ -0,0 +1,2 @@
+[grid-layout-free-space-unit.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr.html.ini
new file mode 100644
index 00000000000..750ff0a5217
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr.html.ini
@@ -0,0 +1,18 @@
+[grid-minimum-contribution-baseline-shim-vertical-lr.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl.html.ini
new file mode 100644
index 00000000000..589e172ed59
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl.html.ini
@@ -0,0 +1,18 @@
+[grid-minimum-contribution-baseline-shim-vertical-rl.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim.html.ini
new file mode 100644
index 00000000000..6d4606b6ee9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim.html.ini
@@ -0,0 +1,18 @@
+[grid-minimum-contribution-baseline-shim.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-stretch-respects-min-size-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-stretch-respects-min-size-001.html.ini
new file mode 100644
index 00000000000..aa55293cecf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-stretch-respects-min-size-001.html.ini
@@ -0,0 +1,2 @@
+[grid-stretch-respects-min-size-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-template-flexible-rerun-track-sizing.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-template-flexible-rerun-track-sizing.html.ini
new file mode 100644
index 00000000000..f19d99ad3b3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/layout-algorithm/grid-template-flexible-rerun-track-sizing.html.ini
@@ -0,0 +1,2 @@
+[grid-template-flexible-rerun-track-sizing.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/baseline/masonry-grid-item-content-baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/baseline/masonry-grid-item-content-baseline-001.html.ini
new file mode 100644
index 00000000000..7078073a7df
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/baseline/masonry-grid-item-content-baseline-001.html.ini
@@ -0,0 +1,2 @@
+[masonry-grid-item-content-baseline-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/fragmentation/masonry-fragmentation-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/fragmentation/masonry-fragmentation-001.html.ini
new file mode 100644
index 00000000000..9e49213d4bc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/fragmentation/masonry-fragmentation-001.html.ini
@@ -0,0 +1,2 @@
+[masonry-fragmentation-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/fragmentation/masonry-fragmentation-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/fragmentation/masonry-fragmentation-002.html.ini
new file mode 100644
index 00000000000..7747720553d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/fragmentation/masonry-fragmentation-002.html.ini
@@ -0,0 +1,2 @@
+[masonry-fragmentation-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/grid-placement/masonry-grid-placement-named-lines-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/grid-placement/masonry-grid-placement-named-lines-001.html.ini
new file mode 100644
index 00000000000..6ebf12a9d25
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/grid-placement/masonry-grid-placement-named-lines-001.html.ini
@@ -0,0 +1,2 @@
+[masonry-grid-placement-named-lines-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/grid-placement/masonry-grid-placement-named-lines-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/grid-placement/masonry-grid-placement-named-lines-002.html.ini
new file mode 100644
index 00000000000..3883a104e47
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/grid-placement/masonry-grid-placement-named-lines-002.html.ini
@@ -0,0 +1,2 @@
+[masonry-grid-placement-named-lines-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-001.html.ini
new file mode 100644
index 00000000000..012289f6a7e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-001.html.ini
@@ -0,0 +1,2 @@
+[masonry-intrinsic-sizing-cols-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-002.html.ini
new file mode 100644
index 00000000000..940420a5436
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-002.html.ini
@@ -0,0 +1,2 @@
+[masonry-intrinsic-sizing-cols-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-003.html.ini
new file mode 100644
index 00000000000..ac7d8f7f360
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-003.html.ini
@@ -0,0 +1,2 @@
+[masonry-intrinsic-sizing-cols-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-004.html.ini
new file mode 100644
index 00000000000..708663e0a3a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-004.html.ini
@@ -0,0 +1,2 @@
+[masonry-intrinsic-sizing-cols-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-005.html.ini
new file mode 100644
index 00000000000..781501edeb9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-005.html.ini
@@ -0,0 +1,2 @@
+[masonry-intrinsic-sizing-cols-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-001.html.ini
new file mode 100644
index 00000000000..c3653e71b26
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-001.html.ini
@@ -0,0 +1,2 @@
+[masonry-intrinsic-sizing-rows-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-002.html.ini
new file mode 100644
index 00000000000..a7fcdc1be58
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-002.html.ini
@@ -0,0 +1,2 @@
+[masonry-intrinsic-sizing-rows-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-003.html.ini
new file mode 100644
index 00000000000..240ecc4895e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-003.html.ini
@@ -0,0 +1,2 @@
+[masonry-intrinsic-sizing-rows-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-004.html.ini
new file mode 100644
index 00000000000..6c1d6c94a10
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-004.html.ini
@@ -0,0 +1,2 @@
+[masonry-intrinsic-sizing-rows-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-001.html.ini
new file mode 100644
index 00000000000..c7b67627fb1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-001.html.ini
@@ -0,0 +1,2 @@
+[masonry-item-placement-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-002.html.ini
new file mode 100644
index 00000000000..cdbc3f3a729
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-002.html.ini
@@ -0,0 +1,2 @@
+[masonry-item-placement-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-004.html.ini
new file mode 100644
index 00000000000..43f04ec6190
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-004.html.ini
@@ -0,0 +1,2 @@
+[masonry-item-placement-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-005.html.ini
new file mode 100644
index 00000000000..b710e020188
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-005.html.ini
@@ -0,0 +1,2 @@
+[masonry-item-placement-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width.html.ini
new file mode 100644
index 00000000000..bdaebf582b2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width.html.ini
@@ -0,0 +1,2 @@
+[masonry-columns-item-containing-block-is-grid-content-width.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/masonry-grid-template-columns-computed-withcontent.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/masonry-grid-template-columns-computed-withcontent.html.ini
new file mode 100644
index 00000000000..9dd30715c6b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/masonry-grid-template-columns-computed-withcontent.html.ini
@@ -0,0 +1,84 @@
+[masonry-grid-template-columns-computed-withcontent.html]
+ [Property grid-template-rows value 'masonry']
+ expected: FAIL
+
+ [Property grid-template-columns value 'none']
+ expected: FAIL
+
+ [Property grid-template-columns value '20%']
+ expected: FAIL
+
+ [Property grid-template-columns value 'calc(-0.5em + 10px)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'calc(0.5em + 10px)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'calc(30% + 40px)']
+ expected: FAIL
+
+ [Property grid-template-columns value '5fr']
+ expected: FAIL
+
+ [Property grid-template-columns value 'min-content']
+ expected: FAIL
+
+ [Property grid-template-columns value 'max-content']
+ expected: FAIL
+
+ [Property grid-template-columns value 'auto']
+ expected: FAIL
+
+ [Property grid-template-columns value 'minmax(10px, auto)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'minmax(20%, max-content)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'minmax(min-content, calc(-0.5em + 10px))']
+ expected: FAIL
+
+ [Property grid-template-columns value 'minmax(auto, 0)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'fit-content(70px)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'fit-content(20%)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'fit-content(calc(-0.5em + 10px))']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(1, 10px)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(1, [one two\] 20%)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(2, minmax(10px, auto))']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(2, fit-content(20%) [three four\] 30px 40px [five six\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'min-content repeat(5, minmax(10px, auto))']
+ expected: FAIL
+
+ [Property grid-template-columns value '[\] 150px [\] 1fr [\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(auto-fill, 200px)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(auto-fit, [one\] 20%)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(auto-fill, minmax(100px, 5fr) [two\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(auto-fit, [three\] minmax(max-content, 6em) [four\])']
+ expected: FAIL
+
+ [Property grid-template-columns value '[one\] repeat(2, minmax(50px, auto)) [two\] 30px [three\] repeat(auto-fill, 10px) 40px [four five\] repeat(2, minmax(200px, auto)) [six\]']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/order/masonry-order-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/order/masonry-order-001.html.ini
new file mode 100644
index 00000000000..3346f33548e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/order/masonry-order-001.html.ini
@@ -0,0 +1,2 @@
+[masonry-order-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/order/masonry-order-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/order/masonry-order-002.html.ini
new file mode 100644
index 00000000000..93e7786887e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/order/masonry-order-002.html.ini
@@ -0,0 +1,2 @@
+[masonry-order-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/parsing/masonry-parsing.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/parsing/masonry-parsing.html.ini
new file mode 100644
index 00000000000..752ff7a66da
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/parsing/masonry-parsing.html.ini
@@ -0,0 +1,120 @@
+[masonry-parsing.html]
+ [e.style['grid-template-columns'\] = "masonry" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "masonry" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "masonry / masonry" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "masonry / masonry" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "masonry / masonry" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "masonry / masonry" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "masonry / subgrid [foo\]" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "masonry / subgrid [foo\]" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "masonry / subgrid [foo\]" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "masonry / subgrid [foo\]" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "10px / masonry" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "10px / masonry" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "10px / masonry" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "10px / masonry" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid'\] = "masonry / masonry" should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "masonry / masonry" should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style['grid'\] = "masonry / masonry" should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "masonry / masonry" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid'\] = "masonry / masonry" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "masonry / masonry" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "masonry / masonry" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid'\] = "masonry / subgrid [foo\]" should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "masonry / subgrid [foo\]" should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style['grid'\] = "masonry / subgrid [foo\]" should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "masonry / subgrid [foo\]" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid'\] = "masonry / subgrid [foo\]" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "masonry / subgrid [foo\]" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "masonry / subgrid [foo\]" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / masonry" should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / masonry" should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / masonry" should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / masonry" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / masonry" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / masonry" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / masonry" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['masonry-auto-flow'\] = "pack" should set the property value]
+ expected: FAIL
+
+ [e.style['masonry-auto-flow'\] = "pack ordered" should set the property value]
+ expected: FAIL
+
+ [e.style['masonry-auto-flow'\] = "ordered next" should set the property value]
+ expected: FAIL
+
+ [e.style['masonry-auto-flow'\] = "next definite-first" should set the property value]
+ expected: FAIL
+
+ [e.style['masonry-auto-flow'\] = "definite-first pack" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/subgrid/masonry-subgrid-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/subgrid/masonry-subgrid-001.html.ini
new file mode 100644
index 00000000000..48a9453dca7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/masonry/tentative/subgrid/masonry-subgrid-001.html.ini
@@ -0,0 +1,2 @@
+[masonry-subgrid-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-area-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-area-computed.html.ini
new file mode 100644
index 00000000000..f557f4ab1fd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-area-computed.html.ini
@@ -0,0 +1,90 @@
+[grid-area-computed.html]
+ [Property grid-area value 'auto / auto / auto / auto']
+ expected: FAIL
+
+ [Property grid-row value 'auto / auto']
+ expected: FAIL
+
+ [Property grid-column-end value 'auto']
+ expected: FAIL
+
+ [Property grid-row value '-zπ']
+ expected: FAIL
+
+ [Property grid-row-start value 'AZ']
+ expected: FAIL
+
+ [Property grid-column-start value '-_π']
+ expected: FAIL
+
+ [Property grid-row-end value '_9']
+ expected: FAIL
+
+ [Property grid-area value '1 / 90 -a- / auto / auto']
+ expected: FAIL
+
+ [Property grid-row value '2 az / auto']
+ expected: FAIL
+
+ [Property grid-column value '9 / -19 zA']
+ expected: FAIL
+
+ [Property grid-row-start value '-19']
+ expected: FAIL
+
+ [Property grid-row-start value '9 -Z_']
+ expected: FAIL
+
+ [Property grid-column-start value '-44 Z']
+ expected: FAIL
+
+ [Property grid-row-end value '1 -πA']
+ expected: FAIL
+
+ [Property grid-column-end value '5 π_']
+ expected: FAIL
+
+ [Property grid-area value 'span 2 i / auto / auto / auto']
+ expected: FAIL
+
+ [Property grid-row value 'span 2 / auto']
+ expected: FAIL
+
+ [Property grid-column-start value 'span 1 i']
+ expected: FAIL
+
+ [Property grid-row-start value 'span 1']
+ expected: FAIL
+
+ [Property grid-row-end value 'span 2 i']
+ expected: FAIL
+
+ [Property grid-column-end value 'span 2']
+ expected: FAIL
+
+ [Property grid-row-start value 'span i']
+ expected: FAIL
+
+ [Property grid-row value 'span i / auto']
+ expected: FAIL
+
+ [Property grid-area value 'auto / i / auto / i']
+ expected: FAIL
+
+ [Property grid-area value 'auto / i / 2 j']
+ expected: FAIL
+
+ [Property grid-area value 'auto / i / 2 j / span 3 k']
+ expected: FAIL
+
+ [Property grid-row value 'auto / i']
+ expected: FAIL
+
+ [Property grid-column value '2 j / span 3 k']
+ expected: FAIL
+
+ [Property grid-column-end value '\\31st']
+ expected: FAIL
+
+ [Property grid-column-end value '\\31 st']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-area-shorthand.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-area-shorthand.html.ini
new file mode 100644
index 00000000000..806247c3dd6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-area-shorthand.html.ini
@@ -0,0 +1,159 @@
+[grid-area-shorthand.html]
+ [e.style['grid-area'\] = "auto" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "auto" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "auto" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "auto" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "--a" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "--a" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "--a" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "--a" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "--a" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "a / b" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "a / b" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "a / b" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "a / b" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "a / b" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "a / b / c" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "a / b / c" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "a / b / c" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "a / b / c" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "a / b / c" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "a / b / c / d" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "a / b / c / d" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "a / b / c / d" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "a / b / c / d" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "a / b / c / d" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "+90 -a- / 2 i span" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "+90 -a- / 2 i span" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "+90 -a- / 2 i span" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "+90 -a- / 2 i span" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "+90 -a- / 2 i span" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "1 / 2 / 3 / 4" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "1 / 2 / 3 / 4" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "1 / 2 / 3 / 4" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "1 / 2 / 3 / 4" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "1 / 2 / 3 / 4" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "auto" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "auto" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "one / 2" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "one / 2" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "one / 2" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "1 two / four 3" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "1 two / four 3" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "1 two / four 3" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "5 span" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "5 span" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "5 span" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "1 / two" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "1 / two" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "1 / two" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span 1 two / four 3 span" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span 1 two / four 3 span" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span 1 two / four 3 span" should not set unrelated longhands]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-area-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-area-valid.html.ini
new file mode 100644
index 00000000000..303d66a2255
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-area-valid.html.ini
@@ -0,0 +1,171 @@
+[grid-area-valid.html]
+ [e.style['grid-area'\] = "auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "auto / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "auto / auto / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "auto / auto / auto / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "AuTo" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "auto/auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-column-end'\] = "AuTo" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "--a" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "-zπ" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "-zπ/-zπ" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "i / i" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row-start'\] = "AZ" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-column-start'\] = "-_π" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row-end'\] = "_9" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "1" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "+90 -a-" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "az 2" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "9" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "-19 zA" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "-A0 33" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row-start'\] = "-19" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row-start'\] = "9 -Z_" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-column-start'\] = "+90" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-column-start'\] = "Z -44" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row-end'\] = "1 -πA" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-column-end'\] = "π_ +5" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "span 2 i" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "i 2 SpAn" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "span 1 i" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span 2" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "i SpAn" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row-start'\] = "span i" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-column-start'\] = "SpAn i 2" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row-end'\] = "2 i span" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-column-end'\] = "2 SpAn" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "auto / i" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "auto / i / auto / i" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "auto / i / auto / 2 i" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "1 / i / auto / i" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "1 / auto / auto / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "1 / auto / i / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "1 / j / i / k" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "1 / auto / 2 / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "1 / i / 2 / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "i / i / auto / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "i / auto / i / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "auto / i / 2 j" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-area'\] = "auto / i / 2 j / span 3 k" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "auto / i" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "i / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "2 i / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "1 / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "2 j / span 3 k" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-column-end'\] = "\\\\31st" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-column-end'\] = "\\\\31 st" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "\\\\31st / \\\\31 st" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-columns-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-columns-computed.html.ini
new file mode 100644
index 00000000000..a3880631c3c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-columns-computed.html.ini
@@ -0,0 +1,75 @@
+[grid-auto-columns-computed.html]
+ [Property grid-auto-columns value '1px']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'calc(10px + 0.5em)']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'calc(10px - 0.5em)']
+ expected: FAIL
+
+ [Property grid-auto-columns value '4%']
+ expected: FAIL
+
+ [Property grid-auto-columns value '5fr']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'min-content']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'max-content']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'auto']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'minmax(1px, 5fr)']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'minmax(calc(10px + 0.5em), max-content)']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'minmax(calc(10px - 0.5em), max-content)']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'minmax(4%, auto)']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'minmax(min-content, calc(10px + 0.5em))']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'minmax(auto, 4%)']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'fit-content(1px)']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'fit-content(calc(10px + 0.5em))']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'fit-content(calc(10px - 0.5em))']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'fit-content(4%)']
+ expected: FAIL
+
+ [Property grid-auto-columns value '0px']
+ expected: FAIL
+
+ [Property grid-auto-columns value '0%']
+ expected: FAIL
+
+ [Property grid-auto-columns value '0fr']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'minmax(auto, 0%)']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'fit-content(0px)']
+ expected: FAIL
+
+ [Property grid-auto-columns value '1px 2px 3px 0px']
+ expected: FAIL
+
+ [Property grid-auto-columns value 'fit-content(1px) minmax(2px, 3px) 4px']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-columns-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-columns-valid.html.ini
new file mode 100644
index 00000000000..a56b39cea75
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-columns-valid.html.ini
@@ -0,0 +1,90 @@
+[grid-auto-columns-valid.html]
+ [e.style['grid-auto-columns'\] = "1px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "2em" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "calc(2em + 3ex)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "4%" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "5fr" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "min-content" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "max-content" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "auto /**/" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "minmax(1px, 5fr)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "minmax(2em, min-content)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "minmax(calc(2em + 3ex), max-content)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "minmax(4%, auto)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "minmax(5vmin, 1px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "minmax(min-content, 2em)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "minmax(max-content, calc(2em + 3ex))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "minmax(auto, 4%)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "fit-content(1px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "fit-content(2em)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "fit-content(calc(2em + 3ex))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "fit-content(4%)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "0px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "0%" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "0fr" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "minmax(auto, 0%)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "fit-content(0px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "auto auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "auto 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "1px 2px 3px 0px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-columns'\] = "fit-content(1px) minmax(2px, 3px) 4px" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-flow-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-flow-computed.html.ini
new file mode 100644
index 00000000000..0c2224162e7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-flow-computed.html.ini
@@ -0,0 +1,21 @@
+[grid-auto-flow-computed.html]
+ [Property grid-auto-flow value 'row']
+ expected: FAIL
+
+ [Property grid-auto-flow value 'column']
+ expected: FAIL
+
+ [Property grid-auto-flow value 'row dense']
+ expected: FAIL
+
+ [Property grid-auto-flow value 'column dense']
+ expected: FAIL
+
+ [Property grid-auto-flow value 'dense row']
+ expected: FAIL
+
+ [Property grid-auto-flow value 'dense column']
+ expected: FAIL
+
+ [Property grid-auto-flow value 'dense']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-flow-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-flow-valid.html.ini
new file mode 100644
index 00000000000..5285e75dd10
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-flow-valid.html.ini
@@ -0,0 +1,21 @@
+[grid-auto-flow-valid.html]
+ [e.style['grid-auto-flow'\] = "row" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-flow'\] = "column" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-flow'\] = "row dense" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-flow'\] = "dense row" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-flow'\] = "dense" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-flow'\] = "column dense" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-flow'\] = "dense column" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-rows-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-rows-computed.html.ini
new file mode 100644
index 00000000000..99fe2bc9857
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-rows-computed.html.ini
@@ -0,0 +1,75 @@
+[grid-auto-rows-computed.html]
+ [Property grid-auto-rows value '1px']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'calc(10px + 0.5em)']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'calc(10px - 0.5em)']
+ expected: FAIL
+
+ [Property grid-auto-rows value '4%']
+ expected: FAIL
+
+ [Property grid-auto-rows value '5fr']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'min-content']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'max-content']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'auto']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'minmax(1px, 5fr)']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'minmax(calc(10px + 0.5em), max-content)']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'minmax(calc(10px - 0.5em), max-content)']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'minmax(4%, auto)']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'minmax(min-content, calc(10px + 0.5em))']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'minmax(auto, 4%)']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'fit-content(1px)']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'fit-content(calc(10px + 0.5em))']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'fit-content(calc(10px - 0.5em))']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'fit-content(4%)']
+ expected: FAIL
+
+ [Property grid-auto-rows value '0px']
+ expected: FAIL
+
+ [Property grid-auto-rows value '0%']
+ expected: FAIL
+
+ [Property grid-auto-rows value '0fr']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'minmax(auto, 0%)']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'fit-content(0px)']
+ expected: FAIL
+
+ [Property grid-auto-rows value '1px 2px 3px 0px']
+ expected: FAIL
+
+ [Property grid-auto-rows value 'fit-content(1px) minmax(2px, 3px) 4px']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-rows-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-rows-valid.html.ini
new file mode 100644
index 00000000000..22206611d37
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-auto-rows-valid.html.ini
@@ -0,0 +1,90 @@
+[grid-auto-rows-valid.html]
+ [e.style['grid-auto-rows'\] = "1px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "2em" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "calc(2em + 3ex)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "4%" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "5fr" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "min-content" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "max-content" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "auto /**/" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "minmax(1px, 5fr)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "minmax(2em, min-content)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "minmax(calc(2em + 3ex), max-content)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "minmax(4%, auto)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "minmax(5vmin, 1px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "minmax(min-content, 2em)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "minmax(max-content, calc(2em + 3ex))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "minmax(auto, 4%)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "fit-content(1px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "fit-content(2em)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "fit-content(calc(2em + 3ex))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "fit-content(4%)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "0px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "0%" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "0fr" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "minmax(auto, 0%)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "fit-content(0px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "auto auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "auto 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "1px 2px 3px 0px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-auto-rows'\] = "fit-content(1px) minmax(2px, 3px) 4px" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-column-shortest-serialization.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-column-shortest-serialization.html.ini
new file mode 100644
index 00000000000..5213cc08bb9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-column-shortest-serialization.html.ini
@@ -0,0 +1,48 @@
+[grid-column-shortest-serialization.html]
+ [Property grid-column value 'auto / auto']
+ expected: FAIL
+
+ [Property grid-column value 'auto']
+ expected: FAIL
+
+ [Property grid-column value '10 / auto']
+ expected: FAIL
+
+ [Property grid-column value '10']
+ expected: FAIL
+
+ [Property grid-column value '-10 / auto']
+ expected: FAIL
+
+ [Property grid-column value '-10']
+ expected: FAIL
+
+ [Property grid-column value 'first / first']
+ expected: FAIL
+
+ [Property grid-column value 'first']
+ expected: FAIL
+
+ [Property grid-column value 'span 2 / auto']
+ expected: FAIL
+
+ [Property grid-column value 'span 2']
+ expected: FAIL
+
+ [Property grid-column value '2 first / auto']
+ expected: FAIL
+
+ [Property grid-column value '2 first']
+ expected: FAIL
+
+ [Property grid-column value 'span first / auto']
+ expected: FAIL
+
+ [Property grid-column value 'span first']
+ expected: FAIL
+
+ [Property grid-column value 'span 2 first / auto']
+ expected: FAIL
+
+ [Property grid-column value 'span 2 first']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-column-shorthand.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-column-shorthand.html.ini
new file mode 100644
index 00000000000..5d32982a494
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-column-shorthand.html.ini
@@ -0,0 +1,144 @@
+[grid-column-shorthand.html]
+ [e.style['grid-column'\] = "auto / auto" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "auto / auto" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "auto / auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "auto" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "auto" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "10 / auto" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "10 / auto" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "10 / auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "10" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "10" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "10" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "-10 / auto" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "-10 / auto" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "-10 / auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "-10" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "-10" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "-10" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span 2 / auto" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span 2 / auto" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span 2 / auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span 2" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span 2" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span 2" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "3 last / auto" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "3 last / auto" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "3 last / auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "3 last" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "3 last" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "3 last" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span first / auto" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span first / auto" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span first / auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span first" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span first" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span first" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span 2 first / auto" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span 2 first / auto" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span 2 first / auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span 2 first" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span 2 first" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "span 2 first" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "last / last" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "last / last" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "last / last" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "last" should set grid-column-end]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "last" should set grid-column-start]
+ expected: FAIL
+
+ [e.style['grid-column'\] = "last" should not set unrelated longhands]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-columns-rows-get-set-multiple.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-columns-rows-get-set-multiple.html.ini
new file mode 100644
index 00000000000..11fe6f35133
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-columns-rows-get-set-multiple.html.ini
@@ -0,0 +1,120 @@
+[grid-columns-rows-get-set-multiple.html]
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithFixedElement' : grid-template-columns = '7px 11px', grid-template-rows = '17px 2px']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithPercentElement' : grid-template-columns = '400px 800px', grid-template-rows = '150px 450px']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithPercentWithoutSize' : grid-template-columns = '3.5px 7px', grid-template-rows = '4px 12px']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithAutoElement' : grid-template-columns = '0px 17px', grid-template-rows = '0px 3px']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithEMElement' : grid-template-columns = '100px 120px', grid-template-rows = '150px 170px']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithThreeItems' : grid-template-columns = '15px 0px 100px', grid-template-rows = '120px 18px 0px']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithFitContentAndFitAvailable' : grid-template-columns = 'none', grid-template-rows = 'none']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithMinMaxContent' : grid-template-columns = '0px 0px', grid-template-rows = '0px 0px']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithMinMaxContentWithChildrenElement' : grid-template-columns = '7px 17px', grid-template-rows = '16px 3px']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithMinMaxAndFixed' : grid-template-columns = '240px 15px', grid-template-rows = '120px 210px']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithMinMaxAndMinMaxContent' : grid-template-columns = '240px 15px', grid-template-rows = '120px 210px']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithFractionFraction' : grid-template-columns = '320px 480px', grid-template-rows = '225px 375px']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithFractionMinMax' : grid-template-columns = '45px 755px', grid-template-rows = '586px 14px']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithCalcCalc' : grid-template-columns = '200px 100px', grid-template-rows = '150px 75px']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithCalcAndFixed' : grid-template-columns = '400px 80px', grid-template-rows = '88px 150px']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithCalcAndMinMax' : grid-template-columns = '190px 80px', grid-template-rows = '150px 53px']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithCalcInsideMinMax' : grid-template-columns = '400px 120px', grid-template-rows = '150px 175px']
+ expected: FAIL
+
+ [Test getting grid-template-columns and grid-template-rows set through CSS for element 'gridWithAutoInsideMinMax' : grid-template-columns = '0px 30px', grid-template-rows = '132px 60px']
+ expected: FAIL
+
+ [Test getting and setting grid-template-rows and grid-template-columns through JS: grid-template-columns = '18px 22px', element.style.gridTemplateColumns = '18px 22px', grid-template-rows = '66px 70px', element.style.gridTemplateRows = '66px 70px']
+ expected: FAIL
+
+ [Test getting and setting grid-template-rows and grid-template-columns through JS: grid-template-columns = '440px 640px', element.style.gridTemplateColumns = '55% 80%', grid-template-rows = '240px 378px', element.style.gridTemplateRows = '40% 63%']
+ expected: FAIL
+
+ [Test getting and setting grid-template-rows and grid-template-columns through JS: grid-template-columns = '0px 0px', element.style.gridTemplateColumns = 'auto auto', grid-template-rows = '0px 0px', element.style.gridTemplateRows = 'auto auto']
+ expected: FAIL
+
+ [Test getting and setting grid-template-rows and grid-template-columns through JS: grid-template-columns = '0px 160px 22px', element.style.gridTemplateColumns = 'auto 16em 22px', grid-template-rows = '336px 100px 0px', element.style.gridTemplateRows = '56% 10em auto']
+ expected: FAIL
+
+ [Test getting and setting grid-template-rows and grid-template-columns through JS: grid-template-columns = '160px 20px', element.style.gridTemplateColumns = '16em minmax(16px, 20px)', grid-template-rows = '90px 0px', element.style.gridTemplateRows = 'minmax(10%, 15%) auto']
+ expected: FAIL
+
+ [Test getting and setting grid-template-rows and grid-template-columns through JS: grid-template-columns = '160px 640px', element.style.gridTemplateColumns = '16em 2fr', grid-template-rows = '600px 0px', element.style.gridTemplateRows = '14fr auto']
+ expected: FAIL
+
+ [Test getting and setting grid-template-rows and grid-template-columns through JS: grid-template-columns = '25px 20px', element.style.gridTemplateColumns = 'calc(25px) calc(2em)', grid-template-rows = '0px 60px', element.style.gridTemplateRows = 'auto calc(10%)']
+ expected: FAIL
+
+ [Test getting and setting grid-template-rows and grid-template-columns through JS: grid-template-columns = '345px 92px', element.style.gridTemplateColumns = 'calc(25px + 40%) minmax(min-content, calc(10% + 12px))', grid-template-rows = '100px 0px', element.style.gridTemplateRows = 'minmax(calc(75% - 350px), max-content) auto']
+ expected: FAIL
+
+ [Test setting wrong/invalid values through CSS]
+ expected: FAIL
+
+ [Test setting bad JS values: grid-template-columns = 'none auto', grid-template-rows = 'none auto']
+ expected: FAIL
+
+ [Test setting bad JS values: grid-template-columns = 'none 16em', grid-template-rows = 'none 56%']
+ expected: FAIL
+
+ [Test setting bad JS values: grid-template-columns = 'none none', grid-template-rows = 'none none']
+ expected: FAIL
+
+ [Test setting bad JS values: grid-template-columns = 'auto none', grid-template-rows = 'auto none']
+ expected: FAIL
+
+ [Test setting bad JS values: grid-template-columns = 'auto none 16em', grid-template-rows = 'auto 18em none']
+ expected: FAIL
+
+ [Test setting bad JS values: grid-template-columns = '-webkit-fit-content -webkit-fit-content', grid-template-rows = '-webkit-fit-available -webkit-fit-available']
+ expected: FAIL
+
+ [Test setting bad JS values: grid-template-columns = '-10px minmax(16px, 32px)', grid-template-rows = 'minmax(10%, 15%) -10vw']
+ expected: FAIL
+
+ [Test setting bad JS values: grid-template-columns = '10px minmax(16px, -1vw)', grid-template-rows = 'minmax(-1%, 15%) 10vw']
+ expected: FAIL
+
+ [Test setting bad JS values: grid-template-columns = '10px calc(16px 30px)', grid-template-rows = 'calc(25px + auto) 2em']
+ expected: FAIL
+
+ [Test setting bad JS values: grid-template-columns = 'minmax(min-content, calc() 250px', grid-template-rows = 'calc(2em(']
+ expected: FAIL
+
+ [Test setting grid-template-columns and grid-template-rows to 'inherit' through JS]
+ expected: FAIL
+
+ [Test the default value]
+ expected: FAIL
+
+ [Test setting grid-template-columns and grid-template-rows to 'initial' through JS]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-content-sized-columns-resolution.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-content-sized-columns-resolution.html.ini
new file mode 100644
index 00000000000..75a20a0c74d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-content-sized-columns-resolution.html.ini
@@ -0,0 +1,126 @@
+[grid-content-sized-columns-resolution.html]
+ [Element 'gridMinContentFixedAndAuto' grid-template-columns value computes to '15px 75px']
+ expected: FAIL
+
+ [Element 'gridAutoAndAuto' grid-template-columns value computes to '45px 45px']
+ expected: FAIL
+
+ [Element 'gridMinContentAndMinContentFixed' grid-template-columns value computes to '20px 30px']
+ expected: FAIL
+
+ [Element 'gridMaxContentAndMinContent' grid-template-columns value computes to '70px 20px']
+ expected: FAIL
+
+ [Element 'gridFixedMinContentAndMaxContent' grid-template-columns value computes to '10px 80px']
+ expected: FAIL
+
+ [Element 'gridFixedMaxContentAndMinContent' grid-template-columns value computes to '60px 30px']
+ expected: FAIL
+
+ [Element 'gridMinContentAndMaxContentFixed' grid-template-columns value computes to '20px 70px']
+ expected: FAIL
+
+ [Element 'gridMaxContentFixedAndAuto' grid-template-columns value computes to '65px 25px']
+ expected: FAIL
+
+ [Element 'gridAutoMinContent' grid-template-columns value computes to '70px 20px']
+ expected: FAIL
+
+ [Element 'gridAutoMaxContent' grid-template-columns value computes to '20px 70px']
+ expected: FAIL
+
+ [Element 'gridMaxContentAndMinContentFixed' grid-template-columns value computes to '70px 20px']
+ expected: FAIL
+
+ [Element 'gridMaxContentAndMaxContentFixed' grid-template-columns value computes to '55px 35px']
+ expected: FAIL
+
+ [Element 'gridMinContentFixedAndAutoUnsortedConstrained' grid-template-columns value computes to '0px 40px']
+ expected: FAIL
+
+ [Element 'gridAutoAndAutoUnsortedConstrained' grid-template-columns value computes to '10px 30px']
+ expected: FAIL
+
+ [Element 'gridMinContentAndMinContentFixedUnsortedConstrained' grid-template-columns value computes to '0px 40px']
+ expected: FAIL
+
+ [Element 'gridMaxContentAndMinContentUnsortedConstrained' grid-template-columns value computes to '0px 70px']
+ expected: FAIL
+
+ [Element 'gridFixedMinContentAndMaxContentUnsortedConstrained' grid-template-columns value computes to '10px 70px']
+ expected: FAIL
+
+ [Element 'gridFixedMaxContentAndMinContentUnsortedConstrained' grid-template-columns value computes to '10px 40px']
+ expected: FAIL
+
+ [Element 'gridMinContentAndMaxContentFixedUnsortedConstrained' grid-template-columns value computes to '0px 90px']
+ expected: FAIL
+
+ [Element 'gridMaxContentFixedAndAutoUnsortedConstrained' grid-template-columns value computes to '10px 40px']
+ expected: FAIL
+
+ [Element 'gridAutoMinContentUnsortedConstrained' grid-template-columns value computes to '0px 60px']
+ expected: FAIL
+
+ [Element 'gridAutoMaxContentUnsortedConstrained' grid-template-columns value computes to '0px 90px']
+ expected: FAIL
+
+ [Element 'gridMaxContentAndMinContentFixedUnsortedConstrained' grid-template-columns value computes to '50px 40px']
+ expected: FAIL
+
+ [Element 'gridMaxContentAndMaxContentFixedUnsortedConstrained' grid-template-columns value computes to '40px 70px']
+ expected: FAIL
+
+ [Element 'gridMinContentFixedAndAutoUnsorted' grid-template-columns value computes to '15px 90px']
+ expected: FAIL
+
+ [Element 'gridAutoAndAutoUnsorted' grid-template-columns value computes to '60px 30px']
+ expected: FAIL
+
+ [Element 'gridMinContentAndMinContentFixedUnsorted' grid-template-columns value computes to '0px 40px']
+ expected: FAIL
+
+ [Element 'gridMaxContentAndMinContentUnsorted' grid-template-columns value computes to '0px 70px']
+ expected: FAIL
+
+ [Element 'gridFixedMinContentAndMaxContentUnsorted' grid-template-columns value computes to '10px 70px']
+ expected: FAIL
+
+ [Element 'gridFixedMaxContentAndMinContentUnsorted' grid-template-columns value computes to '50px 40px']
+ expected: FAIL
+
+ [Element 'gridMinContentAndMaxContentFixedUnsorted' grid-template-columns value computes to '0px 90px']
+ expected: FAIL
+
+ [Element 'gridMaxContentFixedAndAutoUnsorted' grid-template-columns value computes to '15px 70px']
+ expected: FAIL
+
+ [Element 'gridAutoMinContentUnsorted' grid-template-columns value computes to '50px 60px']
+ expected: FAIL
+
+ [Element 'gridAutoMaxContentUnsorted' grid-template-columns value computes to '0px 90px']
+ expected: FAIL
+
+ [Element 'gridMaxContentAndMinContentFixedUnsorted' grid-template-columns value computes to '50px 40px']
+ expected: FAIL
+
+ [Element 'gridMaxContentAndMaxContentFixedUnsorted' grid-template-columns value computes to '40px 70px']
+ expected: FAIL
+
+ [Element 'gridMinContentFixedAndAutoAboveLimits' grid-template-columns value computes to '15px 95px']
+ expected: FAIL
+
+ [Element 'gridMaxContentFixedAndAutoAboveLimits' grid-template-columns value computes to '15px 135px']
+ expected: FAIL
+
+ [Element 'gridMinContentFixedAndFixedFixedAndAuto' grid-template-columns value computes to '20px 20px 60px']
+ expected: FAIL
+
+ [Element 'gridAutoAndFixedFixedAndMaxContentFixed' grid-template-columns value computes to '110px 20px 20px']
+ expected: FAIL
+
+ [Element 'gridMaxContentAndMaxContentFixedAndMaxContent' grid-template-columns value computes to '70px 20px 50px']
+ expected: FAIL
+
+ [Element 'gridAutoAndMinContentFixedAndMinContent' grid-template-columns value computes to '55px 30px 65px']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-row-shortest-serialization.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-row-shortest-serialization.html.ini
new file mode 100644
index 00000000000..51367366f6b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-row-shortest-serialization.html.ini
@@ -0,0 +1,45 @@
+[grid-row-shortest-serialization.html]
+ [Property grid-row value 'auto / auto']
+ expected: FAIL
+
+ [Property grid-row value 'auto']
+ expected: FAIL
+
+ [Property grid-row value '10 / auto']
+ expected: FAIL
+
+ [Property grid-row value '10']
+ expected: FAIL
+
+ [Property grid-row value '-10 / auto']
+ expected: FAIL
+
+ [Property grid-row value '-10']
+ expected: FAIL
+
+ [Property grid-row value 'span 2 / auto']
+ expected: FAIL
+
+ [Property grid-row value 'span 2']
+ expected: FAIL
+
+ [Property grid-row value '3 last / auto']
+ expected: FAIL
+
+ [Property grid-row value '3 last']
+ expected: FAIL
+
+ [Property grid-row value 'span first / auto']
+ expected: FAIL
+
+ [Property grid-row value 'span first']
+ expected: FAIL
+
+ [Property grid-row value 'span 2 first / auto']
+ expected: FAIL
+
+ [Property grid-row value 'span 2 first']
+ expected: FAIL
+
+ [Property grid-row value 'last / last']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-row-shorthand.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-row-shorthand.html.ini
new file mode 100644
index 00000000000..cf104a8bac2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-row-shorthand.html.ini
@@ -0,0 +1,144 @@
+[grid-row-shorthand.html]
+ [e.style['grid-row'\] = "auto / auto" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "auto / auto" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "auto / auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "auto" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "auto" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "10 / auto" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "10 / auto" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "10 / auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "10" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "10" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "10" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "-10 / auto" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "-10 / auto" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "-10 / auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "-10" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "-10" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "-10" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span 2 / auto" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span 2 / auto" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span 2 / auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span 2" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span 2" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span 2" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "3 last / auto" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "3 last / auto" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "3 last / auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "3 last" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "3 last" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "3 last" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span first / auto" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span first / auto" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span first / auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span first" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span first" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span first" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span 2 first / auto" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span 2 first / auto" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span 2 first / auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span 2 first" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span 2 first" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "span 2 first" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "last / last" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "last / last" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "last / last" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "last" should set grid-row-end]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "last" should set grid-row-start]
+ expected: FAIL
+
+ [e.style['grid-row'\] = "last" should not set unrelated longhands]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-shorthand-serialization.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-shorthand-serialization.html.ini
new file mode 100644
index 00000000000..ba00bc04b8d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-shorthand-serialization.html.ini
@@ -0,0 +1,363 @@
+[grid-shorthand-serialization.html]
+ [e.style.cssText = grid: auto-flow auto / 100px 100px should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow auto / 100px 100px should set grid-template-areas]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow auto / 100px 100px; grid-template-areas: "one two" "three four" should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow auto / 100px 100px; grid-template-areas: "one two" "three four" should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow auto / 100px 100px; grid-template-areas: "one two" "three four" should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow auto / 100px 100px; grid-template-areas: "one two" "three four" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style.cssText = grid: 30px 40px / 50px 60px; grid-auto-flow: column should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: 30px 40px / 50px 60px; grid-auto-flow: column should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style.cssText = grid: 30px 40px / 50px 60px; grid-auto-flow: column should set grid-template]
+ expected: FAIL
+
+ [cssText ('grid: 30px 40px / 50px 60px; grid-auto-flow: column') must contain 'grid-template: 30px 40px / 50px 60px;' in its serialization]
+ expected: FAIL
+
+ [cssText ('grid: 30px 40px / 50px 60px; grid-auto-flow: column') must contain 'grid-auto-rows: auto;' in its serialization]
+ expected: FAIL
+
+ [cssText ('grid: 30px 40px / 50px 60px; grid-auto-flow: column') must contain 'grid-auto-columns: auto;' in its serialization]
+ expected: FAIL
+
+ [cssText ('grid: 30px 40px / 50px 60px; grid-auto-flow: column') must contain 'grid-auto-flow: column;' in its serialization]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-rows: 20px should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-rows: 20px should set grid-template]
+ expected: FAIL
+
+ [cssText ('grid: auto-flow / 10px; grid-template-rows: 20px') must contain 'grid: 20px / 10px;' in its serialization]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-rows: repeat(2, 20px) should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-rows: repeat(2, 20px) should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-rows: repeat(2, 20px) repeat(3, 30px) should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-rows: repeat(2, 20px) repeat(3, 30px) should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-rows: repeat(auto-fill, 20px) should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-rows: repeat(auto-fill, 20px) should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-rows: repeat(auto-fit, 20px) should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-rows: repeat(auto-fit, 20px) should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: 10px / auto; grid-template-columns: 20px should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: 10px / auto; grid-template-columns: 20px should set grid-template]
+ expected: FAIL
+
+ [cssText ('grid: 10px / auto; grid-template-columns: 20px') must contain 'grid: 10px / 20px;' in its serialization]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-columns: repeat(2, 20px) should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-columns: repeat(2, 20px) should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-columns: repeat(2, 20px) repeat(3, 30px) should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-columns: repeat(2, 20px) repeat(3, 30px) should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-columns: repeat(auto-fill, 20px) should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-columns: repeat(auto-fill, 20px) should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-columns: repeat(auto-fit, 20px) should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow / 10px; grid-template-columns: repeat(auto-fit, 20px) should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / 2px; grid-auto-flow: inherit should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: 1px / 2px; grid-auto-flow: row should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / 2px; grid-auto-flow: row should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: 1px / 2px; grid-auto-columns: auto should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: 1px / 2px; grid-auto-rows: auto should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: 1px / auto-flow 2px; grid-auto-rows: auto should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: 1px / auto-flow; grid-auto-columns: auto should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / 2px; grid-auto-columns: auto should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-auto-columns: auto should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow dense / 2px; grid-auto-rows: auto should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / 2px; grid-auto-columns: 3px should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / 2px; grid-auto-columns: 3px should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / 2px; grid-auto-columns: 3px should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / 2px; grid-auto-columns: 3px should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / 2px; grid-auto-columns: 3px should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / 2px; grid-auto-columns: 3px should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: 1px / auto-flow 2px; grid-auto-rows: 3px should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: 1px / auto-flow 2px; grid-auto-rows: 3px should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: 1px / auto-flow 2px; grid-auto-rows: 3px should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style.cssText = grid: 1px / auto-flow 2px; grid-auto-rows: 3px should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: 1px / auto-flow 2px; grid-auto-rows: 3px should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: 1px / auto-flow 2px; grid-auto-rows: 3px should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: 3px should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: 3px should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: 3px should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: 3px should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: 3px should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: 3px should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(2, 3px) should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(2, 3px) should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(2, 3px) should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(2, 3px) should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(2, 3px) should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(2, 3px) should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(auto-fill, 3px) should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(auto-fill, 3px) should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(auto-fill, 3px) should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(auto-fill, 3px) should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(auto-fill, 3px) should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(auto-fill, 3px) should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(auto-fit, 3px) should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(auto-fit, 3px) should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(auto-fit, 3px) should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(auto-fit, 3px) should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(auto-fit, 3px) should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: none / auto-flow 1px; grid-template-columns: repeat(auto-fit, 3px) should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: 3px should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: 3px should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: 3px should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: 3px should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: 3px should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: 3px should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(2, 3px) should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(2, 3px) should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(2, 3px) should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(2, 3px) should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(2, 3px) should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(2, 3px) should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(auto-fill, 3px) should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(auto-fill, 3px) should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(auto-fill, 3px) should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(auto-fill, 3px) should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(auto-fill, 3px) should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(auto-fill, 3px) should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(auto-fit, 3px) should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(auto-fit, 3px) should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(auto-fit, 3px) should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(auto-fit, 3px) should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(auto-fit, 3px) should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid: auto-flow 1px / none; grid-template-rows: repeat(auto-fit, 3px) should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(2, 3px); grid-template-areas: "one two" "three four" should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(2, 3px); grid-template-areas: "one two" "three four" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(2, 3px); grid-template-areas: "one two" "three four" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(2, 3px); grid-template-areas: "one two" "three four" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(2, 1fr); grid-template-areas: "one two" "three four" should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(2, 1fr); grid-template-areas: "one two" "three four" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(2, 1fr); grid-template-areas: "one two" "three four" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(2, 1fr); grid-template-areas: "one two" "three four" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(auto-fill, 3px); grid-template-areas: "one two" "three four" should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(auto-fill, 3px); grid-template-areas: "one two" "three four" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(auto-fill, 3px); grid-template-areas: "one two" "three four" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(auto-fill, 3px); grid-template-areas: "one two" "three four" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(auto-fit, 3px); grid-template-areas: "one two" "three four" should set grid]
+ expected: FAIL
+
+ [e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(auto-fit, 3px); grid-template-areas: "one two" "three four" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(auto-fit, 3px); grid-template-areas: "one two" "three four" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style.cssText = grid-template-rows: auto auto; grid-template-columns: repeat(auto-fit, 3px); grid-template-areas: "one two" "three four" should set grid-template-rows]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-shorthand-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-shorthand-valid.html.ini
new file mode 100644
index 00000000000..ebfd9f31f66
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-shorthand-valid.html.ini
@@ -0,0 +1,147 @@
+[grid-shorthand-valid.html]
+ [e.style['grid'\] = "none" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "none / none" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "auto / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "none / [a\] 0px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "none / [\] 0px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "[a\] 10px / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "[a\] 10px / none" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "[\] 10px [\] / [\] auto [\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "[a\] \\"a\\" 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "[a\] \\"a\\" 10px [\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "[\] \\"a\\" 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "[a\] \\"a\\" 10px [a\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a a a\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" / 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" / 20%" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" / 5fr" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "[a\] \\"a\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "[a\] \\"a\\" [a\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "[\] \\"a\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" [\] [\] \\"b\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" [\] \\"b\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" [a\] [b\] \\"b\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" [a\] \\"b\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" / 0" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" 10px / 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" [a\] \\"b\\" 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" [a\] \\"b\\" 10px [a\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" [a\] [a\] \\"b\\" 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" [a\] [\] \\"b\\" 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" 10px [a\] \\"b\\" [a\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" [a\] \\"b\\" [a\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "[a\] \\"a\\" [a\] \\"b\\" [a\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" \\"a\\" [a\] \\"b\\" [a\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" [a\] \\"b\\" [a\] / 0" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "\\"a\\" \\"a\\" [a\] [a\] \\"b\\" / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "100px / auto-flow dense 100px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "auto-flow dense 1fr / 100px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "100px / dense auto-flow 100px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "dense auto-flow 1fr / 100px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "100px / auto-flow 100px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "auto-flow 1fr / 100px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "none / auto-flow 100px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "auto-flow 1fr / none" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "auto / auto-flow 100px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "auto-flow 1fr / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid'\] = "1fr / 1fr" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-shorthand.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-shorthand.html.ini
new file mode 100644
index 00000000000..2bbb927d3cb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-shorthand.html.ini
@@ -0,0 +1,189 @@
+[grid-shorthand.html]
+ [e.style['grid'\] = "none" should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "none" should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style['grid'\] = "none" should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "none" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid'\] = "none" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "none" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "none" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / 20%" should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / 20%" should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / 20%" should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / 20%" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / 20%" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / 20%" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / 20%" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid'\] = "none / 10px" should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "none / 10px" should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style['grid'\] = "none / 10px" should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "none / 10px" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid'\] = "none / 10px" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "none / 10px" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "none / 10px" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid'\] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style['grid'\] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid'\] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid'\] = "[header-top\] \\"a a a\\" [header-bottom\] [main-top\] \\"b b b\\" 1fr [main-bottom\] / auto 1fr auto" should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "[header-top\] \\"a a a\\" [header-bottom\] [main-top\] \\"b b b\\" 1fr [main-bottom\] / auto 1fr auto" should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style['grid'\] = "[header-top\] \\"a a a\\" [header-bottom\] [main-top\] \\"b b b\\" 1fr [main-bottom\] / auto 1fr auto" should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "[header-top\] \\"a a a\\" [header-bottom\] [main-top\] \\"b b b\\" 1fr [main-bottom\] / auto 1fr auto" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid'\] = "[header-top\] \\"a a a\\" [header-bottom\] [main-top\] \\"b b b\\" 1fr [main-bottom\] / auto 1fr auto" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "[header-top\] \\"a a a\\" [header-bottom\] [main-top\] \\"b b b\\" 1fr [main-bottom\] / auto 1fr auto" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "[header-top\] \\"a a a\\" [header-bottom\] [main-top\] \\"b b b\\" 1fr [main-bottom\] / auto 1fr auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid'\] = " \\"a a a\\" \\"b b b\\" 1fr/ auto 1fr auto" should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = " \\"a a a\\" \\"b b b\\" 1fr/ auto 1fr auto" should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style['grid'\] = " \\"a a a\\" \\"b b b\\" 1fr/ auto 1fr auto" should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = " \\"a a a\\" \\"b b b\\" 1fr/ auto 1fr auto" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid'\] = " \\"a a a\\" \\"b b b\\" 1fr/ auto 1fr auto" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = " \\"a a a\\" \\"b b b\\" 1fr/ auto 1fr auto" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = " \\"a a a\\" \\"b b b\\" 1fr/ auto 1fr auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid'\] = " [\] \\"a a a\\" [\] [\] \\"b b b\\" 1fr [\] / [\] auto 1fr [\] auto [\]" should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = " [\] \\"a a a\\" [\] [\] \\"b b b\\" 1fr [\] / [\] auto 1fr [\] auto [\]" should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style['grid'\] = " [\] \\"a a a\\" [\] [\] \\"b b b\\" 1fr [\] / [\] auto 1fr [\] auto [\]" should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = " [\] \\"a a a\\" [\] [\] \\"b b b\\" 1fr [\] / [\] auto 1fr [\] auto [\]" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid'\] = " [\] \\"a a a\\" [\] [\] \\"b b b\\" 1fr [\] / [\] auto 1fr [\] auto [\]" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = " [\] \\"a a a\\" [\] [\] \\"b b b\\" 1fr [\] / [\] auto 1fr [\] auto [\]" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = " [\] \\"a a a\\" [\] [\] \\"b b b\\" 1fr [\] / [\] auto 1fr [\] auto [\]" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / auto-flow dense 20px" should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / auto-flow dense 20px" should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / auto-flow dense 20px" should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / auto-flow dense 20px" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / auto-flow dense 20px" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / auto-flow dense 20px" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "10px / auto-flow dense 20px" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid'\] = "auto-flow dense 30px / 40px" should set grid-auto-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "auto-flow dense 30px / 40px" should set grid-auto-flow]
+ expected: FAIL
+
+ [e.style['grid'\] = "auto-flow dense 30px / 40px" should set grid-auto-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "auto-flow dense 30px / 40px" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid'\] = "auto-flow dense 30px / 40px" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid'\] = "auto-flow dense 30px / 40px" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid'\] = "auto-flow dense 30px / 40px" should not set unrelated longhands]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-areas-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-areas-computed.html.ini
new file mode 100644
index 00000000000..be39bc5afc0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-areas-computed.html.ini
@@ -0,0 +1,27 @@
+[grid-template-areas-computed.html]
+ [Property grid-template-areas value 'none']
+ expected: FAIL
+
+ [Property grid-template-areas value '"first"']
+ expected: FAIL
+
+ [Property grid-template-areas value '"first second"']
+ expected: FAIL
+
+ [Property grid-template-areas value '"1st 2nd 3rd"']
+ expected: FAIL
+
+ [Property grid-template-areas value '"first second" "third fourth"']
+ expected: FAIL
+
+ [Property grid-template-areas value '"first second" "third ." "1st 2nd" "3rd 4th"']
+ expected: FAIL
+
+ [Property grid-template-areas value '" a \t b "']
+ expected: FAIL
+
+ [Property grid-template-areas value '"c\td"']
+ expected: FAIL
+
+ [Property grid-template-areas value '"first ..."']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-areas-one-cell.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-areas-one-cell.html.ini
new file mode 100644
index 00000000000..3025564e3b7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-areas-one-cell.html.ini
@@ -0,0 +1,12 @@
+[grid-template-areas-one-cell.html]
+ ["grid-template-areas: '';" should be invalid.]
+ expected: FAIL
+
+ ["grid-template-areas: '' '';" should be invalid.]
+ expected: FAIL
+
+ ["grid-template-areas: '$';" should be invalid.]
+ expected: FAIL
+
+ ["grid-template-areas: ' ';" should be invalid.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-areas-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-areas-valid.html.ini
new file mode 100644
index 00000000000..db5d9c76334
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-areas-valid.html.ini
@@ -0,0 +1,27 @@
+[grid-template-areas-valid.html]
+ [e.style['grid-template-areas'\] = "none" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-areas'\] = "\\"first\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-areas'\] = "\\"first second\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-areas'\] = "\\"1st 2nd 3rd\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-areas'\] = "\\"first second\\" \\"third fourth\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-areas'\] = "\\"first second\\" \\"third .\\" \\"1st 2nd\\" \\"3rd 4th\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-areas'\] = "\\" a \\t b \\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-areas'\] = "\\"c\\td\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-areas'\] = "\\"first ...\\"" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-computed-implicit-track.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-computed-implicit-track.html.ini
new file mode 100644
index 00000000000..0e861adc5cc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-computed-implicit-track.html.ini
@@ -0,0 +1,72 @@
+[grid-template-columns-computed-implicit-track.html]
+ [Property grid-template-columns value 'none' computes to '10px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px' computes to '10px 1px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\]' computes to '10px 1px [a\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] 2px' computes to '10px 1px [a\] 2px']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px' computes to '10px [a\] 1px']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\]' computes to '10px [a\] 1px [b\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px repeat(1, 2px) 3px' computes to '10px 1px 2px 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px repeat(auto-fill, 2px) 3px' computes to '10px 1px 2px 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px repeat(auto-fit, 2px) 3px' computes to '10px 1px 0px 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(1, 2px 3px) [b\] 4px' computes to '10px 1px [a\] 2px 3px [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(auto-fill, 2px 3px) [b\] 4px' computes to '10px 1px [a\] 2px 3px [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(auto-fit, 2px 3px) [b\] 4px' computes to '10px 1px [a\] 0px 0px [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(1, [b\] 2px [c\]) [d\] 3px' computes to '10px 1px [a b\] 2px [c d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(auto-fill, [b\] 2px [c\]) [d\] 3px' computes to '10px 1px [a b\] 2px [c d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(auto-fit, [b\] 2px [c\]) [d\] 3px' computes to '10px 1px [a b\] 0px [c d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px repeat(1, 2px [b\] 3px) 4px [d\]' computes to '10px [a\] 1px 2px [b\] 3px 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px repeat(auto-fill, 2px [b\] 3px) 4px [d\]' computes to '10px [a\] 1px 2px [b\] 3px 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px repeat(auto-fit, 2px [b\] 3px) 4px [d\]' computes to '10px [a\] 1px 0px [b\] 0px 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '100% [a\] repeat(1, [b\] 200% [c\]) [d\] 300%' computes to '10px 1px [a b\] 2px [c d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '100% [a\] repeat(auto-fill, [b\] 200% [c\]) [d\] 300%' computes to '10px 1px [a b\] 2px [c d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '100% [a\] repeat(auto-fit, [b\] 200% [c\]) [d\] 300%' computes to '10px 1px [a b\] 0px [c d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1em repeat(1, 2em [b\] 3em) 4em [d\]' computes to '10px [a\] 1px 2px [b\] 3px 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1em repeat(auto-fill, 2em [b\] 3em) 4em [d\]' computes to '10px [a\] 1px 2px [b\] 3px 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1em repeat(auto-fit, 2em [b\] 3em) 4em [d\]' computes to '10px [a\] 1px 0px [b\] 0px 4px [d\]']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-computed-nogrid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-computed-nogrid.html.ini
new file mode 100644
index 00000000000..b538cd273ef
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-computed-nogrid.html.ini
@@ -0,0 +1,96 @@
+[grid-template-columns-computed-nogrid.html]
+ [Property grid-template-columns value 'none']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] 2px']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px repeat(1, 2px) 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px repeat(auto-fill, 2px) 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px repeat(auto-fit, 2px) 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(1, 2px 3px) [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(2, 2px 3px) [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(auto-fill, 2px 3px) [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(auto-fit, 2px 3px) [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(1, [b\] 2px [c\]) [d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(auto-fill, [b\] 2px [c\]) [d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(auto-fit, [b\] 2px [c\]) [d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px repeat(1, 2px [b\] 3px) 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px repeat(auto-fill, 2px [b\] 3px) 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px repeat(auto-fill, 2px [b\] 3px) [d\] 4px']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px repeat(auto-fit, 2px [b\] 3px) 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '100% [a\] repeat(1, [b\] 200% [c\]) [d\] 300%']
+ expected: FAIL
+
+ [Property grid-template-rows value '100% [a\] repeat(auto-fill, [b\] 200% [c\]) [d\] 300%']
+ expected: FAIL
+
+ [Property grid-template-rows value '100% [a\] repeat(auto-fit, [b\] 200% [c\]) [d\] 300%']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1em repeat(1, 2em [b\] 3em) 4em [d\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1em repeat(auto-fill, 2em [b\] 3em) 4em [d\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1em repeat(auto-fit, 2em [b\] 3em) 4em [d\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(1, 2px [a\] 3px) [b\] repeat(auto-fill, [c\] 200% [d\]) [e\] 300%']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] repeat(auto-fill, [b\] 200% [c\]) repeat(1, 2px [d\] 3px) [e\] 300%']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(1, [a\] 2px [b\] 3px) [b\] repeat(auto-fill, [c\] 200% [d\]) [e\] 300%']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] repeat(auto-fill, [b\] 200% [c\]) repeat(1, 2px [d\] 3px [e\]) [f\] 300%']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b c\] repeat(auto-fill, [d\] 200% [e f\]) [g\] 2px repeat(1, 3px [d e\] 4px [e f\]) [g\] 300% [h\]']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-computed-withcontent.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-computed-withcontent.html.ini
new file mode 100644
index 00000000000..ef169e1c74e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-computed-withcontent.html.ini
@@ -0,0 +1,90 @@
+[grid-template-columns-computed-withcontent.html]
+ [Property grid-template-columns value 'none']
+ expected: FAIL
+
+ [Property grid-template-columns value '20%']
+ expected: FAIL
+
+ [Property grid-template-columns value 'calc(-0.5em + 10px)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'calc(0.5em + 10px)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'calc(30% + 40px)']
+ expected: FAIL
+
+ [Property grid-template-columns value '5fr']
+ expected: FAIL
+
+ [Property grid-template-columns value 'min-content']
+ expected: FAIL
+
+ [Property grid-template-columns value 'max-content']
+ expected: FAIL
+
+ [Property grid-template-columns value 'auto']
+ expected: FAIL
+
+ [Property grid-template-columns value 'minmax(10px, auto)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'minmax(20%, max-content)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'minmax(min-content, calc(-0.5em + 10px))']
+ expected: FAIL
+
+ [Property grid-template-columns value 'minmax(auto, 0)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'fit-content(70px)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'fit-content(20%)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'fit-content(calc(-0.5em + 10px))']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(1, 10px)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(1, [one two\] 20%)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(2, minmax(10px, auto))']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(2, fit-content(20%) [three four\] 30px 40px [five six\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'min-content repeat(5, minmax(10px, auto))']
+ expected: FAIL
+
+ [Property grid-template-columns value '[\] 150px [\] 1fr [\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(auto-fill, 200px)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(auto-fit, [one\] 20%)']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(auto-fill, minmax(100px, 5fr) [two\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'repeat(auto-fit, [three\] minmax(max-content, 6em) [four\])']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 21px [b\] repeat(auto-fill, [c\] 22px [d\] 23px [e\]) [f\] 24px [g\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 21px [b c\] repeat(auto-fill, [d e\] 22px [f g h\] 23px [i j k l\]) [m n\] 24px [o\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] repeat(2, [b\] 20px [c d\] 21px [e f g\]) [h i\] repeat(auto-fit, [j\] 22px [k l m\] 23px [n o p q\]) [r s\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '[one\] repeat(2, minmax(50px, auto)) [two\] 30px [three\] repeat(auto-fill, 10px) 40px [four five\] repeat(2, minmax(200px, auto)) [six\]']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-computed.html.ini
new file mode 100644
index 00000000000..32563c53eee
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-computed.html.ini
@@ -0,0 +1,72 @@
+[grid-template-columns-computed.html]
+ [Property grid-template-columns value 'none']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] 2px']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px repeat(1, 2px) 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px repeat(auto-fill, 2px) 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px repeat(auto-fit, 2px) 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(1, 2px 3px) [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(auto-fill, 2px 3px) [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(auto-fit, 2px 3px) [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(1, [b\] 2px [c\]) [d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(auto-fill, [b\] 2px [c\]) [d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '1px [a\] repeat(auto-fit, [b\] 2px [c\]) [d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px repeat(1, 2px [b\] 3px) 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px repeat(auto-fill, 2px [b\] 3px) 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px repeat(auto-fit, 2px [b\] 3px) 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '100% [a\] repeat(1, [b\] 200% [c\]) [d\] 300%']
+ expected: FAIL
+
+ [Property grid-template-columns value '100% [a\] repeat(auto-fill, [b\] 200% [c\]) [d\] 300%']
+ expected: FAIL
+
+ [Property grid-template-columns value '100% [a\] repeat(auto-fit, [b\] 200% [c\]) [d\] 300%']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1em repeat(1, 2em [b\] 3em) 4em [d\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1em repeat(auto-fill, 2em [b\] 3em) 4em [d\]']
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1em repeat(auto-fit, 2em [b\] 3em) 4em [d\]']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-valid.html.ini
new file mode 100644
index 00000000000..d4ce8a27c8f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-columns-valid.html.ini
@@ -0,0 +1,102 @@
+[grid-template-columns-valid.html]
+ [e.style['grid-template-columns'\] = "none" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "20%" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "calc(-0.5em + 10px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "calc(0.5em + 10px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "calc(30% + 40vw)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "5fr" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "min-content" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "max-content" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "minmax(10px, auto)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "minmax(20%, max-content)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "minmax(calc(-0.5em + 10px), min-content)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "minmax(calc(0.5em + 10px), 5fr)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "minmax(calc(30% + 40vw), 10px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "minmax(min-content, 20%)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "minmax(max-content, calc(-0.5em + 10px))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "minmax(auto, calc(0.5em + 10px))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "fit-content(10px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "fit-content(20%)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "fit-content(calc(-0.5em + 10px))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "fit-content(calc(0.5em + 10px))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "fit-content(calc(30% + 40vw))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "repeat(1, [\] 10px [\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "repeat(1, [one two\] 20%)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "repeat(2, minmax(10px, auto))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "repeat(2, fit-content(20%) [three four\] 30px 40px [five six\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "min-content repeat(5, minmax(10px, auto))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "[\] 150px [\] 1fr [\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "repeat(auto-fill, 10px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "repeat(auto-fit, [one\] 20%)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "repeat(auto-fill, minmax(30px, 5fr) [two\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "repeat(auto-fit, [three\] minmax(max-content, 6em) [four\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "[one\] repeat(2, minmax(10px, auto)) [two\] 30px [three\] repeat(auto-fill, 10px) 40px [four five\] repeat(2, minmax(10px, auto)) [six\]" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-important.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-important.html.ini
new file mode 100644
index 00000000000..abc7819936a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-important.html.ini
@@ -0,0 +1,3 @@
+[grid-template-important.html]
+ [grid-template followed by !important]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-node-not-connected.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-node-not-connected.html.ini
new file mode 100644
index 00000000000..6132cd2301b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-node-not-connected.html.ini
@@ -0,0 +1,3 @@
+[grid-template-node-not-connected.html]
+ [grid-template-node-not-connected]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-repeat-auto-computed-withcontent-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-repeat-auto-computed-withcontent-001.html.ini
new file mode 100644
index 00000000000..2508db25383
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-repeat-auto-computed-withcontent-001.html.ini
@@ -0,0 +1,36 @@
+[grid-template-repeat-auto-computed-withcontent-001.html]
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\]) [i\] 5px [k\] 6px [l m\] ' gridColumn = 3]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\]) [i\] 5px [k\] 6px [l m\] ' gridColumn = 4]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\]) [i\] 5px [k\] 6px [l m\] ' gridColumn = 5]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\]) [i\] 5px [k\] 6px [l m\] ' gridColumn = 6]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\]) [i\] 5px [k\] 6px [l m\] ' gridColumn = 4 / 5]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\]) [i\] 5px [k\] 6px [l m\] ' gridColumn = 4 / 6]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\]) [i\] 5px [k\] 6px [l m\] ' gridColumn = 3 / 6]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fill, [e f\] 3px [g\] 4px [h\]) [i\] 5px [k\] 6px [l m\] ' gridColumn = 3]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fill, [e f\] 3px [g\] 4px [h\]) [i\] 5px [k\] 6px [l m\] ' gridColumn = 4]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fill, [e f\] 3px [g\] 4px [h\]) [i\] 5px [k\] 6px [l m\] ' gridColumn = 5]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fill, [e f\] 3px [g\] 4px [h\]) [i\] 5px [k\] 6px [l m\] ' gridColumn = 4 / 7]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fill, [e f\] 3px [g\] 4px [h\]) [i\] 5px [k\] 6px [l m\] ' gridColumn = 3 / 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-repeat-auto-computed-withcontent-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-repeat-auto-computed-withcontent-002.html.ini
new file mode 100644
index 00000000000..0bcf5472c81
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-repeat-auto-computed-withcontent-002.html.ini
@@ -0,0 +1,51 @@
+[grid-template-repeat-auto-computed-withcontent-002.html]
+ [Property grid-template-rows value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\] 5px [i j\]) [k\] 7px [k\] 8px [l m\]' gridRow = 3]
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\] 5px [i j\]) [k\] 7px [k\] 8px [l m\]' gridRow = 5]
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\] 5px [i j\]) [k\] 7px [k\] 8px [l m\]' gridRow = 3 / 8]
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\] 5px [i j\]) [k\] 7px [k\] 8px [l m\]' gridRow = 4 / span 2]
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\] 5px [i j\]) [k\] 7px [k\] 8px [l m\]' gridRow = 4 / 5]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\] 5px [i j\]) [k\] 7px [k\] 8px [l m\]' gridColumn = 3]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\] 5px [i j\]) [k\] 7px [k\] 8px [l m\]' gridColumn = 6]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\] 5px [i j\]) [k\] 7px [k\] 8px [l m\]' gridColumn = 3 / 8]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\] 5px [i j\]) [k\] 7px [k\] 8px [l m\]' gridColumn = 5 / span 2]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\] 5px [i j\]) [k\] 7px [k\] 8px [l m\]' gridColumn = 7 / span 2]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\] 5px [i j\]) [k\] 7px [k\] 8px [l m\]' gridColumn = 5 / 8]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\] 5px [i j\]) [k\] 7px [k\] 8px [l m\]' gridColumn = 8 / 10]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\]) [i j\] 7px [k\] 8px [l m\]' gridColumn = 3]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\]) [i j\] 7px [k\] 8px [l m\]' gridColumn = 6]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\]) [i j\] 7px [k\] 8px [l m\]' gridColumn = 3 / 8]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\]) [i j\] 7px [k\] 8px [l m\]' gridColumn = 6 / span 2]
+ expected: FAIL
+
+ [Property grid-template-columns value '[a\] 1px [b\] 2px [c d\] repeat(auto-fit, [e f\] 3px [g\] 4px [h\]) [i j\] 7px [k\] 8px [l m\]' gridColumn = 5 / 10]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-computed-implicit-track.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-computed-implicit-track.html.ini
new file mode 100644
index 00000000000..8c45e5df853
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-computed-implicit-track.html.ini
@@ -0,0 +1,72 @@
+[grid-template-rows-computed-implicit-track.html]
+ [Property grid-template-rows value 'none' computes to '10px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px' computes to '10px 1px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\]' computes to '10px 1px [a\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] 2px' computes to '10px 1px [a\] 2px']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px' computes to '10px [a\] 1px']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px [b\]' computes to '10px [a\] 1px [b\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px repeat(1, 2px) 3px' computes to '10px 1px 2px 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px repeat(auto-fill, 2px) 3px' computes to '10px 1px 2px 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px repeat(auto-fit, 2px) 3px' computes to '10px 1px 0px 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(1, 2px 3px) [b\] 4px' computes to '10px 1px [a\] 2px 3px [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(auto-fill, 2px 3px) [b\] 4px' computes to '10px 1px [a\] 2px 3px [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(auto-fit, 2px 3px) [b\] 4px' computes to '10px 1px [a\] 0px 0px [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(1, [b\] 2px [c\]) [d\] 3px' computes to '10px 1px [a b\] 2px [c d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(auto-fill, [b\] 2px [c\]) [d\] 3px' computes to '10px 1px [a b\] 2px [c d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(auto-fit, [b\] 2px [c\]) [d\] 3px' computes to '10px 1px [a b\] 0px [c d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px repeat(1, 2px [b\] 3px) 4px [d\]' computes to '10px [a\] 1px 2px [b\] 3px 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px repeat(auto-fill, 2px [b\] 3px) 4px [d\]' computes to '10px [a\] 1px 2px [b\] 3px 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px repeat(auto-fit, 2px [b\] 3px) 4px [d\]' computes to '10px [a\] 1px 0px [b\] 0px 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '100% [a\] repeat(1, [b\] 200% [c\]) [d\] 300%' computes to '10px 1px [a b\] 2px [c d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '100% [a\] repeat(auto-fill, [b\] 200% [c\]) [d\] 300%' computes to '10px 1px [a b\] 2px [c d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '100% [a\] repeat(auto-fit, [b\] 200% [c\]) [d\] 300%' computes to '10px 1px [a b\] 0px [c d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1em repeat(1, 2em [b\] 3em) 4em [d\]' computes to '10px [a\] 1px 2px [b\] 3px 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1em repeat(auto-fill, 2em [b\] 3em) 4em [d\]' computes to '10px [a\] 1px 2px [b\] 3px 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1em repeat(auto-fit, 2em [b\] 3em) 4em [d\]' computes to '10px [a\] 1px 0px [b\] 0px 4px [d\]']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-computed-nogrid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-computed-nogrid.html.ini
new file mode 100644
index 00000000000..0ef106299f6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-computed-nogrid.html.ini
@@ -0,0 +1,72 @@
+[grid-template-rows-computed-nogrid.html]
+ [Property grid-template-rows value 'none']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] 2px']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px [b\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px repeat(1, 2px) 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px repeat(auto-fill, 2px) 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px repeat(auto-fit, 2px) 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(1, 2px 3px) [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(auto-fill, 2px 3px) [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(auto-fit, 2px 3px) [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(1, [b\] 2px [c\]) [d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(auto-fill, [b\] 2px [c\]) [d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(auto-fit, [b\] 2px [c\]) [d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px repeat(1, 2px [b\] 3px) 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px repeat(auto-fill, 2px [b\] 3px) 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px repeat(auto-fit, 2px [b\] 3px) 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '100% [a\] repeat(1, [b\] 200% [c\]) [d\] 300%']
+ expected: FAIL
+
+ [Property grid-template-rows value '100% [a\] repeat(auto-fill, [b\] 200% [c\]) [d\] 300%']
+ expected: FAIL
+
+ [Property grid-template-rows value '100% [a\] repeat(auto-fit, [b\] 200% [c\]) [d\] 300%']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1em repeat(1, 2em [b\] 3em) 4em [d\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1em repeat(auto-fill, 2em [b\] 3em) 4em [d\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1em repeat(auto-fit, 2em [b\] 3em) 4em [d\]']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-computed-withcontent.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-computed-withcontent.html.ini
new file mode 100644
index 00000000000..410aa9af24a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-computed-withcontent.html.ini
@@ -0,0 +1,81 @@
+[grid-template-rows-computed-withcontent.html]
+ [Property grid-template-rows value 'none']
+ expected: FAIL
+
+ [Property grid-template-rows value '20%']
+ expected: FAIL
+
+ [Property grid-template-rows value 'calc(-0.5em + 10px)']
+ expected: FAIL
+
+ [Property grid-template-rows value 'calc(0.5em + 10px)']
+ expected: FAIL
+
+ [Property grid-template-rows value 'calc(30% + 40px)']
+ expected: FAIL
+
+ [Property grid-template-rows value '5fr']
+ expected: FAIL
+
+ [Property grid-template-rows value 'min-content']
+ expected: FAIL
+
+ [Property grid-template-rows value 'max-content']
+ expected: FAIL
+
+ [Property grid-template-rows value 'auto']
+ expected: FAIL
+
+ [Property grid-template-rows value 'minmax(10px, auto)']
+ expected: FAIL
+
+ [Property grid-template-rows value 'minmax(20%, max-content)']
+ expected: FAIL
+
+ [Property grid-template-rows value 'minmax(min-content, calc(-0.5em + 10px))']
+ expected: FAIL
+
+ [Property grid-template-rows value 'minmax(auto, 0)']
+ expected: FAIL
+
+ [Property grid-template-rows value 'fit-content(70px)']
+ expected: FAIL
+
+ [Property grid-template-rows value 'fit-content(20%)']
+ expected: FAIL
+
+ [Property grid-template-rows value 'fit-content(calc(-0.5em + 10px))']
+ expected: FAIL
+
+ [Property grid-template-rows value 'repeat(1, 10px)']
+ expected: FAIL
+
+ [Property grid-template-rows value 'repeat(1, [one two\] 20%)']
+ expected: FAIL
+
+ [Property grid-template-rows value 'repeat(2, minmax(10px, auto))']
+ expected: FAIL
+
+ [Property grid-template-rows value 'repeat(2, fit-content(20%) [three four\] 30px 40px [five six\])']
+ expected: FAIL
+
+ [Property grid-template-rows value 'min-content repeat(5, minmax(10px, auto))']
+ expected: FAIL
+
+ [Property grid-template-rows value '[\] 150px [\] 1fr [\]']
+ expected: FAIL
+
+ [Property grid-template-rows value 'repeat(auto-fill, 200px)']
+ expected: FAIL
+
+ [Property grid-template-rows value 'repeat(auto-fit, [one\] 20%)']
+ expected: FAIL
+
+ [Property grid-template-rows value 'repeat(auto-fill, minmax(100px, 5fr) [two\])']
+ expected: FAIL
+
+ [Property grid-template-rows value 'repeat(auto-fit, [three\] minmax(max-content, 6em) [four\])']
+ expected: FAIL
+
+ [Property grid-template-rows value '[one\] repeat(2, minmax(50px, auto)) [two\] 30px [three\] repeat(auto-fill, 10px) 40px [four five\] repeat(2, minmax(200px, auto)) [six\]']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-computed.html.ini
new file mode 100644
index 00000000000..7b42459d9d2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-computed.html.ini
@@ -0,0 +1,72 @@
+[grid-template-rows-computed.html]
+ [Property grid-template-rows value 'none']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] 2px']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px [b\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px repeat(1, 2px) 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px repeat(auto-fill, 2px) 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px repeat(auto-fit, 2px) 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(1, 2px 3px) [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(auto-fill, 2px 3px) [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(auto-fit, 2px 3px) [b\] 4px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(1, [b\] 2px [c\]) [d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(auto-fill, [b\] 2px [c\]) [d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '1px [a\] repeat(auto-fit, [b\] 2px [c\]) [d\] 3px']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px repeat(1, 2px [b\] 3px) 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px repeat(auto-fill, 2px [b\] 3px) 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1px repeat(auto-fit, 2px [b\] 3px) 4px [d\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '100% [a\] repeat(1, [b\] 200% [c\]) [d\] 300%']
+ expected: FAIL
+
+ [Property grid-template-rows value '100% [a\] repeat(auto-fill, [b\] 200% [c\]) [d\] 300%']
+ expected: FAIL
+
+ [Property grid-template-rows value '100% [a\] repeat(auto-fit, [b\] 200% [c\]) [d\] 300%']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1em repeat(1, 2em [b\] 3em) 4em [d\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1em repeat(auto-fill, 2em [b\] 3em) 4em [d\]']
+ expected: FAIL
+
+ [Property grid-template-rows value '[a\] 1em repeat(auto-fit, 2em [b\] 3em) 4em [d\]']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-valid.html.ini
new file mode 100644
index 00000000000..e54295abcc5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-rows-valid.html.ini
@@ -0,0 +1,102 @@
+[grid-template-rows-valid.html]
+ [e.style['grid-template-rows'\] = "none" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "20%" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "calc(-0.5em + 10px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "calc(0.5em + 10px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "calc(30% + 40vw)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "5fr" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "min-content" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "max-content" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "minmax(10px, auto)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "minmax(20%, max-content)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "minmax(calc(-0.5em + 10px), min-content)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "minmax(calc(0.5em + 10px), 5fr)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "minmax(calc(30% + 40vw), 10px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "minmax(min-content, 20%)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "minmax(max-content, calc(-0.5em + 10px))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "minmax(auto, calc(0.5em + 10px))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "fit-content(10px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "fit-content(20%)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "fit-content(calc(-0.5em + 10px))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "fit-content(calc(0.5em + 10px))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "fit-content(calc(30% + 40vw))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "repeat(1, [\] 10px [\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "repeat(1, [one two\] 20%)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "repeat(2, minmax(10px, auto))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "repeat(2, fit-content(20%) [three four\] 30px 40px [five six\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "min-content repeat(5, minmax(10px, auto))" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "[\] 150px [\] 1fr [\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "repeat(auto-fill, 10px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "repeat(auto-fit, [one\] 20%)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "repeat(auto-fill, minmax(30px, 5fr) [two\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "repeat(auto-fit, [three\] minmax(max-content, 6em) [four\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "[one\] repeat(2, minmax(10px, auto)) [two\] 30px [three\] repeat(auto-fill, 10px) 40px [four five\] repeat(2, minmax(10px, auto)) [six\]" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-shorthand-areas-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-shorthand-areas-valid.html.ini
new file mode 100644
index 00000000000..25e5fb05d24
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-shorthand-areas-valid.html.ini
@@ -0,0 +1,15 @@
+[grid-template-shorthand-areas-valid.html]
+ [grid-template: none / 1px and "grid-template-areas: "a";" should be valid.]
+ expected: FAIL
+
+ [grid-template: none / none and "grid-template-areas: "a";" should be valid.]
+ expected: FAIL
+
+ [grid-template: auto / 1px and "grid-template-areas: "a a a";" should be valid.]
+ expected: FAIL
+
+ [grid-template: auto / auto and "grid-template-areas: "a a a";" should be valid.]
+ expected: FAIL
+
+ [grid-template: 10px 20px 30px / 40px 50px 60px 70px and "grid-template-areas: "a . b ." "c d . e" "f g h .";" should be valid.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-shorthand-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-shorthand-valid.html.ini
new file mode 100644
index 00000000000..3096e65f0f7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-shorthand-valid.html.ini
@@ -0,0 +1,120 @@
+[grid-template-shorthand-valid.html]
+ [e.style['grid-template'\] = "none" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "none / none" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "auto / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "none / [a\] 0px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "none / [\] 0px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "[a\] 10px / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "[a\] 10px / none" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "[\] 10px [\] / [\] auto [\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "[a\] \\"a\\" 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "[a\] \\"a\\" 10px [\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "[\] \\"a\\" 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "[a\] \\"a\\" 10px [a\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a a a\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" / 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" / 20%" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" / 5fr" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "[a\] \\"a\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "[a\] \\"a\\" [a\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "[\] \\"a\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" [\] [\] \\"b\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" [\] \\"b\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" [a\] [b\] \\"b\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" [a\] \\"b\\"" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" / 0" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" 10px / 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" calc(100% - 10px) / calc(10px)" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" [a\] \\"b\\" 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" [a\] \\"b\\" 10px [a\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" [a\] [a\] \\"b\\" 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" [a\] [\] \\"b\\" 10px" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" 10px [a\] \\"b\\" [a\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" [a\] \\"b\\" [a\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "[a\] \\"a\\" [a\] \\"b\\" [a\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" \\"a\\" [a\] \\"b\\" [a\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" [a\] \\"b\\" [a\] / 0" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" \\"a\\" [a\] [a\] \\"b\\" / auto" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "\\"a\\" auto [a\] \\"b\\" auto [b\] / 10px" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-shorthand.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-shorthand.html.ini
new file mode 100644
index 00000000000..6c167c77773
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/parsing/grid-template-shorthand.html.ini
@@ -0,0 +1,72 @@
+[grid-template-shorthand.html]
+ [e.style['grid-template'\] = "none" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "none" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "none" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "none" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "10px / 20%" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "10px / 20%" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "10px / 20%" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "10px / 20%" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "[header-top\] \\"a a a\\" [header-bottom\] [main-top\] \\"b b b\\" 1fr [main-bottom\] / auto 1fr auto" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "[header-top\] \\"a a a\\" [header-bottom\] [main-top\] \\"b b b\\" 1fr [main-bottom\] / auto 1fr auto" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "[header-top\] \\"a a a\\" [header-bottom\] [main-top\] \\"b b b\\" 1fr [main-bottom\] / auto 1fr auto" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid-template'\] = "[header-top\] \\"a a a\\" [header-bottom\] [main-top\] \\"b b b\\" 1fr [main-bottom\] / auto 1fr auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-template'\] = " \\"a a a\\" \\"b b b\\" 1fr/ auto 1fr auto" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid-template'\] = " \\"a a a\\" \\"b b b\\" 1fr/ auto 1fr auto" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid-template'\] = " \\"a a a\\" \\"b b b\\" 1fr/ auto 1fr auto" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid-template'\] = " \\"a a a\\" \\"b b b\\" 1fr/ auto 1fr auto" should not set unrelated longhands]
+ expected: FAIL
+
+ [e.style['grid-template'\] = " [\] \\"a a a\\" [\] [\] \\"b b b\\" 1fr [\] / [\] auto 1fr [\] auto [\]" should set grid-template-areas]
+ expected: FAIL
+
+ [e.style['grid-template'\] = " [\] \\"a a a\\" [\] [\] \\"b b b\\" 1fr [\] / [\] auto 1fr [\] auto [\]" should set grid-template-columns]
+ expected: FAIL
+
+ [e.style['grid-template'\] = " [\] \\"a a a\\" [\] [\] \\"b b b\\" 1fr [\] / [\] auto 1fr [\] auto [\]" should set grid-template-rows]
+ expected: FAIL
+
+ [e.style['grid-template'\] = " [\] \\"a a a\\" [\] [\] \\"b b b\\" 1fr [\] / [\] auto 1fr [\] auto [\]" should not set unrelated longhands]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-auto-flow-sparse-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-auto-flow-sparse-001.html.ini
new file mode 100644
index 00000000000..d61dcb9cec7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-auto-flow-sparse-001.html.ini
@@ -0,0 +1,24 @@
+[grid-auto-flow-sparse-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-auto-placement-implicit-tracks-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-auto-placement-implicit-tracks-001.html.ini
new file mode 100644
index 00000000000..f5fb14109a3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-auto-placement-implicit-tracks-001.html.ini
@@ -0,0 +1,36 @@
+[grid-auto-placement-implicit-tracks-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
+
+ [.grid 7]
+ expected: FAIL
+
+ [.grid 8]
+ expected: FAIL
+
+ [.grid 9]
+ expected: FAIL
+
+ [.grid 10]
+ expected: FAIL
+
+ [.grid 11]
+ expected: FAIL
+
+ [.grid 12]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-container-change-grid-tracks-recompute-child-positions-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-container-change-grid-tracks-recompute-child-positions-001.html.ini
new file mode 100644
index 00000000000..506371ad7ad
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-container-change-grid-tracks-recompute-child-positions-001.html.ini
@@ -0,0 +1,18 @@
+[grid-container-change-grid-tracks-recompute-child-positions-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
+
+ [.grid 5]
+ expected: FAIL
+
+ [.grid 6]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-container-change-named-grid-recompute-child-positions-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-container-change-named-grid-recompute-child-positions-001.html.ini
new file mode 100644
index 00000000000..9f7d8ce26f6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-container-change-named-grid-recompute-child-positions-001.html.ini
@@ -0,0 +1,12 @@
+[grid-container-change-named-grid-recompute-child-positions-001.html]
+ [.grid 1]
+ expected: FAIL
+
+ [.grid 2]
+ expected: FAIL
+
+ [.grid 3]
+ expected: FAIL
+
+ [.grid 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-layout-grid-span.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-layout-grid-span.html.ini
new file mode 100644
index 00000000000..8c2854d38ee
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-layout-grid-span.html.ini
@@ -0,0 +1,2 @@
+[grid-layout-grid-span.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-layout-lines-shorthands.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-layout-lines-shorthands.html.ini
new file mode 100644
index 00000000000..4fdef1c5ec9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-layout-lines-shorthands.html.ini
@@ -0,0 +1,2 @@
+[grid-layout-lines-shorthands.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-layout-lines.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-layout-lines.html.ini
new file mode 100644
index 00000000000..996413eb08d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-layout-lines.html.ini
@@ -0,0 +1,2 @@
+[grid-layout-lines.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-layout-placement-shorthands.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-layout-placement-shorthands.html.ini
new file mode 100644
index 00000000000..16f1dbe48a4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-layout-placement-shorthands.html.ini
@@ -0,0 +1,2 @@
+[grid-layout-placement-shorthands.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-items-spanning-multiple-rows-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-items-spanning-multiple-rows-001.html.ini
new file mode 100644
index 00000000000..45e4763e55b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-items-spanning-multiple-rows-001.html.ini
@@ -0,0 +1,2 @@
+[grid-placement-items-spanning-multiple-rows-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-items-spanning-multiple-rows-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-items-spanning-multiple-rows-002.html.ini
new file mode 100644
index 00000000000..3a0055bf239
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-items-spanning-multiple-rows-002.html.ini
@@ -0,0 +1,2 @@
+[grid-placement-items-spanning-multiple-rows-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-001.html.ini
new file mode 100644
index 00000000000..dec14955805
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-001.html.ini
@@ -0,0 +1,2 @@
+[grid-placement-using-named-grid-lines-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-002.html.ini
new file mode 100644
index 00000000000..b57d92fd5f9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-002.html.ini
@@ -0,0 +1,2 @@
+[grid-placement-using-named-grid-lines-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-003.html.ini
new file mode 100644
index 00000000000..ed32e5e31dd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-003.html.ini
@@ -0,0 +1,2 @@
+[grid-placement-using-named-grid-lines-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-004.html.ini
new file mode 100644
index 00000000000..feaf1d48957
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-004.html.ini
@@ -0,0 +1,2 @@
+[grid-placement-using-named-grid-lines-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-005.html.ini
new file mode 100644
index 00000000000..344c45abc10
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-005.html.ini
@@ -0,0 +1,2 @@
+[grid-placement-using-named-grid-lines-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-006.html.ini
new file mode 100644
index 00000000000..bfd761d9be8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-006.html.ini
@@ -0,0 +1,2 @@
+[grid-placement-using-named-grid-lines-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-007.html.ini
new file mode 100644
index 00000000000..e454b6f1d2e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-007.html.ini
@@ -0,0 +1,2 @@
+[grid-placement-using-named-grid-lines-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-008.html.ini
new file mode 100644
index 00000000000..846ad9ee38b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-008.html.ini
@@ -0,0 +1,2 @@
+[grid-placement-using-named-grid-lines-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-009.html.ini
new file mode 100644
index 00000000000..0c449181721
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/placement/grid-placement-using-named-grid-lines-009.html.ini
@@ -0,0 +1,2 @@
+[grid-placement-using-named-grid-lines-009.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/relative-grandchild.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/relative-grandchild.html.ini
new file mode 100644
index 00000000000..fffc849e09d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/relative-grandchild.html.ini
@@ -0,0 +1,2 @@
+[relative-grandchild.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/stretch-grid-item-text-input-overflow.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/stretch-grid-item-text-input-overflow.html.ini
new file mode 100644
index 00000000000..bd1c9aafaba
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/stretch-grid-item-text-input-overflow.html.ini
@@ -0,0 +1,2 @@
+[stretch-grid-item-text-input-overflow.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/abs-pos-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/abs-pos-002.html.ini
new file mode 100644
index 00000000000..959f11477c2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/abs-pos-002.html.ini
@@ -0,0 +1,2 @@
+[abs-pos-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/align-self-baseline-with-subgrid-mbp.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/align-self-baseline-with-subgrid-mbp.html.ini
new file mode 100644
index 00000000000..1511cf803f7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/align-self-baseline-with-subgrid-mbp.html.ini
@@ -0,0 +1,6 @@
+[align-self-baseline-with-subgrid-mbp.html]
+ [.first-baseline 1]
+ expected: FAIL
+
+ [.first-baseline 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/alignment-in-subgridded-axes-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/alignment-in-subgridded-axes-001.html.ini
new file mode 100644
index 00000000000..d9dd19648b2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/alignment-in-subgridded-axes-001.html.ini
@@ -0,0 +1,48 @@
+[alignment-in-subgridded-axes-001.html]
+ [.item 1]
+ expected: FAIL
+
+ [.item 2]
+ expected: FAIL
+
+ [.item 3]
+ expected: FAIL
+
+ [.item 4]
+ expected: FAIL
+
+ [.item 5]
+ expected: FAIL
+
+ [.item 6]
+ expected: FAIL
+
+ [.item 7]
+ expected: FAIL
+
+ [.item 8]
+ expected: FAIL
+
+ [.item 9]
+ expected: FAIL
+
+ [.item 10]
+ expected: FAIL
+
+ [.item 11]
+ expected: FAIL
+
+ [.item 12]
+ expected: FAIL
+
+ [.item 13]
+ expected: FAIL
+
+ [.item 14]
+ expected: FAIL
+
+ [.item 15]
+ expected: FAIL
+
+ [.item 16]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/auto-track-sizing-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/auto-track-sizing-004.html.ini
new file mode 100644
index 00000000000..4d1e8824c17
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/auto-track-sizing-004.html.ini
@@ -0,0 +1,2 @@
+[auto-track-sizing-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/baseline-001.html.ini
new file mode 100644
index 00000000000..a190c9ea8ca
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/baseline-001.html.ini
@@ -0,0 +1,2 @@
+[baseline-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/contribution-size-flex-tracks-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/contribution-size-flex-tracks-001.html.ini
new file mode 100644
index 00000000000..b3d040ee0f3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/contribution-size-flex-tracks-001.html.ini
@@ -0,0 +1,2 @@
+[contribution-size-flex-tracks-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/dynamic-min-content-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/dynamic-min-content-001.html.ini
new file mode 100644
index 00000000000..dae9fbcca9e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/dynamic-min-content-001.html.ini
@@ -0,0 +1,2 @@
+[dynamic-min-content-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/dynamic-min-content-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/dynamic-min-content-002.html.ini
new file mode 100644
index 00000000000..8bf29439918
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/dynamic-min-content-002.html.ini
@@ -0,0 +1,2 @@
+[dynamic-min-content-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/dynamic-min-content-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/dynamic-min-content-003.html.ini
new file mode 100644
index 00000000000..bdf1d7b53d5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/dynamic-min-content-003.html.ini
@@ -0,0 +1,2 @@
+[dynamic-min-content-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-001.html.ini
new file mode 100644
index 00000000000..a9e1adde17f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-001.html.ini
@@ -0,0 +1,2 @@
+[grid-gap-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-002.html.ini
new file mode 100644
index 00000000000..c695be260be
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-002.html.ini
@@ -0,0 +1,2 @@
+[grid-gap-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-003.html.ini
new file mode 100644
index 00000000000..d73834ff3ce
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-003.html.ini
@@ -0,0 +1,2 @@
+[grid-gap-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-007.html.ini
new file mode 100644
index 00000000000..99ddb99bf17
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-007.html.ini
@@ -0,0 +1,2 @@
+[grid-gap-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-008.html.ini
new file mode 100644
index 00000000000..cc9f58e7588
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-008.html.ini
@@ -0,0 +1,2 @@
+[grid-gap-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-009.html.ini
new file mode 100644
index 00000000000..7e301180a2b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-009.html.ini
@@ -0,0 +1,2 @@
+[grid-gap-009.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-010.html.ini
new file mode 100644
index 00000000000..99d60f1e6ee
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-010.html.ini
@@ -0,0 +1,2 @@
+[grid-gap-010.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-011.html.ini
new file mode 100644
index 00000000000..93b521cda78
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-011.html.ini
@@ -0,0 +1,2 @@
+[grid-gap-011.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-012.html.ini
new file mode 100644
index 00000000000..1cd4ed1c1d2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-012.html.ini
@@ -0,0 +1,2 @@
+[grid-gap-012.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-smaller-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-smaller-001.html.ini
new file mode 100644
index 00000000000..817ac2b058e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-gap-smaller-001.html.ini
@@ -0,0 +1,2 @@
+[grid-gap-smaller-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-template-computed-nogrid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-template-computed-nogrid.html.ini
new file mode 100644
index 00000000000..c9a6277a897
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-template-computed-nogrid.html.ini
@@ -0,0 +1,150 @@
+[grid-template-computed-nogrid.html]
+ [Property grid-template-columns value 'subgrid [\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] [b\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [\] [b\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] [b\] [b\] [c\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] [b c d\] [e f\] [e f\] [g\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a b c\] [d\] [e f\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(auto-fill, [c\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(auto-fill, [\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(auto-fill, [c\]) [g\] [h i\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] repeat(auto-fill, [c\]) [g\] [h i\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a b\] repeat(auto-fill, [c\]) [g\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] [b\] repeat(auto-fill, [c\]) [g h\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] [b\] repeat(auto-fill, [c\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(auto-fill, [c d\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(auto-fill, [c d\]) [g\] [h i\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] repeat(auto-fill, [c d\]) [g\] [h i\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a b\] repeat(auto-fill, [c d\]) [g\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] [b\] repeat(auto-fill, [c d\]) [g h\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] [b\] repeat(auto-fill, [c d\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(auto-fill, [c\] [d\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(auto-fill, [c\] [d\]) [g\] [h i\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] repeat(auto-fill, [c\] [d\]) [g\] [h i\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a b\] repeat(auto-fill, [c\] [d\]) [g\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] [b\] repeat(auto-fill, [c\] [d\]) [g h\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] [b\] repeat(auto-fill, [c\] [d\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(auto-fill, [c\] [d e\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(auto-fill, [c\] [d e\]) [g\] [h i\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] repeat(auto-fill, [c\] [d e\]) [g\] [h i\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a b\] repeat(auto-fill, [c\] [d e\]) [g\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] [b\] repeat(auto-fill, [c\] [d e\]) [g h\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] [b\] repeat(auto-fill, [c\] [d e\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] repeat(2, [c\] [d e\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(1, [\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(2, [\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(2, [a\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(2, [a\] [\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(2, [\] [a\] [\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(2, [\] [\] [\]) repeat(auto-fill, [\] [\] [\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(1, [a b\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(2, [a b\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(1, [a\] [b\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(2, [a\] [b\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] repeat(2, [b\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(2, [a\]) [b\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] repeat(2, [b\] [c d\]) [e\]']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(2, [a b\]) repeat(auto-fill, [c\] [d e\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(auto-fill, [a\] [b c\]) repeat(2, [d e\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid repeat(2, [a b\]) repeat(auto-fill, [c\] [d e\]) repeat(2, [f g\])']
+ expected: FAIL
+
+ [Property grid-template-columns value 'subgrid [a\] [b c\] repeat(2, [d e\]) [f\] [g h\] repeat(auto-fill, [i\] [j k\]) [l\] repeat(2, [m n\]) [o\]']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-template-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-template-valid.html.ini
new file mode 100644
index 00000000000..c67a86c38fb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/grid-template-valid.html.ini
@@ -0,0 +1,114 @@
+[grid-template-valid.html]
+ [e.style['grid-template-rows'\] = "subgrid" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid [a\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid [a\] [b\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid [a\] [b\] [c\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid [\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid [a\] [b\] [\] [c\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid [\] [\] [\] [c\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid [\] [\] [\] [\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid repeat(auto-fill, [a\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid repeat(auto-fill, [\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid [a\] repeat(auto-fill, [b\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid [a\] repeat(auto-fill, [b\]) [c\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid [\] repeat(auto-fill, [\]) [\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid repeat(2, [a\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid repeat(2, [a\] [b\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid [a\] repeat(2, [b\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid [a\] repeat(2, [b\]) [c\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid [\] repeat(2, [\]) [\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-rows'\] = "subgrid [a\] repeat(2, [b\]) repeat(auto-fill, [c\]) [d\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid [a\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid [a\] [b\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid [a\] [b\] [c\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid [\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid [a\] [b\] [\] [c\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid [\] [\] [\] [c\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid [\] [\] [\] [\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid repeat(auto-fill, [a\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid repeat(auto-fill, [\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid [a\] repeat(auto-fill, [b\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid [a\] repeat(auto-fill, [b\]) [c\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid [\] repeat(auto-fill, [\]) [\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid repeat(2, [a\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid repeat(2, [a\] [b\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid [a\] repeat(2, [b\])" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid [a\] repeat(2, [b\]) [c\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid [\] repeat(2, [\]) [\]" should set the property value]
+ expected: FAIL
+
+ [e.style['grid-template-columns'\] = "subgrid [a\] repeat(2, [b\]) repeat(auto-fill, [c\]) [d\]" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/independent-formatting-context.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/independent-formatting-context.html.ini
new file mode 100644
index 00000000000..e249501437b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/independent-formatting-context.html.ini
@@ -0,0 +1,2 @@
+[independent-formatting-context.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/independent-tracks-from-parent-grid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/independent-tracks-from-parent-grid.html.ini
new file mode 100644
index 00000000000..3797183cdbd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/independent-tracks-from-parent-grid.html.ini
@@ -0,0 +1,2 @@
+[independent-tracks-from-parent-grid.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/item-percentage-height-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/item-percentage-height-001.html.ini
new file mode 100644
index 00000000000..4da55e1573a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/item-percentage-height-001.html.ini
@@ -0,0 +1,2 @@
+[item-percentage-height-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-001.html.ini
new file mode 100644
index 00000000000..fbfa0be6562
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-001.html.ini
@@ -0,0 +1,2 @@
+[line-names-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-004.html.ini
new file mode 100644
index 00000000000..2096ce9ab65
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-004.html.ini
@@ -0,0 +1,2 @@
+[line-names-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-005.html.ini
new file mode 100644
index 00000000000..4becd791199
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-005.html.ini
@@ -0,0 +1,2 @@
+[line-names-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-007.html.ini
new file mode 100644
index 00000000000..f1e78c47b35
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-007.html.ini
@@ -0,0 +1,2 @@
+[line-names-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-013.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-013.html.ini
new file mode 100644
index 00000000000..632e5331c4d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/line-names-013.html.ini
@@ -0,0 +1,2 @@
+[line-names-013.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/overflow-hidden-does-not-prohibit-subgrid.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/overflow-hidden-does-not-prohibit-subgrid.html.ini
new file mode 100644
index 00000000000..8fdfd06381a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/overflow-hidden-does-not-prohibit-subgrid.html.ini
@@ -0,0 +1,2 @@
+[overflow-hidden-does-not-prohibit-subgrid.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/parent-repeat-auto-fit-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/parent-repeat-auto-fit-001.html.ini
new file mode 100644
index 00000000000..e133dc715ee
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/parent-repeat-auto-fit-001.html.ini
@@ -0,0 +1,2 @@
+[parent-repeat-auto-fit-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/percentage-track-sizing.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/percentage-track-sizing.html.ini
new file mode 100644
index 00000000000..2aed68d4345
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/percentage-track-sizing.html.ini
@@ -0,0 +1,2 @@
+[percentage-track-sizing.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/placement-invalidation-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/placement-invalidation-001.html.ini
new file mode 100644
index 00000000000..63d7b70f25e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/placement-invalidation-001.html.ini
@@ -0,0 +1,3 @@
+[placement-invalidation-001.html]
+ [#item 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/repeat-auto-fill-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/repeat-auto-fill-001.html.ini
new file mode 100644
index 00000000000..e93046279bc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/repeat-auto-fill-001.html.ini
@@ -0,0 +1,2 @@
+[repeat-auto-fill-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/repeat-auto-fill-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/repeat-auto-fill-006.html.ini
new file mode 100644
index 00000000000..4724a4c5ba9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/repeat-auto-fill-006.html.ini
@@ -0,0 +1,2 @@
+[repeat-auto-fill-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/repeat-auto-fill-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/repeat-auto-fill-008.html.ini
new file mode 100644
index 00000000000..53b916095cf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/repeat-auto-fill-008.html.ini
@@ -0,0 +1,2 @@
+[repeat-auto-fill-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/scrollbar-gutter-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/scrollbar-gutter-001.html.ini
new file mode 100644
index 00000000000..94ccd377bb0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/scrollbar-gutter-001.html.ini
@@ -0,0 +1,2 @@
+[scrollbar-gutter-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/scrollbar-gutter-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/scrollbar-gutter-002.html.ini
new file mode 100644
index 00000000000..3c94744dc5c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/scrollbar-gutter-002.html.ini
@@ -0,0 +1,2 @@
+[scrollbar-gutter-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-001.html.ini
new file mode 100644
index 00000000000..e5d7ff25cae
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-001.html.ini
@@ -0,0 +1,2 @@
+[standalone-axis-size-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-002.html.ini
new file mode 100644
index 00000000000..f6b5d72d825
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-002.html.ini
@@ -0,0 +1,2 @@
+[standalone-axis-size-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-003.html.ini
new file mode 100644
index 00000000000..da9b0606ec4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-003.html.ini
@@ -0,0 +1,2 @@
+[standalone-axis-size-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-004.html.ini
new file mode 100644
index 00000000000..225744c4dec
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-004.html.ini
@@ -0,0 +1,2 @@
+[standalone-axis-size-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-005.html.ini
new file mode 100644
index 00000000000..81d207dd168
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-005.html.ini
@@ -0,0 +1,2 @@
+[standalone-axis-size-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-006.html.ini
new file mode 100644
index 00000000000..17642ff9d50
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-006.html.ini
@@ -0,0 +1,2 @@
+[standalone-axis-size-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-007.html.ini
new file mode 100644
index 00000000000..26909c36e7d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-007.html.ini
@@ -0,0 +1,2 @@
+[standalone-axis-size-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-008.html.ini
new file mode 100644
index 00000000000..74c20910c3a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-008.html.ini
@@ -0,0 +1,2 @@
+[standalone-axis-size-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-009.html.ini
new file mode 100644
index 00000000000..aba31a3b4de
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/standalone-axis-size-009.html.ini
@@ -0,0 +1,2 @@
+[standalone-axis-size-009.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-001.html.ini
new file mode 100644
index 00000000000..f4293eb2d8a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-001.html.ini
@@ -0,0 +1,2 @@
+[subgrid-baseline-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-002.html.ini
new file mode 100644
index 00000000000..e93ab475c91
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-002.html.ini
@@ -0,0 +1,2 @@
+[subgrid-baseline-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-005.html.ini
new file mode 100644
index 00000000000..fecd8ab0269
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-005.html.ini
@@ -0,0 +1,36 @@
+[subgrid-baseline-005.html]
+ [.item 1]
+ expected: FAIL
+
+ [.item 2]
+ expected: FAIL
+
+ [.item 3]
+ expected: FAIL
+
+ [.item 4]
+ expected: FAIL
+
+ [.item 5]
+ expected: FAIL
+
+ [.item 6]
+ expected: FAIL
+
+ [.item 7]
+ expected: FAIL
+
+ [.item 8]
+ expected: FAIL
+
+ [.item 9]
+ expected: FAIL
+
+ [.item 10]
+ expected: FAIL
+
+ [.item 11]
+ expected: FAIL
+
+ [.item 12]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-006.html.ini
new file mode 100644
index 00000000000..adfaf6ceeb2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-006.html.ini
@@ -0,0 +1,36 @@
+[subgrid-baseline-006.html]
+ [.item 1]
+ expected: FAIL
+
+ [.item 2]
+ expected: FAIL
+
+ [.item 3]
+ expected: FAIL
+
+ [.item 4]
+ expected: FAIL
+
+ [.item 5]
+ expected: FAIL
+
+ [.item 6]
+ expected: FAIL
+
+ [.item 7]
+ expected: FAIL
+
+ [.item 8]
+ expected: FAIL
+
+ [.item 9]
+ expected: FAIL
+
+ [.item 10]
+ expected: FAIL
+
+ [.item 11]
+ expected: FAIL
+
+ [.item 12]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-007.html.ini
new file mode 100644
index 00000000000..c361d75dead
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-007.html.ini
@@ -0,0 +1,36 @@
+[subgrid-baseline-007.html]
+ [.item 1]
+ expected: FAIL
+
+ [.item 2]
+ expected: FAIL
+
+ [.item 3]
+ expected: FAIL
+
+ [.item 4]
+ expected: FAIL
+
+ [.item 5]
+ expected: FAIL
+
+ [.item 6]
+ expected: FAIL
+
+ [.item 7]
+ expected: FAIL
+
+ [.item 8]
+ expected: FAIL
+
+ [.item 9]
+ expected: FAIL
+
+ [.item 10]
+ expected: FAIL
+
+ [.item 11]
+ expected: FAIL
+
+ [.item 12]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-008.html.ini
new file mode 100644
index 00000000000..d10e03fc409
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-008.html.ini
@@ -0,0 +1,36 @@
+[subgrid-baseline-008.html]
+ [.item 1]
+ expected: FAIL
+
+ [.item 2]
+ expected: FAIL
+
+ [.item 3]
+ expected: FAIL
+
+ [.item 4]
+ expected: FAIL
+
+ [.item 5]
+ expected: FAIL
+
+ [.item 6]
+ expected: FAIL
+
+ [.item 7]
+ expected: FAIL
+
+ [.item 8]
+ expected: FAIL
+
+ [.item 9]
+ expected: FAIL
+
+ [.item 10]
+ expected: FAIL
+
+ [.item 11]
+ expected: FAIL
+
+ [.item 12]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-009.html.ini
new file mode 100644
index 00000000000..ba9a6f1f9dc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-009.html.ini
@@ -0,0 +1,36 @@
+[subgrid-baseline-009.html]
+ [.item 1]
+ expected: FAIL
+
+ [.item 2]
+ expected: FAIL
+
+ [.item 3]
+ expected: FAIL
+
+ [.item 4]
+ expected: FAIL
+
+ [.item 5]
+ expected: FAIL
+
+ [.item 6]
+ expected: FAIL
+
+ [.item 7]
+ expected: FAIL
+
+ [.item 8]
+ expected: FAIL
+
+ [.item 9]
+ expected: FAIL
+
+ [.item 10]
+ expected: FAIL
+
+ [.item 11]
+ expected: FAIL
+
+ [.item 12]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-010.html.ini
new file mode 100644
index 00000000000..4b30b9d2561
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-010.html.ini
@@ -0,0 +1,6 @@
+[subgrid-baseline-010.html]
+ [.item 1]
+ expected: FAIL
+
+ [.item 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-011.html.ini
new file mode 100644
index 00000000000..f2255900f31
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-011.html.ini
@@ -0,0 +1,6 @@
+[subgrid-baseline-011.html]
+ [.item 1]
+ expected: FAIL
+
+ [.item 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-012.html.ini
new file mode 100644
index 00000000000..59602ca238f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-baseline-012.html.ini
@@ -0,0 +1,2 @@
+[subgrid-baseline-012.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-button.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-button.html.ini
new file mode 100644
index 00000000000..a09197e1878
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-button.html.ini
@@ -0,0 +1,2 @@
+[subgrid-button.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-item-block-size-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-item-block-size-001.html.ini
new file mode 100644
index 00000000000..a31d6682f10
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-item-block-size-001.html.ini
@@ -0,0 +1,2 @@
+[subgrid-item-block-size-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-no-items-on-edges-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-no-items-on-edges-002.html.ini
new file mode 100644
index 00000000000..db26509d989
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-no-items-on-edges-002.html.ini
@@ -0,0 +1,2 @@
+[subgrid-no-items-on-edges-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-stretch.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-stretch.html.ini
new file mode 100644
index 00000000000..489a902dc48
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/subgrid-stretch.html.ini
@@ -0,0 +1,2 @@
+[subgrid-stretch.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/writing-directions-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/writing-directions-001.html.ini
new file mode 100644
index 00000000000..a1eb3461cd3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/writing-directions-001.html.ini
@@ -0,0 +1,2 @@
+[writing-directions-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/writing-directions-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/writing-directions-003.html.ini
new file mode 100644
index 00000000000..5c4b4b5a0e6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/subgrid/writing-directions-003.html.ini
@@ -0,0 +1,2 @@
+[writing-directions-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/table-grid-item-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/table-grid-item-005.html.ini
new file mode 100644
index 00000000000..9c914be7204
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/table-grid-item-005.html.ini
@@ -0,0 +1,3 @@
+[table-grid-item-005.html]
+ [<table> grid items should fill their grid area]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-grid/whitespace-reattach.html.ini b/tests/wpt/meta-legacy-layout/css/css-grid/whitespace-reattach.html.ini
new file mode 100644
index 00000000000..c3f962da8b2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-grid/whitespace-reattach.html.ini
@@ -0,0 +1,2 @@
+[whitespace-reattach.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-overflow/overflow-video.html.ini b/tests/wpt/meta-legacy-layout/css/css-overflow/overflow-video.html.ini
deleted file mode 100644
index 1d0a9d754d6..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-overflow/overflow-video.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[overflow-video.html]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/position-absolute-replaced-minmax.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/position-absolute-replaced-minmax.html.ini
index 1d18cd98633..2a1431da4a4 100644
--- a/tests/wpt/meta-legacy-layout/css/css-position/position-absolute-replaced-minmax.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-position/position-absolute-replaced-minmax.html.ini
@@ -1,58 +1,57 @@
[position-absolute-replaced-minmax.html]
- expected: TIMEOUT
[minmax replaced IMG svg 23]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG svg 24]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG svg 25]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG svg 26]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG svg 27]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG svg 28]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG svg 29]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG svg 30]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG svg 31]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG svg 32]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG svg 33]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG 34]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG 35]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG 36]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG 37]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG 38]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG 39]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG 40]
- expected: NOTRUN
+ expected: FAIL
[minmax replaced IMG 41]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-pseudo/parsing/the-select-arrow-pseudo-element.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-pseudo/parsing/the-select-arrow-pseudo-element.tentative.html.ini
new file mode 100644
index 00000000000..0303c3c39d8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-pseudo/parsing/the-select-arrow-pseudo-element.tentative.html.ini
@@ -0,0 +1,18 @@
+[the-select-arrow-pseudo-element.tentative.html]
+ ["::select-arrow" should be a valid selector]
+ expected: FAIL
+
+ ["*::select-arrow" should be a valid selector]
+ expected: FAIL
+
+ ["foo.bar[baz\]::select-arrow" should be a valid selector]
+ expected: FAIL
+
+ ["::select-arrow::marker" should be a valid selector]
+ expected: FAIL
+
+ ["::slotted(*)::select-arrow" should be a valid selector]
+ expected: FAIL
+
+ ["::part(foo)::select-arrow" should be a valid selector]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/replaced-element-035.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/replaced-element-035.html.ini
new file mode 100644
index 00000000000..ae3371c1132
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/replaced-element-035.html.ini
@@ -0,0 +1,2 @@
+[replaced-element-035.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/replaced-element-043.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/replaced-element-043.html.ini
new file mode 100644
index 00000000000..fc3cf39803e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/replaced-element-043.html.ini
@@ -0,0 +1,288 @@
+[replaced-element-043.html]
+ [canvas 2]
+ expected: FAIL
+
+ [canvas 3]
+ expected: FAIL
+
+ [canvas 4]
+ expected: FAIL
+
+ [canvas 5]
+ expected: FAIL
+
+ [canvas 6]
+ expected: FAIL
+
+ [canvas 8]
+ expected: FAIL
+
+ [canvas 9]
+ expected: FAIL
+
+ [canvas 10]
+ expected: FAIL
+
+ [canvas 11]
+ expected: FAIL
+
+ [canvas 12]
+ expected: FAIL
+
+ [canvas 15]
+ expected: FAIL
+
+ [canvas 16]
+ expected: FAIL
+
+ [canvas 17]
+ expected: FAIL
+
+ [canvas 18]
+ expected: FAIL
+
+ [canvas 21]
+ expected: FAIL
+
+ [canvas 22]
+ expected: FAIL
+
+ [canvas 23]
+ expected: FAIL
+
+ [canvas 24]
+ expected: FAIL
+
+ [canvas 26]
+ expected: FAIL
+
+ [canvas 27]
+ expected: FAIL
+
+ [canvas 32]
+ expected: FAIL
+
+ [canvas 33]
+ expected: FAIL
+
+ [canvas 39]
+ expected: FAIL
+
+ [canvas 40]
+ expected: FAIL
+
+ [canvas 41]
+ expected: FAIL
+
+ [canvas 42]
+ expected: FAIL
+
+ [canvas 45]
+ expected: FAIL
+
+ [canvas 46]
+ expected: FAIL
+
+ [canvas 47]
+ expected: FAIL
+
+ [canvas 48]
+ expected: FAIL
+
+ [canvas 49]
+ expected: FAIL
+
+ [canvas 50]
+ expected: FAIL
+
+ [canvas 51]
+ expected: FAIL
+
+ [canvas 52]
+ expected: FAIL
+
+ [canvas 53]
+ expected: FAIL
+
+ [canvas 54]
+ expected: FAIL
+
+ [canvas 55]
+ expected: FAIL
+
+ [canvas 56]
+ expected: FAIL
+
+ [canvas 57]
+ expected: FAIL
+
+ [canvas 58]
+ expected: FAIL
+
+ [canvas 59]
+ expected: FAIL
+
+ [canvas 60]
+ expected: FAIL
+
+ [canvas 61]
+ expected: FAIL
+
+ [canvas 62]
+ expected: FAIL
+
+ [canvas 63]
+ expected: FAIL
+
+ [canvas 64]
+ expected: FAIL
+
+ [canvas 65]
+ expected: FAIL
+
+ [canvas 66]
+ expected: FAIL
+
+ [canvas 67]
+ expected: FAIL
+
+ [canvas 68]
+ expected: FAIL
+
+ [canvas 69]
+ expected: FAIL
+
+ [canvas 70]
+ expected: FAIL
+
+ [canvas 71]
+ expected: FAIL
+
+ [canvas 72]
+ expected: FAIL
+
+ [canvas 74]
+ expected: FAIL
+
+ [canvas 75]
+ expected: FAIL
+
+ [canvas 81]
+ expected: FAIL
+
+ [canvas 89]
+ expected: FAIL
+
+ [canvas 90]
+ expected: FAIL
+
+ [canvas 95]
+ expected: FAIL
+
+ [canvas 96]
+ expected: FAIL
+
+ [canvas 102]
+ expected: FAIL
+
+ [canvas 115]
+ expected: FAIL
+
+ [canvas 116]
+ expected: FAIL
+
+ [canvas 121]
+ expected: FAIL
+
+ [canvas 122]
+ expected: FAIL
+
+ [canvas 123]
+ expected: FAIL
+
+ [canvas 124]
+ expected: FAIL
+
+ [canvas 129]
+ expected: FAIL
+
+ [canvas 130]
+ expected: FAIL
+
+ [canvas 131]
+ expected: FAIL
+
+ [canvas 132]
+ expected: FAIL
+
+ [canvas 135]
+ expected: FAIL
+
+ [canvas 136]
+ expected: FAIL
+
+ [canvas 137]
+ expected: FAIL
+
+ [canvas 138]
+ expected: FAIL
+
+ [canvas 141]
+ expected: FAIL
+
+ [canvas 142]
+ expected: FAIL
+
+ [canvas 143]
+ expected: FAIL
+
+ [canvas 144]
+ expected: FAIL
+
+ [canvas 152]
+ expected: FAIL
+
+ [canvas 153]
+ expected: FAIL
+
+ [canvas 154]
+ expected: FAIL
+
+ [canvas 155]
+ expected: FAIL
+
+ [canvas 156]
+ expected: FAIL
+
+ [canvas 158]
+ expected: FAIL
+
+ [canvas 159]
+ expected: FAIL
+
+ [canvas 160]
+ expected: FAIL
+
+ [canvas 161]
+ expected: FAIL
+
+ [canvas 162]
+ expected: FAIL
+
+ [canvas 164]
+ expected: FAIL
+
+ [canvas 165]
+ expected: FAIL
+
+ [canvas 170]
+ expected: FAIL
+
+ [canvas 171]
+ expected: FAIL
+
+ [canvas 176]
+ expected: FAIL
+
+ [canvas 177]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/intrinsic-size-fallback-video.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/intrinsic-size-fallback-video.html.ini
new file mode 100644
index 00000000000..292fcbd5ebf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/intrinsic-size-fallback-video.html.ini
@@ -0,0 +1,12 @@
+[intrinsic-size-fallback-video.html]
+ [.wrapper 1]
+ expected: FAIL
+
+ [.wrapper 2]
+ expected: FAIL
+
+ [.wrapper 3]
+ expected: FAIL
+
+ [.wrapper 4]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/stretch/auto-margins-1.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/stretch/auto-margins-1.html.ini
new file mode 100644
index 00000000000..5030c8126ba
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/stretch/auto-margins-1.html.ini
@@ -0,0 +1,3 @@
+[auto-margins-1.html]
+ [[data-expected-width\] 2]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/stretch/indefinite-4.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/stretch/indefinite-4.html.ini
new file mode 100644
index 00000000000..d0bd94e4cbe
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/stretch/indefinite-4.html.ini
@@ -0,0 +1,3 @@
+[indefinite-4.html]
+ [[data-expected-client-height\] 1]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/text-shadow-emoji-transparent.html.ini b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/text-shadow-emoji-transparent.html.ini
new file mode 100644
index 00000000000..d77d728cf5b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/text-shadow-emoji-transparent.html.ini
@@ -0,0 +1,2 @@
+[text-shadow-emoji-transparent.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/segment-break-transformation-ignorable-1.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/segment-break-transformation-ignorable-1.html.ini
new file mode 100644
index 00000000000..d981ffe23af
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/segment-break-transformation-ignorable-1.html.ini
@@ -0,0 +1,2 @@
+[segment-break-transformation-ignorable-1.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/attr-IACVT.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/attr-IACVT.html.ini
new file mode 100644
index 00000000000..7d7e1ecd848
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/attr-IACVT.html.ini
@@ -0,0 +1,3 @@
+[attr-IACVT.html]
+ [CSS Values Test: attr() IACVT]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/attr-all-types.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/attr-all-types.html.ini
index 2239863f502..4a56492d36e 100644
--- a/tests/wpt/meta-legacy-layout/css/css-values/attr-all-types.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-values/attr-all-types.html.ini
@@ -38,9 +38,6 @@
[CSS Values and Units Test: attr 13]
expected: FAIL
- [CSS Values and Units Test: attr 14]
- expected: FAIL
-
[CSS Values and Units Test: attr 18]
expected: FAIL
@@ -59,57 +56,6 @@
[CSS Values and Units Test: attr 38]
expected: FAIL
- [CSS Values and Units Test: attr 39]
- expected: FAIL
-
- [CSS Values and Units Test: attr 40]
- expected: FAIL
-
- [CSS Values and Units Test: attr 41]
- expected: FAIL
-
- [CSS Values and Units Test: attr 42]
- expected: FAIL
-
- [CSS Values and Units Test: attr 43]
- expected: FAIL
-
- [CSS Values and Units Test: attr 44]
- expected: FAIL
-
- [CSS Values and Units Test: attr 45]
- expected: FAIL
-
- [CSS Values and Units Test: attr 46]
- expected: FAIL
-
- [CSS Values and Units Test: attr 47]
- expected: FAIL
-
- [CSS Values and Units Test: attr 48]
- expected: FAIL
-
- [CSS Values and Units Test: attr 49]
- expected: FAIL
-
- [CSS Values and Units Test: attr 50]
- expected: FAIL
-
- [CSS Values and Units Test: attr 51]
- expected: FAIL
-
- [CSS Values and Units Test: attr 52]
- expected: FAIL
-
- [CSS Values and Units Test: attr 53]
- expected: FAIL
-
- [CSS Values and Units Test: attr 54]
- expected: FAIL
-
- [CSS Values and Units Test: attr 55]
- expected: FAIL
-
[CSS Values and Units Test: attr 12]
expected: FAIL
@@ -122,21 +68,6 @@
[CSS Values and Units Test: attr 24]
expected: FAIL
- [CSS Values and Units Test: attr 56]
- expected: FAIL
-
- [CSS Values and Units Test: attr 57]
- expected: FAIL
-
- [CSS Values and Units Test: attr 58]
- expected: FAIL
-
- [CSS Values and Units Test: attr 59]
- expected: FAIL
-
- [CSS Values and Units Test: attr 60]
- expected: FAIL
-
[CSS Values and Units Test: attr 15]
expected: FAIL
@@ -155,35 +86,32 @@
[CSS Values and Units Test: attr 27]
expected: FAIL
- [CSS Values and Units Test: attr 31]
- expected: FAIL
-
[CSS Values and Units Test: attr 32]
expected: FAIL
- [CSS Values and Units Test: attr 61]
+ [CSS Values and Units Test: attr 74]
expected: FAIL
- [CSS Values and Units Test: attr 62]
+ [CSS Values and Units Test: attr 75]
expected: FAIL
- [CSS Values and Units Test: attr 63]
+ [CSS Values and Units Test: attr 76]
expected: FAIL
- [CSS Values and Units Test: attr 74]
+ [CSS Values and Units Test: attr 77]
expected: FAIL
- [CSS Values and Units Test: attr 75]
+ [CSS Values and Units Test: attr 22]
expected: FAIL
- [CSS Values and Units Test: attr 64]
+ [CSS Values and Units Test: attr 23]
expected: FAIL
- [CSS Values and Units Test: attr 65]
+ [CSS Values and Units Test: attr 30]
expected: FAIL
- [CSS Values and Units Test: attr 76]
+ [CSS Values and Units Test: attr 34]
expected: FAIL
- [CSS Values and Units Test: attr 77]
+ [CSS Values and Units Test: attr 35]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/attr-px-invalid-cast.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/attr-px-invalid-cast.html.ini
deleted file mode 100644
index 8b08afba29a..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-values/attr-px-invalid-cast.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[attr-px-invalid-cast.html]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/attr-px-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/attr-px-valid.html.ini
deleted file mode 100644
index 64c11e5cead..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-values/attr-px-valid.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[attr-px-valid.html]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/signs-abs-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/signs-abs-computed.html.ini
index e2069e297af..ece49b5a44a 100644
--- a/tests/wpt/meta-legacy-layout/css/css-values/signs-abs-computed.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-values/signs-abs-computed.html.ini
@@ -136,3 +136,66 @@
[sign(10px - 2em) should be used-value-equivalent to -1; fontSize=10px]
expected: FAIL
+
+ [calc(2.5 - sign(41px - 2em) / 2) should be used-value-equivalent to 2]
+ expected: FAIL
+
+ [calc(2.5 - sign(40px - 2em) / 2) should be used-value-equivalent to 2.5]
+ expected: FAIL
+
+ [calc(2.5 - sign(39px - 2em) / 2) should be used-value-equivalent to 3]
+ expected: FAIL
+
+ [calc(3 + sign(42px - 2em)) should be used-value-equivalent to 4]
+ expected: FAIL
+
+ [calc(3 + sign(40px - 2em)) should be used-value-equivalent to 3]
+ expected: FAIL
+
+ [calc(3 + sign(38px - 2em)) should be used-value-equivalent to 2]
+ expected: FAIL
+
+ [calc(90deg + 30deg * sign(42px - 2em)) should be used-value-equivalent to 120deg]
+ expected: FAIL
+
+ [calc(90deg + 30deg * sign(40px - 2em)) should be used-value-equivalent to 90deg]
+ expected: FAIL
+
+ [calc(90deg + 30deg * sign(38px - 2em)) should be used-value-equivalent to 60deg]
+ expected: FAIL
+
+ [calc(5s + 15s * sign(42px - 2em)) should be used-value-equivalent to 20s]
+ expected: FAIL
+
+ [calc(5s + 15s * sign(40px - 2em)) should be used-value-equivalent to 5s]
+ expected: FAIL
+
+ [calc(5s + 15s * sign(38px - 2em)) should be used-value-equivalent to -10s]
+ expected: FAIL
+
+ [calc(100dpi + 20dpi * sign(42px - 2em)) should be used-value-equivalent to 120dpi]
+ expected: FAIL
+
+ [calc(100dpi + 20dpi * sign(40px - 2em)) should be used-value-equivalent to 100dpi]
+ expected: FAIL
+
+ [calc(100dpi + 20dpi * sign(38px - 2em)) should be used-value-equivalent to 80dpi]
+ expected: FAIL
+
+ [calc(3fr + 1fr * sign(42px - 2em)) should be used-value-equivalent to 4fr]
+ expected: FAIL
+
+ [calc(3fr + 1fr * sign(40px - 2em)) should be used-value-equivalent to 3fr]
+ expected: FAIL
+
+ [calc(3fr + 1fr * sign(38px - 2em)) should be used-value-equivalent to 2fr]
+ expected: FAIL
+
+ [calc(2.5 - sign(33px - 2rem) / 2) should be used-value-equivalent to 2]
+ expected: FAIL
+
+ [calc(2.5 - sign(32px - 2rem) / 2) should be used-value-equivalent to 2.5]
+ expected: FAIL
+
+ [calc(2.5 - sign(31px - 2rem) / 2) should be used-value-equivalent to 3]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/cssom-view/DOMRectList.html.ini b/tests/wpt/meta-legacy-layout/css/cssom-view/DOMRectList.html.ini
index 5d7bd71bd9c..7994572555c 100644
--- a/tests/wpt/meta-legacy-layout/css/cssom-view/DOMRectList.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/cssom-view/DOMRectList.html.ini
@@ -1,7 +1,3 @@
[DOMRectList.html]
- [Element getClientRects()]
- expected: FAIL
-
[Range getClientRects()]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/geometry/DOMRectList.html.ini b/tests/wpt/meta-legacy-layout/css/geometry/DOMRectList.html.ini
index 7ea5f0b6856..d60b366db0d 100644
--- a/tests/wpt/meta-legacy-layout/css/geometry/DOMRectList.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/geometry/DOMRectList.html.ini
@@ -1,12 +1,3 @@
[DOMRectList.html]
- [DOMRectList item()]
- expected: FAIL
-
[DOMRectList is not [NoInterfaceObject\]]
expected: FAIL
-
- [DOMRectList is not [LegacyArrayClass\]]
- expected: FAIL
-
- [DOMRectList is exposed]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/geometry/idlharness.any.js.ini b/tests/wpt/meta-legacy-layout/css/geometry/idlharness.any.js.ini
index fe0192281ed..8a968b4eb6e 100644
--- a/tests/wpt/meta-legacy-layout/css/geometry/idlharness.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/css/geometry/idlharness.any.js.ini
@@ -19,27 +19,12 @@
[DOMPointReadOnly interface: calling matrixTransform(optional DOMMatrixInit) on new DOMPoint() with too few arguments must throw TypeError]
expected: FAIL
- [DOMRectList interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [DOMRectList interface: existence and properties of interface prototype object]
- expected: FAIL
-
[DOMPointReadOnly interface: operation matrixTransform(optional DOMMatrixInit)]
expected: FAIL
[DOMRectList interface: [object DOMRect\] must inherit property "length" with the proper type]
expected: FAIL
- [DOMRectList interface: operation item(unsigned long)]
- expected: FAIL
-
- [DOMRectList interface: existence and properties of interface object]
- expected: FAIL
-
- [DOMRectList interface object name]
- expected: FAIL
-
[DOMRectList interface: [object DOMRect\] must inherit property "item(unsigned long)" with the proper type]
expected: FAIL
@@ -52,9 +37,6 @@
[DOMPoint interface: legacy window alias]
expected: FAIL
- [DOMRectList interface object length]
- expected: FAIL
-
[DOMMatrix interface: calling setMatrixValue(DOMString) on new DOMMatrix() with too few arguments must throw TypeError]
expected: FAIL
@@ -73,14 +55,8 @@
[DOMPointReadOnly interface: calling matrixTransform(optional DOMMatrixInit) on new DOMPointReadOnly() with too few arguments must throw TypeError]
expected: FAIL
- [DOMRectList interface: attribute length]
- expected: FAIL
-
[DOMMatrix interface: legacy window alias]
expected: FAIL
[Stringification of [object DOMRect\]]
expected: FAIL
-
- [DOMRectList interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes.html.ini
new file mode 100644
index 00000000000..d1cd1865181
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes.html.ini
@@ -0,0 +1,2 @@
+[negated-always-matches-negated-first-of-type-when-ancestor-changes.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes.html.ini
new file mode 100644
index 00000000000..a22a798704c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes.html.ini
@@ -0,0 +1,2 @@
+[negated-always-matches-negated-last-of-type-when-ancestor-changes.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes.html.ini
new file mode 100644
index 00000000000..27ecadf65ec
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes.html.ini
@@ -0,0 +1,2 @@
+[negated-is-never-matches-negated-first-of-type-when-ancestor-changes.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes.html.ini
new file mode 100644
index 00000000000..254d5774e11
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes.html.ini
@@ -0,0 +1,2 @@
+[negated-is-never-matches-negated-last-of-type-when-ancestor-changes.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes.html.ini
new file mode 100644
index 00000000000..ab06ad7b0cc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes.html.ini
@@ -0,0 +1,2 @@
+[negated-negated-first-of-type-when-ancestor-changes.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes.html.ini
new file mode 100644
index 00000000000..75d4f82effe
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes.html.ini
@@ -0,0 +1,2 @@
+[negated-negated-last-of-type-when-ancestor-changes.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/custom-elements/ElementInternals-accessibility.tentative.html.ini b/tests/wpt/meta-legacy-layout/custom-elements/ElementInternals-accessibility.tentative.html.ini
new file mode 100644
index 00000000000..e888efbcc55
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/custom-elements/ElementInternals-accessibility.tentative.html.ini
@@ -0,0 +1,9 @@
+[ElementInternals-accessibility.tentative.html]
+ [ariaColIndexText is defined in ElementInternals]
+ expected: FAIL
+
+ [ariaDescription is defined in ElementInternals]
+ expected: FAIL
+
+ [ariaRowIndexText is defined in ElementInternals]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/custom-elements/reactions/customized-builtins/HTMLMediaElement.html.ini b/tests/wpt/meta-legacy-layout/custom-elements/reactions/customized-builtins/HTMLMediaElement.html.ini
new file mode 100644
index 00000000000..4456e76a8d1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/custom-elements/reactions/customized-builtins/HTMLMediaElement.html.ini
@@ -0,0 +1,2 @@
+[HTMLMediaElement.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/dom/abort/AbortSignal.any.js.ini b/tests/wpt/meta-legacy-layout/dom/abort/AbortSignal.any.js.ini
index 477da6cc050..5c57b72c1c3 100644
--- a/tests/wpt/meta-legacy-layout/dom/abort/AbortSignal.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/dom/abort/AbortSignal.any.js.ini
@@ -30,3 +30,7 @@
[AbortSignal timeouts fire in order]
expected: FAIL
+
+
+[AbortSignal.any.shadowrealm.html]
+ expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/dom/abort/event.any.js.ini b/tests/wpt/meta-legacy-layout/dom/abort/event.any.js.ini
index d232779c742..0150f91cdc7 100644
--- a/tests/wpt/meta-legacy-layout/dom/abort/event.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/dom/abort/event.any.js.ini
@@ -104,3 +104,7 @@
[AbortController.signal.reason returns the same DOMException]
expected: FAIL
+
+
+[event.any.shadowrealm.html]
+ expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/dom/abort/timeout-shadowrealm.any.js.ini b/tests/wpt/meta-legacy-layout/dom/abort/timeout-shadowrealm.any.js.ini
new file mode 100644
index 00000000000..2a8e04706a9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/dom/abort/timeout-shadowrealm.any.js.ini
@@ -0,0 +1,2 @@
+[timeout-shadowrealm.any.shadowrealm.html]
+ expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/dom/abort/timeout.any.js.ini b/tests/wpt/meta-legacy-layout/dom/abort/timeout.any.js.ini
new file mode 100644
index 00000000000..624b6a502c3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/dom/abort/timeout.any.js.ini
@@ -0,0 +1,20 @@
+[timeout.any.html]
+ [AbortSignal.timeout() returns a non-aborted signal]
+ expected: FAIL
+
+ [Signal returned by AbortSignal.timeout() times out]
+ expected: FAIL
+
+ [AbortSignal timeouts fire in order]
+ expected: FAIL
+
+
+[timeout.any.worker.html]
+ [AbortSignal.timeout() returns a non-aborted signal]
+ expected: FAIL
+
+ [Signal returned by AbortSignal.timeout() times out]
+ expected: FAIL
+
+ [AbortSignal timeouts fire in order]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/focus-within.html.ini b/tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/focus-within.html.ini
new file mode 100644
index 00000000000..e7448213aa1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/focus-within.html.ini
@@ -0,0 +1,15 @@
+[focus-within.html]
+ [focus-within should be updated when reparenting focused element directly]
+ expected: FAIL
+
+ [focus-within should be updated when reparenting an element that has focus within]
+ expected: FAIL
+
+ [focus-within should remain the same when moving to the same parent]
+ expected: FAIL
+
+ [:focus-within should be eventually up to date when moving to an inert subtree]
+ expected: FAIL
+
+ [:focus-within should be eventually up to date when moving to a subtree that would become inert via style]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-font-face.https.sub.tentative.html.ini b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-font-face.https.sub.tentative.html.ini
index f2eb0d19401..4a44664564d 100644
--- a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-font-face.https.sub.tentative.html.ini
+++ b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-font-face.https.sub.tentative.html.ini
@@ -46,6 +46,3 @@
[sec-fetch-dest]
expected: FAIL
-
- [sec-fetch-user]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/fetch/orb/tentative/known-mime-type.sub.any.js.ini b/tests/wpt/meta-legacy-layout/fetch/orb/tentative/known-mime-type.sub.any.js.ini
index cae3ce43d64..70b6d37d61f 100644
--- a/tests/wpt/meta-legacy-layout/fetch/orb/tentative/known-mime-type.sub.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/fetch/orb/tentative/known-mime-type.sub.any.js.ini
@@ -1,5 +1,5 @@
[known-mime-type.sub.any.html]
- expected: ERROR
+ expected: CRASH
[ORB should block opaque font/ttf]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/fetch/orb/tentative/nosniff.sub.any.js.ini b/tests/wpt/meta-legacy-layout/fetch/orb/tentative/nosniff.sub.any.js.ini
index a38b187f919..70265456b06 100644
--- a/tests/wpt/meta-legacy-layout/fetch/orb/tentative/nosniff.sub.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/fetch/orb/tentative/nosniff.sub.any.js.ini
@@ -1,5 +1,5 @@
[nosniff.sub.any.html]
- expected: ERROR
+ expected: CRASH
[ORB should block opaque text/plain with nosniff]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/fetch/orb/tentative/status.sub.any.js.ini b/tests/wpt/meta-legacy-layout/fetch/orb/tentative/status.sub.any.js.ini
index c0940d7ac48..be205a8852c 100644
--- a/tests/wpt/meta-legacy-layout/fetch/orb/tentative/status.sub.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/fetch/orb/tentative/status.sub.any.js.ini
@@ -13,7 +13,7 @@
[status.sub.any.html]
- expected: ERROR
+ expected: CRASH
[ORB should block opaque-response-blocklisted MIME type with status 206]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/fetch/range/general.window.js.ini b/tests/wpt/meta-legacy-layout/fetch/range/general.window.js.ini
index 95069accc51..fc1c44e2e69 100644
--- a/tests/wpt/meta-legacy-layout/fetch/range/general.window.js.ini
+++ b/tests/wpt/meta-legacy-layout/fetch/range/general.window.js.ini
@@ -1,4 +1,5 @@
[general.window.html]
+ expected: CRASH
[Untitled]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/fetch/security/dangling-markup/media.html.ini b/tests/wpt/meta-legacy-layout/fetch/security/dangling-markup/media.html.ini
index 320b53d711f..bbe45433d58 100644
--- a/tests/wpt/meta-legacy-layout/fetch/security/dangling-markup/media.html.ini
+++ b/tests/wpt/meta-legacy-layout/fetch/security/dangling-markup/media.html.ini
@@ -1,4 +1,5 @@
[media.html]
+ expected: CRASH
[Should not load audio with dangling markup in URL]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/fullscreen/crashtests/chrome-1312699.html.ini b/tests/wpt/meta-legacy-layout/fullscreen/crashtests/chrome-1312699.html.ini
deleted file mode 100644
index f1efc6d3c4c..00000000000
--- a/tests/wpt/meta-legacy-layout/fullscreen/crashtests/chrome-1312699.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[chrome-1312699.html]
- expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/fullscreen/crashtests/content-visibility-crash.html.ini b/tests/wpt/meta-legacy-layout/fullscreen/crashtests/content-visibility-crash.html.ini
deleted file mode 100644
index 03718ff93c2..00000000000
--- a/tests/wpt/meta-legacy-layout/fullscreen/crashtests/content-visibility-crash.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[content-visibility-crash.html]
- expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/fullscreen/rendering/backdrop-iframe.html.ini b/tests/wpt/meta-legacy-layout/fullscreen/rendering/backdrop-iframe.html.ini
deleted file mode 100644
index 70d926570da..00000000000
--- a/tests/wpt/meta-legacy-layout/fullscreen/rendering/backdrop-iframe.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[backdrop-iframe.html]
- expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/fullscreen/rendering/backdrop-inherit.html.ini b/tests/wpt/meta-legacy-layout/fullscreen/rendering/backdrop-inherit.html.ini
deleted file mode 100644
index 9de3b56d1e9..00000000000
--- a/tests/wpt/meta-legacy-layout/fullscreen/rendering/backdrop-inherit.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[backdrop-inherit.html]
- expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/fullscreen/rendering/backdrop-object.html.ini b/tests/wpt/meta-legacy-layout/fullscreen/rendering/backdrop-object.html.ini
deleted file mode 100644
index 46e7b6f55cd..00000000000
--- a/tests/wpt/meta-legacy-layout/fullscreen/rendering/backdrop-object.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[backdrop-object.html]
- expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/fullscreen/rendering/fullscreen-root-fills-page.html.ini b/tests/wpt/meta-legacy-layout/fullscreen/rendering/fullscreen-root-fills-page.html.ini
deleted file mode 100644
index cf9995f8551..00000000000
--- a/tests/wpt/meta-legacy-layout/fullscreen/rendering/fullscreen-root-fills-page.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fullscreen-root-fills-page.html]
- expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini
index 5aef7ce66ce..324db3d9b35 100644
--- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini
@@ -10,6 +10,3 @@
[load event does not fire on window.open('about:blank?foo')]
expected: FAIL
-
- [load event does not fire on window.open('about:blank')]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-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/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html.ini
new file mode 100644
index 00000000000..1f345b780e6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html.ini
@@ -0,0 +1,2 @@
+[2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html.ini
new file mode 100644
index 00000000000..1f345b780e6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html.ini
@@ -0,0 +1,2 @@
+[2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.w.html.ini
new file mode 100644
index 00000000000..a691585df81
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.w.html.ini
@@ -0,0 +1,2 @@
+[2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.w.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements-xhtml.xhtml.ini b/tests/wpt/meta-legacy-layout/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements-xhtml.xhtml.ini
new file mode 100644
index 00000000000..2ecca02983f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements-xhtml.xhtml.ini
@@ -0,0 +1,2 @@
+[document.getElementsByName-newelements-xhtml.xhtml]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements.html.ini b/tests/wpt/meta-legacy-layout/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements.html.ini
new file mode 100644
index 00000000000..4379437d183
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements.html.ini
@@ -0,0 +1,2 @@
+[document.getElementsByName-newelements.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/the-innertext-and-outertext-properties/getter.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/the-innertext-and-outertext-properties/getter.html.ini
index 6d5cdbdeea1..17d104192dc 100644
--- a/tests/wpt/meta-legacy-layout/html/dom/elements/the-innertext-and-outertext-properties/getter.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/dom/elements/the-innertext-and-outertext-properties/getter.html.ini
@@ -1,4 +1,5 @@
[getter.html]
+ expected: CRASH
[Trailing whitespace before hard line break removed ("<div>abc <br>def")]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/rendering/bidi-rendering/unicode-bidi-ua-rules.html.ini b/tests/wpt/meta-legacy-layout/html/rendering/bidi-rendering/unicode-bidi-ua-rules.html.ini
index 4349d4389f5..aae098c23ed 100644
--- a/tests/wpt/meta-legacy-layout/html/rendering/bidi-rendering/unicode-bidi-ua-rules.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/rendering/bidi-rendering/unicode-bidi-ua-rules.html.ini
@@ -1,4 +1,5 @@
[unicode-bidi-ua-rules.html]
+ expected: CRASH
[UA stylesheet rule for unicode-bidi, for <search>]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/rendering/dimension-attributes.html.ini b/tests/wpt/meta-legacy-layout/html/rendering/dimension-attributes.html.ini
index 37a4151ecbd..0b3d8c9fd7b 100644
--- a/tests/wpt/meta-legacy-layout/html/rendering/dimension-attributes.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/rendering/dimension-attributes.html.ini
@@ -2978,120 +2978,6 @@
[<marquee height="0px"> mapping to <marquee> height property]
expected: FAIL
- [<video width="200"> mapping to <video> width property]
- expected: FAIL
-
- [<video width="1007"> mapping to <video> width property]
- expected: FAIL
-
- [<video width=" 00523 "> mapping to <video> width property]
- expected: FAIL
-
- [<video width="200.25"> mapping to <video> width property]
- expected: FAIL
-
- [<video width="200.7"> mapping to <video> width property]
- expected: FAIL
-
- [<video width="200."> mapping to <video> width property]
- expected: FAIL
-
- [<video width="200in"> mapping to <video> width property]
- expected: FAIL
-
- [<video width="200.25in"> mapping to <video> width property]
- expected: FAIL
-
- [<video width="200 %"> mapping to <video> width property]
- expected: FAIL
-
- [<video width="200 abc"> mapping to <video> width property]
- expected: FAIL
-
- [<video width="200%"> mapping to <video> width property]
- expected: FAIL
-
- [<video width="200%abc"> mapping to <video> width property]
- expected: FAIL
-
- [<video width="200.25%"> mapping to <video> width property]
- expected: FAIL
-
- [<video width="200.%"> mapping to <video> width property]
- expected: FAIL
-
- [<video width="20.25e2"> mapping to <video> width property]
- expected: FAIL
-
- [<video width="20.25E2"> mapping to <video> width property]
- expected: FAIL
-
- [<video width="0"> mapping to <video> width property]
- expected: FAIL
-
- [<video width="0%"> mapping to <video> width property]
- expected: FAIL
-
- [<video width="0px"> mapping to <video> width property]
- expected: FAIL
-
- [<video height="200"> mapping to <video> height property]
- expected: FAIL
-
- [<video height="1007"> mapping to <video> height property]
- expected: FAIL
-
- [<video height=" 00523 "> mapping to <video> height property]
- expected: FAIL
-
- [<video height="200.25"> mapping to <video> height property]
- expected: FAIL
-
- [<video height="200.7"> mapping to <video> height property]
- expected: FAIL
-
- [<video height="200."> mapping to <video> height property]
- expected: FAIL
-
- [<video height="200in"> mapping to <video> height property]
- expected: FAIL
-
- [<video height="200.25in"> mapping to <video> height property]
- expected: FAIL
-
- [<video height="200 %"> mapping to <video> height property]
- expected: FAIL
-
- [<video height="200 abc"> mapping to <video> height property]
- expected: FAIL
-
- [<video height="200%"> mapping to <video> height property]
- expected: FAIL
-
- [<video height="200%abc"> mapping to <video> height property]
- expected: FAIL
-
- [<video height="200.25%"> mapping to <video> height property]
- expected: FAIL
-
- [<video height="200.%"> mapping to <video> height property]
- expected: FAIL
-
- [<video height="20.25e2"> mapping to <video> height property]
- expected: FAIL
-
- [<video height="20.25E2"> mapping to <video> height property]
- expected: FAIL
-
- [<video height="0"> mapping to <video> height property]
- expected: FAIL
-
- [<video height="0%"> mapping to <video> height property]
- expected: FAIL
-
- [<video height="0px"> mapping to <video> height property]
- expected: FAIL
-
[<object width="200"> mapping to <object> width property]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html.ini b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html.ini
index c86bf3cd3ca..2f34b7feca8 100644
--- a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.html.ini
@@ -11,33 +11,18 @@
[Create, append and test immediately: <img> with invalid trailing attributes width=50pp height=25xx]
expected: FAIL
- [Computed style test: img with {"width":"10","height":"20"}]
- expected: FAIL
-
[Computed style test: input with {"type":"image","width":"10","height":"20"}]
expected: FAIL
- [Computed style test: img with {"width":"0","height":"1"}]
- expected: FAIL
-
[Computed style test: input with {"type":"image","width":"0","height":"1"}]
expected: FAIL
- [Computed style test: img with {"width":"1","height":"0"}]
- expected: FAIL
-
[Computed style test: input with {"type":"image","width":"1","height":"0"}]
expected: FAIL
- [Computed style test: img with {"width":"0","height":"0"}]
- expected: FAIL
-
[Computed style test: input with {"type":"image","width":"0","height":"0"}]
expected: FAIL
- [Computed style test: img with {"width":"0.5","height":"1.5"}]
- expected: FAIL
-
[Computed style test: input with {"type":"image","width":"0.5","height":"1.5"}]
expected: FAIL
@@ -46,6 +31,3 @@
[Loaded images test: Error image with width and height attributes]
expected: FAIL
-
- [Loaded images test: Error image with width, height and alt attributes]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/picture-aspect-ratio.html.ini b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/picture-aspect-ratio.html.ini
index b896e0912e9..f42067cfd4d 100644
--- a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/picture-aspect-ratio.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/picture-aspect-ratio.html.ini
@@ -14,9 +14,6 @@
[If the <source> has only one of width/height, we don't get an aspect ratio, even if the <img> has both.]
expected: FAIL
- [If we don't have width/height on the source, we fall back to width/height on the <img>.]
- expected: FAIL
-
[If we only have one width/height attribute, we should get that attribute mapped but no aspect ratio, even if <img> has attributes.]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html.ini b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html.ini
index 91492a24a22..dc2bad9e1b4 100644
--- a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html.ini
@@ -5,20 +5,17 @@
[Computed style]
expected: FAIL
- [Computed style test: video with {"width":"10","height":"20"}]
- expected: FAIL
-
- [Computed style test: video with {"width":"0.5","height":"1.5"}]
+ [Video width and height attributes are used to infer aspect-ratio]
expected: FAIL
- [Computed style test: video with {"width":"0","height":"1"}]
+ [Aspect ratio for video with contain:size]
expected: FAIL
- [Computed style test: video with {"width":"1","height":"0"}]
+ [Aspect ratio for regular video]
expected: FAIL
- [Computed style test: video with {"width":"0","height":"0"}]
+ [Aspect ratio for regular video with width:auto]
expected: FAIL
- [Video width and height attributes are used to infer aspect-ratio]
+ [Aspect ratio for regular video with aspect-ratio:auto]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-intrinsic-width-height.html.ini b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-intrinsic-width-height.html.ini
index 94be05be34a..7b8eb526c87 100644
--- a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-intrinsic-width-height.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-intrinsic-width-height.html.ini
@@ -8,8 +8,5 @@
[only height attribute]
expected: FAIL
- [both width/height attributes]
- expected: FAIL
-
[both width/height attributes and style]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-controls-001.html.ini b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-controls-001.html.ini
index cc56e2bab22..229325b65c1 100644
--- a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-controls-001.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-controls-001.html.ini
@@ -1,2 +1,2 @@
[audio-controls-001.html]
- expected: FAIL
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-controls-002.html.ini b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-controls-002.html.ini
index 5d41c66850b..faf46b17767 100644
--- a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-controls-002.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-controls-002.html.ini
@@ -1,2 +1,2 @@
[audio-controls-002.html]
- expected: FAIL
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-without-controls.html.ini b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-without-controls.html.ini
index 664cc92be7f..3dd4d3a3304 100644
--- a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-without-controls.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-without-controls.html.ini
@@ -1,2 +1,2 @@
[audio-without-controls.html]
- expected: FAIL
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content/audio-controls-intrinsic-size.html.ini b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content/audio-controls-intrinsic-size.html.ini
new file mode 100644
index 00000000000..c2fa05a5e2f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/embedded-content/audio-controls-intrinsic-size.html.ini
@@ -0,0 +1,2 @@
+[audio-controls-intrinsic-size.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/audio_loop_base.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/audio_loop_base.html.ini
new file mode 100644
index 00000000000..3ef58d6ccbf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/audio_loop_base.html.ini
@@ -0,0 +1,2 @@
+[audio_loop_base.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/audio_loop_seek_to_eos.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/audio_loop_seek_to_eos.html.ini
new file mode 100644
index 00000000000..a2ddc0c20dc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/audio_loop_seek_to_eos.html.ini
@@ -0,0 +1,2 @@
+[audio_loop_seek_to_eos.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/audio_volume_check.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/audio_volume_check.html.ini
new file mode 100644
index 00000000000..d37abb63212
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/audio_volume_check.html.ini
@@ -0,0 +1,2 @@
+[audio_volume_check.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_canplay.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_canplay.html.ini
new file mode 100644
index 00000000000..0339bf9e008
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_canplay.html.ini
@@ -0,0 +1,2 @@
+[event_canplay.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_canplay_noautoplay.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_canplay_noautoplay.html.ini
new file mode 100644
index 00000000000..af14b8396b0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_canplay_noautoplay.html.ini
@@ -0,0 +1,2 @@
+[event_canplay_noautoplay.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_canplaythrough.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_canplaythrough.html.ini
new file mode 100644
index 00000000000..ef3e8a35bde
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_canplaythrough.html.ini
@@ -0,0 +1,2 @@
+[event_canplaythrough.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_canplaythrough_noautoplay.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_canplaythrough_noautoplay.html.ini
new file mode 100644
index 00000000000..f75dd6e8b29
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_canplaythrough_noautoplay.html.ini
@@ -0,0 +1,2 @@
+[event_canplaythrough_noautoplay.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadeddata.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadeddata.html.ini
new file mode 100644
index 00000000000..518967cd9a5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadeddata.html.ini
@@ -0,0 +1,2 @@
+[event_loadeddata.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadeddata_noautoplay.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadeddata_noautoplay.html.ini
new file mode 100644
index 00000000000..a7c85aa736c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadeddata_noautoplay.html.ini
@@ -0,0 +1,2 @@
+[event_loadeddata_noautoplay.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadedmetadata.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadedmetadata.html.ini
new file mode 100644
index 00000000000..ced1c32599c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadedmetadata.html.ini
@@ -0,0 +1,2 @@
+[event_loadedmetadata.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadedmetadata_noautoplay.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadedmetadata_noautoplay.html.ini
new file mode 100644
index 00000000000..fe1e95bfabb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadedmetadata_noautoplay.html.ini
@@ -0,0 +1,2 @@
+[event_loadedmetadata_noautoplay.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadstart.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadstart.html.ini
new file mode 100644
index 00000000000..9ac01543763
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadstart.html.ini
@@ -0,0 +1,2 @@
+[event_loadstart.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadstart_noautoplay.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadstart_noautoplay.html.ini
new file mode 100644
index 00000000000..3533dcdf9e9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_loadstart_noautoplay.html.ini
@@ -0,0 +1,2 @@
+[event_loadstart_noautoplay.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_order_canplay_canplaythrough.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_order_canplay_canplaythrough.html.ini
new file mode 100644
index 00000000000..6271984ab2f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_order_canplay_canplaythrough.html.ini
@@ -0,0 +1,2 @@
+[event_order_canplay_canplaythrough.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_order_canplay_playing.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_order_canplay_playing.html.ini
new file mode 100644
index 00000000000..9fb8daccc01
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_order_canplay_playing.html.ini
@@ -0,0 +1,2 @@
+[event_order_canplay_playing.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_order_loadedmetadata_loadeddata.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_order_loadedmetadata_loadeddata.html.ini
new file mode 100644
index 00000000000..85e19fa31eb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_order_loadedmetadata_loadeddata.html.ini
@@ -0,0 +1,2 @@
+[event_order_loadedmetadata_loadeddata.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_order_loadstart_progress.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_order_loadstart_progress.html.ini
new file mode 100644
index 00000000000..a29a11e6e5b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_order_loadstart_progress.html.ini
@@ -0,0 +1,2 @@
+[event_order_loadstart_progress.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_pause.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_pause.html.ini
new file mode 100644
index 00000000000..93752299607
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_pause.html.ini
@@ -0,0 +1,2 @@
+[event_pause.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_pause_noautoplay.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_pause_noautoplay.html.ini
new file mode 100644
index 00000000000..2e223a3ef18
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_pause_noautoplay.html.ini
@@ -0,0 +1,2 @@
+[event_pause_noautoplay.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_play.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_play.html.ini
new file mode 100644
index 00000000000..91695693b18
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_play.html.ini
@@ -0,0 +1,2 @@
+[event_play.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_play_noautoplay.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_play_noautoplay.html.ini
new file mode 100644
index 00000000000..2c36aac8918
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_play_noautoplay.html.ini
@@ -0,0 +1,2 @@
+[event_play_noautoplay.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_playing.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_playing.html.ini
new file mode 100644
index 00000000000..cc05bef3e94
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_playing.html.ini
@@ -0,0 +1,2 @@
+[event_playing.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_playing_noautoplay.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_playing_noautoplay.html.ini
new file mode 100644
index 00000000000..7c94d30869a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_playing_noautoplay.html.ini
@@ -0,0 +1,2 @@
+[event_playing_noautoplay.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_progress.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_progress.html.ini
new file mode 100644
index 00000000000..d61cad0ca4c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_progress.html.ini
@@ -0,0 +1,2 @@
+[event_progress.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_progress_noautoplay.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_progress_noautoplay.html.ini
new file mode 100644
index 00000000000..6f77c670d8d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_progress_noautoplay.html.ini
@@ -0,0 +1,2 @@
+[event_progress_noautoplay.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_timeupdate.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_timeupdate.html.ini
new file mode 100644
index 00000000000..9ee5c01b36f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_timeupdate.html.ini
@@ -0,0 +1,2 @@
+[event_timeupdate.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_timeupdate_noautoplay.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_timeupdate_noautoplay.html.ini
new file mode 100644
index 00000000000..d55a13de4dd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/event_timeupdate_noautoplay.html.ini
@@ -0,0 +1,2 @@
+[event_timeupdate_noautoplay.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-currentSrc.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-currentSrc.html.ini
index d166ba7d290..9814aab271f 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-currentSrc.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-currentSrc.html.ini
@@ -1,5 +1,4 @@
[resource-selection-currentSrc.html]
- expected: ERROR
+ expected: CRASH
[Test currentSrc behaviour in various playback scenarios]
expected: TIMEOUT
-
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini
index aa1dd3eced7..50ed324ab02 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini
@@ -1,4 +1,5 @@
[canPlayType.html]
+ expected: CRASH
[video/mp4; codecs="mp4v.20.8" (optional)]
expected: PRECONDITION_FAILED
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/networkState_during_loadstart.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/networkState_during_loadstart.html.ini
new file mode 100644
index 00000000000..decebd9a276
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/networkState_during_loadstart.html.ini
@@ -0,0 +1,2 @@
+[networkState_during_loadstart.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/networkState_during_progress.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/networkState_during_progress.html.ini
new file mode 100644
index 00000000000..223bd9044cb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/networkState_during_progress.html.ini
@@ -0,0 +1,2 @@
+[networkState_during_progress.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/networkState_initial.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/networkState_initial.html.ini
new file mode 100644
index 00000000000..ab3b208faad
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/networkState_initial.html.ini
@@ -0,0 +1,2 @@
+[networkState_initial.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/paused_false_during_play.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/paused_false_during_play.html.ini
new file mode 100644
index 00000000000..737e86c1bc8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/paused_false_during_play.html.ini
@@ -0,0 +1,2 @@
+[paused_false_during_play.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/paused_true_during_pause.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/paused_true_during_pause.html.ini
new file mode 100644
index 00000000000..8bbfe437424
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/paused_true_during_pause.html.ini
@@ -0,0 +1,2 @@
+[paused_true_during_pause.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/preload_reflects_none_autoplay.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/preload_reflects_none_autoplay.html.ini
new file mode 100644
index 00000000000..9916b6d53ae
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/preload_reflects_none_autoplay.html.ini
@@ -0,0 +1,2 @@
+[preload_reflects_none_autoplay.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_canplay.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_canplay.html.ini
new file mode 100644
index 00000000000..8f28135581f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_canplay.html.ini
@@ -0,0 +1,2 @@
+[readyState_during_canplay.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_canplaythrough.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_canplaythrough.html.ini
new file mode 100644
index 00000000000..ac67e8b6e18
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_canplaythrough.html.ini
@@ -0,0 +1,2 @@
+[readyState_during_canplaythrough.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_loadeddata.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_loadeddata.html.ini
new file mode 100644
index 00000000000..ac5d1600bbf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_loadeddata.html.ini
@@ -0,0 +1,2 @@
+[readyState_during_loadeddata.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_loadedmetadata.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_loadedmetadata.html.ini
new file mode 100644
index 00000000000..6cea5087fe0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_loadedmetadata.html.ini
@@ -0,0 +1,2 @@
+[readyState_during_loadedmetadata.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_playing.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_playing.html.ini
new file mode 100644
index 00000000000..5ba52a45d03
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_during_playing.html.ini
@@ -0,0 +1,2 @@
+[readyState_during_playing.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_initial.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_initial.html.ini
new file mode 100644
index 00000000000..467abe00573
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/readyState_initial.html.ini
@@ -0,0 +1,2 @@
+[readyState_initial.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/src_reflects_attribute_not_source_elements.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/src_reflects_attribute_not_source_elements.html.ini
new file mode 100644
index 00000000000..0c07bee4b92
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/src_reflects_attribute_not_source_elements.html.ini
@@ -0,0 +1,2 @@
+[src_reflects_attribute_not_source_elements.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/user-interface/muted.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/user-interface/muted.html.ini
index 88f69a363a7..5ba870a3201 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/user-interface/muted.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/user-interface/muted.html.ini
@@ -1,4 +1,5 @@
[muted.html]
+ expected: CRASH
[getting video.muted with muted="" (script-created)]
expected: FAIL
@@ -10,4 +11,3 @@
[getting audio.muted with muted="" (script-created)]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-audio-element/audio-play-in-inactive-document-crash.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-audio-element/audio-play-in-inactive-document-crash.html.ini
new file mode 100644
index 00000000000..2f2425b5f54
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-audio-element/audio-play-in-inactive-document-crash.html.ini
@@ -0,0 +1,2 @@
+[audio-play-in-inactive-document-crash.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-audio-element/audio_001.htm.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-audio-element/audio_001.htm.ini
new file mode 100644
index 00000000000..654e6140acf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-audio-element/audio_001.htm.ini
@@ -0,0 +1,2 @@
+[audio_001.htm]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-audio-element/audio_002.htm.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-audio-element/audio_002.htm.ini
new file mode 100644
index 00000000000..f293c4e211e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-audio-element/audio_002.htm.ini
@@ -0,0 +1,2 @@
+[audio_002.htm]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-embed-element/embed-ignored-in-media-element.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-embed-element/embed-ignored-in-media-element.html.ini
new file mode 100644
index 00000000000..f178bd061c1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-embed-element/embed-ignored-in-media-element.html.ini
@@ -0,0 +1,2 @@
+[embed-ignored-in-media-element.html]
+ expected: CRASH
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 ff6467094b8..ccdaf8d61b2 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,3 +1,3 @@
[iframe_sandbox_popups_nonescaping-3.html]
[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-object-element/object-ignored-in-media-element.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-object-element/object-ignored-in-media-element.html.ini
new file mode 100644
index 00000000000..a1029adffbf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-object-element/object-ignored-in-media-element.html.ini
@@ -0,0 +1,2 @@
+[object-ignored-in-media-element.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini
index ec479176724..987cc0447c7 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini
@@ -176,9 +176,6 @@
[multipart/form-data: 0x00 in name (normal form)]
expected: FAIL
- [multipart/form-data: Basic test (formdata event)]
- expected: FAIL
-
[multipart/form-data: non-ASCII in name and value (normal form)]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/grouping-content/the-ol-element/grouping-ol.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/grouping-content/the-ol-element/grouping-ol.html.ini
index 7d2ad021a79..c0203efa1cf 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/grouping-content/the-ol-element/grouping-ol.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/grouping-content/the-ol-element/grouping-ol.html.ini
@@ -1,5 +1,6 @@
[grouping-ol.html]
type: testharness
+ expected: CRASH
['reversed' property should be defined on OL.]
expected: FAIL
@@ -83,4 +84,3 @@
[Deleting child element from reversed list does not change start value]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-active-document.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-active-document.html.ini
new file mode 100644
index 00000000000..3518ca4269d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-active-document.html.ini
@@ -0,0 +1,3 @@
+[dialog-active-document.html]
+ [showModal should throw when the document isn't active]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-audio-video-crash.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-audio-video-crash.html.ini
new file mode 100644
index 00000000000..5dac0a23c1a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-audio-video-crash.html.ini
@@ -0,0 +1,2 @@
+[dialog-audio-video-crash.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html.ini
index 5f3d94e5acc..e4406c4e3b1 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html.ini
@@ -29,3 +29,6 @@
[Although the document is not attached to any pages, showModal() should execute as normal.]
expected: FAIL
+
+ [When the document is not attached to any pages, showModal() should throw.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/popovers/popover-active-document.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/popovers/popover-active-document.html.ini
new file mode 100644
index 00000000000..8ddd6a4539e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/popovers/popover-active-document.html.ini
@@ -0,0 +1,3 @@
+[popover-active-document.html]
+ [showPopover should throw when the document isn't active]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/popovers/popover-minimum-role.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/popovers/popover-minimum-role.html.ini
new file mode 100644
index 00000000000..1ae0c3961a0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/popovers/popover-minimum-role.html.ini
@@ -0,0 +1,6 @@
+[popover-minimum-role.html]
+ [If specified on an element with an implicit role of generic, then the element's role instead maps to group.]
+ expected: FAIL
+
+ [Dynamic changes to popover attribute should change the role.]
+ expected: FAIL
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/resource-timing/initiator-type/audio.html.ini b/tests/wpt/meta-legacy-layout/resource-timing/initiator-type/audio.html.ini
new file mode 100644
index 00000000000..7dbabf4700d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/resource-timing/initiator-type/audio.html.ini
@@ -0,0 +1,2 @@
+[audio.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/resource-timing/internal-resources-not-counted.html.ini b/tests/wpt/meta-legacy-layout/resource-timing/internal-resources-not-counted.html.ini
new file mode 100644
index 00000000000..16bd2460fd4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/resource-timing/internal-resources-not-counted.html.ini
@@ -0,0 +1,2 @@
+[internal-resources-not-counted.html]
+ expected: CRASH
diff --git a/tests/wpt/meta/FileAPI/BlobURL/cross-partition-navigation.tentative.https.html.ini b/tests/wpt/meta/FileAPI/BlobURL/cross-partition-navigation.tentative.https.html.ini
index 4b71ba5969b..348eebd4eed 100644
--- a/tests/wpt/meta/FileAPI/BlobURL/cross-partition-navigation.tentative.https.html.ini
+++ b/tests/wpt/meta/FileAPI/BlobURL/cross-partition-navigation.tentative.https.html.ini
@@ -1,3 +1,13 @@
[cross-partition-navigation.tentative.https.html]
+ expected: TIMEOUT
[Blob URL navigation should enforce noopener for a cross-top-level-site navigation]
expected: FAIL
+
+ [Blob URL window.open should enforce noopener for a cross-top-level-site navigation]
+ expected: FAIL
+
+ [Blob URL link click should enforce noopener for a cross-top-level-site navigation]
+ expected: FAIL
+
+ [Blob URL area element click should enforce noopener for a cross-top-level-site navigation]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json
index 098e27f4e4d..ed260c8f6db 100644
--- a/tests/wpt/meta/MANIFEST.json
+++ b/tests/wpt/meta/MANIFEST.json
@@ -2905,6 +2905,13 @@
{}
]
],
+ "container-list-items-crash.html": [
+ "dcb4273accc14981a3ec9403f429670e3d15b2e3",
+ [
+ null,
+ {}
+ ]
+ ],
"counters-container-crash.html": [
"d195db937cef83b86292cf9e15beba77ca9a9df7",
[
@@ -2976,6 +2983,13 @@
null,
{}
]
+ ],
+ "style-containment-counter-crash.html": [
+ "c9d642bd38310ceb35ca21c48cdd02c754464f3d",
+ [
+ null,
+ {}
+ ]
]
},
"css-masking": {
@@ -4364,6 +4378,13 @@
null,
{}
]
+ ],
+ "shadow-reassign-dynamic-005-crash.html": [
+ "9e4f002cfec32cab44a4fe3b879a072f64a025bf",
+ [
+ null,
+ {}
+ ]
]
},
"css-scroll-anchoring": {
@@ -5226,7 +5247,7 @@
},
"css-values": {
"attr-crash.html": [
- "012dad91cf8f9e93fb93e07ff69a7f08b9e26b31",
+ "8ca828faab4d1f03b36c3314791e42f06a6abe7f",
[
null,
{}
@@ -6849,20 +6870,6 @@
null,
{}
]
- ],
- "chrome-1312699.html": [
- "c783b0d9cc9634654f59654945a1bdcf38539cc8",
- [
- null,
- {}
- ]
- ],
- "content-visibility-crash.html": [
- "63111d03e3fab4673ec4d14cff6ad5737fd4f39c",
- [
- null,
- {}
- ]
]
}
},
@@ -7376,6 +7383,22 @@
]
},
"the-select-element": {
+ "customizable-select": {
+ "nested-select-crash.html": [
+ "dea01de80be0cfc9a08b7c325319ed95adba879b",
+ [
+ null,
+ {}
+ ]
+ ],
+ "selectedoption-in-option-crash.html": [
+ "d619b8dcd921d9911db9dfed5b0960ded9c291ee",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
"select-add-option-crash.html": [
"78e9e7de53fa395456ed2b9a5a97949478477214",
[
@@ -25305,6 +25328,22 @@
]
]
},
+ "resize-observer": {
+ "resize-loop-cancel-error-notification-console-manual.tentative.html": [
+ "2c0fe2c0f2875f5db5ffe47d0f072b3e1bff9dd4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "resize-loop-error-notification-console-manual.tentative.html": [
+ "ef7dba83866ad067f0df42d0ad933c97986d53a0",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
"screen-orientation": {
"page-visibility-manual.html": [
"cc63279217806ff261195be2958194a5719cbaa1",
@@ -36855,7 +36894,7 @@
},
"avif": {
"animated-avif-timeout.html": [
- "0970c994d34c9624ee07f0f7c44c3f5df93b1321",
+ "e89b9a8e06c39b3820cae8562f697ac0ad7bcfcf",
[
null,
[
@@ -200360,6 +200399,84 @@
]
},
"text-box-trim": {
+ "border-padding-001.html": [
+ "9c25c42a1def684b364e98dc9d6233cd5c700519",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "border-padding-002.html": [
+ "59a071771ae94f646242a063410ec575fd441c93",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "border-padding-003.html": [
+ "a114612906de9e2040883119af87f27be654e980",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "border-padding-004.html": [
+ "dc9513b54df0e6ea18632f1c352dc4c63a004070",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "out-of-flow-001.html": [
+ "b81eb775d6400e45ef264296d96ce5efa85734f1",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "out-of-flow-002.html": [
+ "6bcd38cd686813f779e3114f176c8e71aa3e37d4",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"text-box-trim-accumulation-001.html": [
"cdcc86b0a9e5d37ac3b830116888844f31c6a4f6",
[
@@ -231222,6 +231339,19 @@
{}
]
],
+ "shadow-reassign-dynamic-006.html": [
+ "ace701eea93f5b098505266c23420e6644aa9fb2",
+ [
+ null,
+ [
+ [
+ "/css/css-scoping/shadow-reassign-dynamic-006-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"shadow-root-insert-into-document.html": [
"a3b89be389a780dd53a1b53224810ecb4866c287",
[
@@ -248957,6 +249087,19 @@
{}
]
],
+ "segment-break-transformation-ignorable-1.html": [
+ "a62d4b396a8247d899e4310482f60a29a0997fe5",
+ [
+ null,
+ [
+ [
+ "/css/css-text/line-breaking/segment-break-transformation-ignorable-1-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"segment-break-transformation-removable-1.html": [
"7c2b820bee0022c8ec93ca9c52f52e3f697af883",
[
@@ -265809,6 +265952,19 @@
{}
]
],
+ "text-shadow-emoji-transparent.html": [
+ "8ea04ab593342a95cd954798478b1d583c7952bb",
+ [
+ null,
+ [
+ [
+ "/css/css-text-decor/text-shadow/text-shadow-emoji-transparent-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"textindent.html": [
"4b66f9dcb8916a125bced71bec37d757a5521af5",
[
@@ -290460,20 +290616,7 @@
]
],
"attr-color-invalid-cast.html": [
- "d538eebdd9979bfda2398e46de72748dc0099810",
- [
- null,
- [
- [
- "/css/css-values/reference/200-200-green.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "attr-color-invalid-fallback.html": [
- "9e016d1630d37b3af41fbbd1f1231341ee54afcf",
+ "970535b003784b86fdd172d637833a30ebd69510",
[
null,
[
@@ -290486,7 +290629,7 @@
]
],
"attr-color-valid.html": [
- "8817e6b94c885b341fba262a4934d3dc2d8e3d9f",
+ "5a4608989c9b5c7740bfc573013928a9329029eb",
[
null,
[
@@ -290499,7 +290642,7 @@
]
],
"attr-in-max.html": [
- "314ed630b787f4b45169d1b0eb5cb1179f415832",
+ "f34f5017e76e74b89ccd7e1b84d8b088e3f1ac7d",
[
null,
[
@@ -290511,26 +290654,13 @@
{}
]
],
- "attr-invalid-type-001.html": [
- "1f88c37c64038343b17d0960326c63fb8e625340",
+ "attr-in-slotted.html": [
+ "54c792092a6dbd69defdb0aa552bfd8164dc8efd",
[
null,
[
[
- "/css/css-values/reference/200-200-green.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "attr-invalid-type-002.html": [
- "dbdac8a4ba1cf15e583684c9c2b3ac158c0af614",
- [
- null,
- [
- [
- "/css/css-values/reference/200-200-green.html",
+ "/css/css-values/attr-in-slotted-ref.html",
"=="
]
],
@@ -290538,20 +290668,7 @@
]
],
"attr-length-invalid-cast.html": [
- "930832363605fa85651b075f17d6c109535c0b41",
- [
- null,
- [
- [
- "/css/css-values/reference/200-200-green.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "attr-length-invalid-fallback.html": [
- "e68fe7a47015c5868e0efb78c26f44e17f3c8764",
+ "04910df05b8164921e572f31a16f84e28a2ab172",
[
null,
[
@@ -290564,7 +290681,7 @@
]
],
"attr-length-valid-zero-nofallback.html": [
- "b8a042fd40319aaa128db5b34384470c96c915fe",
+ "f91121c07009769d8e09cfb6324f5484d07b50f4",
[
null,
[
@@ -290577,7 +290694,7 @@
]
],
"attr-length-valid-zero.html": [
- "fcdebc6fad73eb0d9204a18d6550f6ded9743066",
+ "19ece66a9dc95ca5ea1e2b9d0dba70c7313b40ac",
[
null,
[
@@ -290590,7 +290707,7 @@
]
],
"attr-length-valid.html": [
- "c78258ffe608f3f327fd7db8eb8ce181832187d4",
+ "f61c9aa4bef59ac347f9ec4fee4ffb500a45546e",
[
null,
[
@@ -290615,45 +290732,6 @@
{}
]
],
- "attr-px-invalid-cast.html": [
- "54b43b4076d3bef14fbd0c76a42e21a1b7105c27",
- [
- null,
- [
- [
- "/css/css-values/reference/200-200-green.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "attr-px-invalid-fallback.html": [
- "27dfc10240379d3cf50af54319dcf769a2af9083",
- [
- null,
- [
- [
- "/css/css-values/reference/200-200-green.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "attr-px-valid.html": [
- "ec96924a6805bc6157a3845c12b630aed9e52fa8",
- [
- null,
- [
- [
- "/css/css-values/reference/200-200-green.html",
- "=="
- ]
- ],
- {}
- ]
- ],
"calc-background-image-gradient-1.html": [
"f7d39be8d3d2d682e5f3fc4e77290d88b5591bf1",
[
@@ -323875,6 +323953,136 @@
{}
]
],
+ "negated-always-matches-negated-first-of-type-when-ancestor-changes.html": [
+ "33b65e6fb676f9be7606fb33ef5182ff47e06751",
+ [
+ null,
+ [
+ [
+ "/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "negated-always-matches-negated-last-of-type-when-ancestor-changes.html": [
+ "99c3982759003cc78580c1ecf2b5b83e1e4cb65f",
+ [
+ null,
+ [
+ [
+ "/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "negated-is-always-matches-negated-first-of-type-when-ancestor-changes.html": [
+ "6ed1f8c0e04d3c2465ee0d3f332202c3ed796047",
+ [
+ null,
+ [
+ [
+ "/css/selectors/invalidation/negated-is-always-matches-negated-first-of-type-when-ancestor-changes-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "negated-is-always-matches-negated-last-of-type-when-ancestor-changes.html": [
+ "500fd3aa4eeb585345fbcfd00081884e8af58194",
+ [
+ null,
+ [
+ [
+ "/css/selectors/invalidation/negated-is-always-matches-negated-last-of-type-when-ancestor-changes-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "negated-is-never-matches-negated-first-of-type-when-ancestor-changes.html": [
+ "e9d66755c775a3ea6540235ada3f6d057a251230",
+ [
+ null,
+ [
+ [
+ "/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "negated-is-never-matches-negated-last-of-type-when-ancestor-changes.html": [
+ "7a2c0f2022219ed66267d9c26f703f9df77c903d",
+ [
+ null,
+ [
+ [
+ "/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "negated-negated-first-of-type-when-ancestor-changes.html": [
+ "7e5376fc31f15febe5db2202e915427ea2e4cc5d",
+ [
+ null,
+ [
+ [
+ "/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "negated-negated-last-of-type-when-ancestor-changes.html": [
+ "67d35f94dfd173d54b42b42180e4c2e51499b560",
+ [
+ null,
+ [
+ [
+ "/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "negated-never-matches-negated-first-of-type-when-ancestor-changes.html": [
+ "c3064f6726dcbc486c88298a7aa1ca5a619ef495",
+ [
+ null,
+ [
+ [
+ "/css/selectors/invalidation/negated-never-matches-negated-first-of-type-when-ancestor-changes-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "negated-never-matches-negated-last-of-type-when-ancestor-changes.html": [
+ "9cdd0e4f407c914285896710143a287622d989ae",
+ [
+ null,
+ [
+ [
+ "/css/selectors/invalidation/negated-never-matches-negated-last-of-type-when-ancestor-changes-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"negated-nth-child-when-ancestor-changes.html": [
"0d76146f19ad312d42a09cd89c14824424c193d3",
[
@@ -328105,62 +328313,6 @@
]
]
},
- "fullscreen": {
- "rendering": {
- "backdrop-iframe.html": [
- "dbdf9c841a4685160987ed5df0ba5e632b754669",
- [
- null,
- [
- [
- "/fullscreen/rendering/backdrop-green-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "backdrop-inherit.html": [
- "3a38dc4c815269bcba1fb570c1b0ee1a06ff8b2e",
- [
- null,
- [
- [
- "/fullscreen/rendering/backdrop-green-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "backdrop-object.html": [
- "be285b76124def6099b9954d0125117ed65a4917",
- [
- null,
- [
- [
- "/fullscreen/rendering/backdrop-object-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fullscreen-root-fills-page.html": [
- "e2a6217346db1a4f7850446760f8be43532fa4d2",
- [
- null,
- [
- [
- "/fullscreen/rendering/fullscreen-root-fills-page-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ]
- }
- },
"html": {
"browsers": {
"sandboxing": {
@@ -328225,7 +328377,7 @@
]
],
"2d.composite.grid.filter.no_shadow.drawImage.html": [
- "8e6b95ae2210375f6e0db2cfa408bf4a7694deb3",
+ "acf9892ec37555645872fc61f225e053a9d98b4e",
[
null,
[
@@ -328241,11 +328393,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -328254,7 +328406,7 @@
]
],
"2d.composite.grid.filter.no_shadow.fillRect.html": [
- "5dca89e3c12b884f9d226d9b6b8f10f1a67d68ae",
+ "be37d492581c7147c239c3b009bc07c2a6b64ce5",
[
null,
[
@@ -328270,11 +328422,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -328283,7 +328435,7 @@
]
],
"2d.composite.grid.filter.no_shadow.pattern.html": [
- "6b3c4c6a5890f555e3831ea7a27c5896a2f08b5f",
+ "7e68be70eaa9ccbc2ff6ba9a44af57bd842e2b74",
[
null,
[
@@ -328299,11 +328451,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -328312,7 +328464,7 @@
]
],
"2d.composite.grid.filter.shadow.drawImage.html": [
- "f6872b221274b543dd16aa7568dc9f5b36da3791",
+ "918debe2e4097230a7b0e2adb9966614f1cabec0",
[
null,
[
@@ -328328,11 +328480,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -328341,7 +328493,7 @@
]
],
"2d.composite.grid.filter.shadow.fillRect.html": [
- "1c68c0e454059db077a2469143608ad7f95cdb7c",
+ "363f9ed454efa0ab4fc5409fe907bb477041793a",
[
null,
[
@@ -328357,11 +328509,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -328370,7 +328522,7 @@
]
],
"2d.composite.grid.filter.shadow.pattern.html": [
- "1e3f14fb9a3c1b62ec7b21c4ac7152d958811616",
+ "18ea3a473d8c9b001e3ee455d734c4ebd52e1559",
[
null,
[
@@ -328386,11 +328538,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -328399,7 +328551,7 @@
]
],
"2d.composite.grid.no_filter.no_shadow.drawImage.html": [
- "31e0fba79189df8fab876b886a278509abbc8581",
+ "cd9ad95b92c2913f03dacfeb4f9170956dcabc0f",
[
null,
[
@@ -328415,11 +328567,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -328428,7 +328580,7 @@
]
],
"2d.composite.grid.no_filter.no_shadow.fillRect.html": [
- "e14c336868ecdef5024ba8fd2f9d4b6bdb202d25",
+ "f007fd3fc7e16a3c52937295c5bbbb270b2128e9",
[
null,
[
@@ -328444,11 +328596,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -328457,7 +328609,7 @@
]
],
"2d.composite.grid.no_filter.no_shadow.pattern.html": [
- "6f8159466dbd72bf6ae879484d2eb2a2b5db00fa",
+ "5362b2f1f5348b6f340b3d7224f132c746e42c0c",
[
null,
[
@@ -328473,11 +328625,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -328486,7 +328638,7 @@
]
],
"2d.composite.grid.no_filter.shadow.drawImage.html": [
- "84527f5a2832d77cbd1e358ebee7bb9fbf2ae483",
+ "e77309135d69d819e08a3f695b0567b166f9b325",
[
null,
[
@@ -328502,11 +328654,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -328515,7 +328667,7 @@
]
],
"2d.composite.grid.no_filter.shadow.fillRect.html": [
- "46bc366c8ac0cdad497c6145db3c8b16e96ee80e",
+ "c82ca80cadfb0519051ef0762fc4388773b10286",
[
null,
[
@@ -328531,11 +328683,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -328544,7 +328696,7 @@
]
],
"2d.composite.grid.no_filter.shadow.pattern.html": [
- "e636330c59f5b3b37f790c060e729730640b37af",
+ "bc7d0134b344a0fb6cf108a2c35bf848e2557182",
[
null,
[
@@ -328560,11 +328712,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -330984,6 +331136,19 @@
{}
]
],
+ "2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html": [
+ "fac5f6f2b67163d652e4ddca6680c39dea3ae754",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"2d.text.measure.text-clusters-rendering-font-change.tentative.html": [
"a927cfcd33094f502c3d46fd88da7bd26381256b",
[
@@ -331054,7 +331219,7 @@
"offscreen": {
"compositing": {
"2d.composite.grid.filter.no_shadow.drawImage.html": [
- "72b23aeeafb87787e402a298b2b9c6b87a6a1cb5",
+ "5a90053e8f681b2daf00bf143f46d729b748ce50",
[
null,
[
@@ -331070,11 +331235,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331083,7 +331248,7 @@
]
],
"2d.composite.grid.filter.no_shadow.drawImage.w.html": [
- "89f4dba75b570cc5ff514cd02d52b7597a3c9dfe",
+ "d010912cd06d497633726f0cdc9c7bb993b72615",
[
null,
[
@@ -331099,11 +331264,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331112,7 +331277,7 @@
]
],
"2d.composite.grid.filter.no_shadow.fillRect.html": [
- "3f8fdc8164d1fc971fd30d881d4a7ad4d28580fc",
+ "6bad129784f26b485759f0ae5bf66c3a14c129e2",
[
null,
[
@@ -331128,11 +331293,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331141,7 +331306,7 @@
]
],
"2d.composite.grid.filter.no_shadow.fillRect.w.html": [
- "37839bf8a8b460c1a500c6ba05047210edc3120f",
+ "0c93086b54c89cdcb5d1e7ea58006cd85ad13494",
[
null,
[
@@ -331157,11 +331322,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331170,7 +331335,7 @@
]
],
"2d.composite.grid.filter.no_shadow.pattern.html": [
- "0bb970ab3f84683b2ce40a140bd7288c13112838",
+ "47cd363f06ee8c030c7e85c38292f268c97ba519",
[
null,
[
@@ -331186,11 +331351,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331199,7 +331364,7 @@
]
],
"2d.composite.grid.filter.no_shadow.pattern.w.html": [
- "81d0a8e6a693ef89a730a7bbc12bddd09c0a8fc6",
+ "7f07a2c76451122e9ccb531f0839ebf8676f3976",
[
null,
[
@@ -331215,11 +331380,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331228,7 +331393,7 @@
]
],
"2d.composite.grid.filter.shadow.drawImage.html": [
- "5c9e992c7ce72164d04615a9d4fda9b629b21a85",
+ "fc8f2e20162c69328476d9041129595041353493",
[
null,
[
@@ -331244,11 +331409,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331257,7 +331422,7 @@
]
],
"2d.composite.grid.filter.shadow.drawImage.w.html": [
- "08e66abd46439ecb07fa8312fc5c0dad1bd28854",
+ "fb417b9c57610a1a13c89ee18f67cf9486465af3",
[
null,
[
@@ -331273,11 +331438,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331286,7 +331451,7 @@
]
],
"2d.composite.grid.filter.shadow.fillRect.html": [
- "0f6b88fd5e9e16e69213bdeb4dc66bb49c21427d",
+ "995bc9d65e62fe85fc4adec2b556ee3e8ec62541",
[
null,
[
@@ -331302,11 +331467,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331315,7 +331480,7 @@
]
],
"2d.composite.grid.filter.shadow.fillRect.w.html": [
- "f754f538b560b5bfd95539d4fd2033f3dbbea34a",
+ "78c509f40f3c0c125d93f9b54a33feb972f8e4fa",
[
null,
[
@@ -331331,11 +331496,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331344,7 +331509,7 @@
]
],
"2d.composite.grid.filter.shadow.pattern.html": [
- "e89aff9196dc194b5a4dd12a41f24312a0173e3d",
+ "f1bc4c64be79f6e25eebd61c634fd1ce8109e296",
[
null,
[
@@ -331360,11 +331525,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331373,7 +331538,7 @@
]
],
"2d.composite.grid.filter.shadow.pattern.w.html": [
- "79f7aab01cd4e14509bc951dd3e67bdfb1e60667",
+ "de144bfaa6410a9130276e7639020bd83fe80114",
[
null,
[
@@ -331389,11 +331554,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331402,7 +331567,7 @@
]
],
"2d.composite.grid.no_filter.no_shadow.drawImage.html": [
- "54a53b46576b55657183a59248937405efe3031a",
+ "5aac6d6b212d3910bc465d2755ffeeb6d8842c1c",
[
null,
[
@@ -331418,11 +331583,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331431,7 +331596,7 @@
]
],
"2d.composite.grid.no_filter.no_shadow.drawImage.w.html": [
- "4750ed210ffe98e6b7de2443764fd648e69e1254",
+ "67fdbabce2ea11eaa40e7ff8f94701c617b481cd",
[
null,
[
@@ -331447,11 +331612,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331460,7 +331625,7 @@
]
],
"2d.composite.grid.no_filter.no_shadow.fillRect.html": [
- "e69af8a79a92adbc0b3eff5e27a6295e873180f4",
+ "c1001d778158c9de4d95176917321141c2a4f01a",
[
null,
[
@@ -331476,11 +331641,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331489,7 +331654,7 @@
]
],
"2d.composite.grid.no_filter.no_shadow.fillRect.w.html": [
- "0cfc23ab86a5d823f695bc11d1ac2a24a94feb5d",
+ "fcc39718c39980b1c0e1c376f737d1d5e39016a0",
[
null,
[
@@ -331505,11 +331670,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331518,7 +331683,7 @@
]
],
"2d.composite.grid.no_filter.no_shadow.pattern.html": [
- "b6008b7c79f3106750ec7e07bdf1d98582e02843",
+ "b977eb0bec3e239ebd7cfc8ab925fe0f1ecc729c",
[
null,
[
@@ -331534,11 +331699,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331547,7 +331712,7 @@
]
],
"2d.composite.grid.no_filter.no_shadow.pattern.w.html": [
- "ef952ce12cdaa3ea260cbc0ff4aa0ed4de3ea68e",
+ "9e9eb0229157b2315dfbe83e90e756cd5d42ae4b",
[
null,
[
@@ -331563,11 +331728,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331576,7 +331741,7 @@
]
],
"2d.composite.grid.no_filter.shadow.drawImage.html": [
- "d25f183aeb8bc510e76a09c5571332e066c30aed",
+ "382f3abeb195fe5575cfa5f4980262ad0c9f960e",
[
null,
[
@@ -331592,11 +331757,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331605,7 +331770,7 @@
]
],
"2d.composite.grid.no_filter.shadow.drawImage.w.html": [
- "c66b467d627df12414affa25f21a23d6088cff6a",
+ "56db72864d3f1e5af63a5a55392b588b62313c96",
[
null,
[
@@ -331621,11 +331786,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331634,7 +331799,7 @@
]
],
"2d.composite.grid.no_filter.shadow.fillRect.html": [
- "3fdbfa72cafc7fe9a5e2e8eaf41662fd2c4013d8",
+ "bb58344fcbd6c3410cd3f6021e91cf2a446d5571",
[
null,
[
@@ -331650,11 +331815,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331663,7 +331828,7 @@
]
],
"2d.composite.grid.no_filter.shadow.fillRect.w.html": [
- "519631612f05abd4f078c6d6a632dcbfb4913ace",
+ "3586c806cd4e32efd891b4b6a638635d7106caf9",
[
null,
[
@@ -331679,11 +331844,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331692,7 +331857,7 @@
]
],
"2d.composite.grid.no_filter.shadow.pattern.html": [
- "d9df6be84f174dde2a3d1f4b957cf4f8315d32ad",
+ "9703ea138d0baac48fc5e21f2addb4c40c47f77f",
[
null,
[
@@ -331708,11 +331873,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -331721,7 +331886,7 @@
]
],
"2d.composite.grid.no_filter.shadow.pattern.w.html": [
- "5c698e8c7603057f8e6207dcca9396aae585b43e",
+ "318d2b971e446693cc616090c15427659a68981b",
[
null,
[
@@ -331737,11 +331902,11 @@
[
[
0,
- 2
+ 3
],
[
0,
- 10210
+ 25392
]
]
]
@@ -334473,6 +334638,32 @@
{}
]
],
+ "2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html": [
+ "8d304cb1a78dbae42ff19aeb83926570198396aa",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.w.html": [
+ "76f61dad315a125da4b096c1181ef1b8d0aa30fd",
+ [
+ null,
+ [
+ [
+ "/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"2d.text.measure.text-clusters-rendering-font-change.tentative.html": [
"c8e3383a4623ae1ba9b9c76fd5073a4defb36a3b",
[
@@ -343252,8 +343443,8 @@
},
"infrastructure": {
"assumptions": {
- "ahem-ref.html": [
- "9116232620fb1b65edd8b89ab86a2269158860e5",
+ "ahem.html": [
+ "0607f9afb64f6f7638fab95abcf49208175c7036",
[
null,
[
@@ -343265,19 +343456,6 @@
{}
]
],
- "ahem.html": [
- "068c1d4dee605a7a9f3ed4a0fd282779449712bb",
- [
- null,
- [
- [
- "/infrastructure/assumptions/ahem-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
"blank.html": [
"6d8da5e89ce644d74790ef97856709cc9bfe3d80",
[
@@ -344110,7 +344288,7 @@
},
"jpegxl": {
"3x3_jpeg_recompression.html": [
- "f28fca8fdce33b39ace86403a348195f910de481",
+ "7d484635b53d432fbbb47315a3ceaad7a3753a83",
[
null,
[
@@ -344130,7 +344308,7 @@
],
[
0,
- 9
+ 275625
]
]
]
@@ -344139,7 +344317,7 @@
]
],
"3x3_srgb_lossless.html": [
- "589f11c68c4152eea3d395104c0d5ce4bbefbf4d",
+ "da70067ca670ebe58863af32296dbf3ed3ee2e23",
[
null,
[
@@ -344159,7 +344337,7 @@
],
[
0,
- 9
+ 275625
]
]
]
@@ -344168,7 +344346,7 @@
]
],
"3x3_srgb_lossy.html": [
- "3a92b2b7301d35570b4349513ccc1e1318a8ca8f",
+ "83cd8eec3519ae1c89397ea666012e946f90441a",
[
null,
[
@@ -344188,7 +344366,7 @@
],
[
0,
- 9
+ 275625
]
]
]
@@ -344197,7 +344375,7 @@
]
],
"3x3a_srgb_lossless.html": [
- "1de61a5ba2713b0fc876305666069cb58299de29",
+ "47c297fd46f419095f0fdf4dd1db1accf3d2e978",
[
null,
[
@@ -344217,7 +344395,7 @@
],
[
0,
- 9
+ 275625
]
]
]
@@ -344226,7 +344404,7 @@
]
],
"3x3a_srgb_lossy.html": [
- "59583a11a9aab8bf4114bad2de3f405dffc3f0cd",
+ "894b4ddf7bc8979d02d6a3d516e2de880152b067",
[
null,
[
@@ -344246,7 +344424,7 @@
],
[
0,
- 9
+ 275625
]
]
]
@@ -357599,7 +357777,7 @@
],
"workflows": {
"check-workflow-run.yml": [
- "4b7e6575db6d26cc442e023b64d4ee82173637fa",
+ "0487f03a592fa354557ef109e0c3767017e0f856",
[]
],
"docker.yml": [
@@ -357607,23 +357785,23 @@
[]
],
"documentation.yml": [
- "eecf8ea6369f1128a8992194d7b326ae7f64a528",
+ "f7e9fb2e13505840666e5831f4b20a9d119c3cbf",
[]
],
"epochs.yml": [
- "8e85ee75a843b9ebc6a40bdb5d7b91587badd5ca",
+ "8b2081364e5d75066bf62414dfcf45636226f2c7",
[]
],
"interfaces.yml": [
- "ff2a679b5983ed7913d8eaafff605b31bde38faf",
+ "302e0a846d823e7bb5f37586c8b595307a2a3ac8",
[]
],
"manifest.yml": [
- "aae43615a9ed23bf1aadbb6e9150bb65a95c1ee7",
+ "a27fc2258dea84679dd0e4b667d183526dea6208",
[]
],
"regen_certs.yml": [
- "bb0cea9f396c41faf9f045b402fb3b8ee99e1f4a",
+ "b66ba90065f9b142138f49d1a5ebf5b12d428f4e",
[]
],
"safari-wptrunner.yml": [
@@ -357645,7 +357823,7 @@
}
},
".gitignore": [
- "061700a9604b41d653959a8da34a47b55676a7c8",
+ "f2525f49ab6b76fdc05da313a1da1dc8c1ae8259",
[]
],
".mailmap": [
@@ -357966,6 +358144,10 @@
"62f9e00aa338468f1a33a5fe91931378a4a72cad",
[]
],
+ "derive_key_and_encrypt.js": [
+ "5963a852fcfbe1ff42cf4a936ae5bcff86bc7635",
+ []
+ ],
"derived_bits_length.js": [
"5a7ed7eb50a0a0b683c1631b639be89b2e428a1c",
[]
@@ -358119,7 +358301,7 @@
},
"util": {
"helpers.js": [
- "bda97003263ff4ac5a61c0941a144513e66ea9b0",
+ "c60371dc6adac9a77aee624e66b6680f6b4bfaca",
[]
],
"worker-report-crypto-subtle-presence.js": [
@@ -360498,7 +360680,7 @@
[]
],
"animated-avif-timeout-ref.html": [
- "52374220c9155eda3442d0b9d92a896b6d20eebf",
+ "82febcca0b12e5a1730b1758e1542b593387b302",
[]
]
},
@@ -404669,7 +404851,7 @@
],
"support": {
"cq-testcommon.js": [
- "672a7e9646e26229f9419d94137aaa1f7ea2e48e",
+ "a9b7b92ae526e6fe5b27b0f795bc7d52b4540bb3",
[]
],
"test.vtt": [
@@ -421064,6 +421246,10 @@
"cf789d631b1f61c6fee66d29fc5984d155180702",
[]
],
+ "WEB_FEATURES.yml": [
+ "76b76d0572b634a12d0f0e6abe530082c38ed3bc",
+ []
+ ],
"cascading-001-ref.html": [
"79a432c4557bbda081a9b1c8d0dd9602c0eb85e5",
[]
@@ -425428,6 +425614,10 @@
"38cd166ca8f45769c269039577aac391ad707e75",
[]
],
+ "WEB_FEATURES.yml": [
+ "25d7b8fde4de599495acdcfffc4cd9e736f481a8",
+ []
+ ],
"registered-property-change-style-002-ref.html": [
"758e769d7821fa55b82e339883f1f9c4d4f0d5e7",
[]
@@ -426706,6 +426896,10 @@
"9f407eb690e0fb3d033afba0817082f84e30b783",
[]
],
+ "shadow-reassign-dynamic-006-ref.html": [
+ "60a6282457f17663be1317392b579f5369277048",
+ []
+ ],
"slotted-placeholder-ref.html": [
"f99c0385d061766b49d55e7703bf596fe69d6ec2",
[]
@@ -430539,6 +430733,10 @@
[]
]
},
+ "segment-break-transformation-ignorable-1-ref.html": [
+ "bd348fa50991df3d03baee81fb44d101997a568b",
+ []
+ ],
"segment-break-transformation-removable-ref.html": [
"0fa64d71dfee76e640870828277fda62c02ad0c8",
[]
@@ -433745,6 +433943,10 @@
"d3905fbfbc96f87bf3d209b1d7c5955d70782e4a",
[]
],
+ "text-shadow-emoji-transparent-ref.html": [
+ "cb4d0f57b0837f58b593257e4e547de22fa50ec5",
+ []
+ ],
"textindent-ref.html": [
"c3e3315e9b2795a5a5fb8a7e367bb133d6e442fe",
[]
@@ -435384,7 +435586,7 @@
[]
],
"generalParallelTest.js": [
- "f6e14128fc07f08984ac705b2f6ec03f02bc2215",
+ "f8ad77ecde5957171ed9f1434fa842d92ac54479",
[]
],
"helper.js": [
@@ -435420,7 +435622,7 @@
[]
],
"properties.js": [
- "0c0057b39e8041e57f2b460a195ba3ff0577a820",
+ "81cf9d46d5ff575e16b955ec2d64f579699fd441",
[]
],
"ruler-h-50%.png": [
@@ -435440,7 +435642,7 @@
[]
],
"runParallelAsyncHarness.js": [
- "de9b7837900b4daa3884babe6545b57ea901da15",
+ "7293bf92d06fa9b6c8b8ad5d4063a398dd5ccb26",
[]
],
"square-purple.png": [
@@ -436928,8 +437130,12 @@
"526bb67def54a02a8e268cd0393451a27c2c7989",
[]
],
+ "attr-in-slotted-ref.html": [
+ "401641606ace63080f8fa9bea03bc01ba9a16bab",
+ []
+ ],
"attr-notype-fallback-ref.html": [
- "efb9b969f3a1ea041d48187b7a0477bef406814e",
+ "21f7362dbafd6b8bef9fc292cbd44d99fd205f1c",
[]
],
"calc-background-image-gradient-1-ref.html": [
@@ -443205,6 +443411,46 @@
"a3cc6d3d8f56fd31c4b19d23af606d7c65487145",
[]
],
+ "negated-always-matches-negated-first-of-type-when-ancestor-changes-ref.html": [
+ "2ddb130e05f5fe92afb1450de69894b60beb9fad",
+ []
+ ],
+ "negated-always-matches-negated-last-of-type-when-ancestor-changes-ref.html": [
+ "2ddb130e05f5fe92afb1450de69894b60beb9fad",
+ []
+ ],
+ "negated-is-always-matches-negated-first-of-type-when-ancestor-changes-ref.html": [
+ "a3b598998538ca29c891f5e480d4a0bcbbc24927",
+ []
+ ],
+ "negated-is-always-matches-negated-last-of-type-when-ancestor-changes-ref.html": [
+ "a3b598998538ca29c891f5e480d4a0bcbbc24927",
+ []
+ ],
+ "negated-is-never-matches-negated-first-of-type-when-ancestor-changes-ref.html": [
+ "2ddb130e05f5fe92afb1450de69894b60beb9fad",
+ []
+ ],
+ "negated-is-never-matches-negated-last-of-type-when-ancestor-changes-ref.html": [
+ "2ddb130e05f5fe92afb1450de69894b60beb9fad",
+ []
+ ],
+ "negated-negated-first-of-type-when-ancestor-changes-ref.html": [
+ "2ddb130e05f5fe92afb1450de69894b60beb9fad",
+ []
+ ],
+ "negated-negated-last-of-type-when-ancestor-changes-ref.html": [
+ "2ddb130e05f5fe92afb1450de69894b60beb9fad",
+ []
+ ],
+ "negated-never-matches-negated-first-of-type-when-ancestor-changes-ref.html": [
+ "cadbabc7c5a0b671050b80d579d19cc6668ba2fc",
+ []
+ ],
+ "negated-never-matches-negated-last-of-type-when-ancestor-changes-ref.html": [
+ "cadbabc7c5a0b671050b80d579d19cc6668ba2fc",
+ []
+ ],
"negated-nth-child-when-ancestor-changes-ref.html": [
"bfa9d00e1b6ce666b8b3dc667dd7db07de8c48ad",
[]
@@ -444323,7 +444569,7 @@
[]
],
"webkitgtk_minibrowser.md": [
- "7aac81e5fce660db84969f9c0a7cae429a257207",
+ "5dd047536ed055466d7f902e6f4da3b6c8f02b40",
[]
]
},
@@ -448038,44 +448284,8 @@
"6247f6d63211cd39dffca9fc507aefcdee586eba",
[]
],
- "navigate-ancestor-destination.https.html": [
- "f12849c8ec625f96ae8fd404d00e2a7bbbcefdaa",
- []
- ],
- "navigate-ancestor-destination.https.html.headers": [
- "6247f6d63211cd39dffca9fc507aefcdee586eba",
- []
- ],
- "navigate-ancestor-from-nested-fenced-frame.https.html": [
- "74800b969f772c9aecb186a29f51f3ceaef2cd16",
- []
- ],
- "navigate-ancestor-from-nested-fenced-frame.https.html.headers": [
- "6247f6d63211cd39dffca9fc507aefcdee586eba",
- []
- ],
- "navigate-ancestor-from-nested-iframe.https.html": [
- "63a0cca8b4f2d2a0fad9fd38d811b348f0b33d07",
- []
- ],
- "navigate-ancestor-from-nested-iframe.https.html.headers": [
- "6247f6d63211cd39dffca9fc507aefcdee586eba",
- []
- ],
- "navigate-ancestor-helper.https.html": [
- "71d55d4959bf733bd9722533b516626d995623dc",
- []
- ],
- "navigate-ancestor-helper.https.html.headers": [
- "6247f6d63211cd39dffca9fc507aefcdee586eba",
- []
- ],
"navigate-ancestor-helper.js": [
- "ade17c69f2cce20c85758b8f392f61c3f4e9d2bb",
- []
- ],
- "navigate-ancestor-test-runner.https.html": [
- "ab81bd8dea1335b319e51920210a7ef9f7331dd9",
+ "6dfecb8bc5e1f09ff2931f3aec214236aa727f60",
[]
],
"navigate-by-name-inner.html": [
@@ -449966,7 +450176,7 @@
],
"resources": {
"additional-bids.py": [
- "721909a04583aa67edf6b893408e2f53f4498bb5",
+ "6c51d38a464fbedfa9e8236b9b08704415da64d0",
[]
],
"authorize-server-response.py": [
@@ -450006,7 +450216,7 @@
[]
],
"fledge-util.sub.js": [
- "148613eef8d903352f84ef30012a5654d82a3fc6",
+ "6f16e5e1e8ce79da601eb2cb0c7bb03ddbbf6780",
[]
],
"fledge_http_server_util.py": [
@@ -450121,15 +450331,15 @@
[]
],
"activeelement-after-calling-window-focus-middle.sub.html": [
- "c5a0d60a71de3708c429769c221c5e38555a9964",
+ "da5164e4252efaf1023dc813ca5f32e9f4ae1c6f",
[]
],
"activeelement-after-calling-window-focus-outer-different.sub.html": [
- "2cddcf233dbd618b3ba42868c7b191f7d89ff8e9",
+ "bbbb50d4e4576a0f7b689dda67b53d8d144685a2",
[]
],
"activeelement-after-calling-window-focus-outer-same.sub.html": [
- "4833e94bc9414c461d6779e5a762e9d2833ceeea",
+ "b3ce29e20d27d62c2ebef5a22746abdc42461724",
[]
],
"activeelement-after-focusing-different-site-iframe-inner-contentwindow.html": [
@@ -450141,7 +450351,7 @@
[]
],
"activeelement-after-focusing-different-site-iframe-outer-contentwindow.sub.html": [
- "fd66cbaa55c2044922af9d232ca2276ddf5b3028",
+ "4a9a9a110d9fd29b66eed4a6a5b30be0cab27dce",
[]
],
"activeelement-after-focusing-different-site-iframe-outer.sub.html": [
@@ -450325,11 +450535,11 @@
[]
],
"iframe-contentwindow-focus-with-different-site-intermediate-frame-middle.sub.html": [
- "e3a5facf82e4c08753705ee1803b76ceef30f671",
+ "c59e3ec703f32b1143de28cfa4522e54ae5b1e09",
[]
],
"iframe-contentwindow-focus-with-different-site-intermediate-frame-outer.sub.html": [
- "9dbb6af9d9a4dd795cd0976bc87695e0363372b4",
+ "cc5412dfb488faf85497b11ca9461849b333bd11",
[]
],
"iframe-contentwindow-focus-with-same-as-top-intermediate-frame-inner.html": [
@@ -450337,11 +450547,11 @@
[]
],
"iframe-contentwindow-focus-with-same-as-top-intermediate-frame-middle.sub.html": [
- "747e1467466eabe5b09ec80891603e8ad1a5335c",
+ "a94a03101c587d7e917baa4a68a0aab564e8f14c",
[]
],
"iframe-contentwindow-focus-with-same-as-top-intermediate-frame-outer.html": [
- "71cfe78c0d7614f585a7dcecb3b6c12e6698d321",
+ "bd96a9680cef6cf346e2710ea756a79cfb631c0b",
[]
],
"iframe-focus-with-different-site-intermediate-frame-inner.html": [
@@ -450353,7 +450563,7 @@
[]
],
"iframe-focus-with-different-site-intermediate-frame-outer.sub.html": [
- "5e80410206d0d2fe7cbe5faef206c9a930a5a8ed",
+ "299f3787b3a7959e3ae2f49895d5d7bac6e029bb",
[]
],
"iframe-focus-with-same-as-top-intermediate-frame-inner.html": [
@@ -451609,20 +451819,6 @@
]
}
},
- "rendering": {
- "backdrop-green-ref.html": [
- "3126fe194261f7ce7f6039885e4ec73e7a997468",
- []
- ],
- "backdrop-object-ref.html": [
- "6c7071a727dd27d182ae017e9f6dbc0834361ddc",
- []
- ],
- "fullscreen-root-fills-page-ref.html": [
- "b2bf13557a2c3540645e3aa45a0850a61f8f0b28",
- []
- ]
- },
"trusted-click.js": [
"51fbce7ee4355ec4ac2b923f24feb75a944f4390",
[]
@@ -451648,7 +451844,7 @@
[]
],
"generic-sensor-iframe-tests.sub.js": [
- "ed3415e66ec799da22277dcd3f81dbbfb956145b",
+ "277d5d0ea9b290b554a7746567dde65b826a165d",
[]
],
"generic-sensor-tests.js": [
@@ -453995,7 +454191,7 @@
[]
],
"2d.composite.grid.filter.no_shadow.drawImage.png": [
- "2318c1ec94e401b19677b4c4b5e7badff8cea77e",
+ "263ed6ecdd29143e3a572ec18811ca96f893e621",
[]
],
"2d.composite.grid.filter.no_shadow.fillRect-expected.html": [
@@ -454003,7 +454199,7 @@
[]
],
"2d.composite.grid.filter.no_shadow.fillRect.png": [
- "2318c1ec94e401b19677b4c4b5e7badff8cea77e",
+ "263ed6ecdd29143e3a572ec18811ca96f893e621",
[]
],
"2d.composite.grid.filter.no_shadow.pattern-expected.html": [
@@ -454011,7 +454207,7 @@
[]
],
"2d.composite.grid.filter.no_shadow.pattern.png": [
- "2318c1ec94e401b19677b4c4b5e7badff8cea77e",
+ "263ed6ecdd29143e3a572ec18811ca96f893e621",
[]
],
"2d.composite.grid.filter.shadow.drawImage-expected.html": [
@@ -454019,7 +454215,7 @@
[]
],
"2d.composite.grid.filter.shadow.drawImage.png": [
- "fde787731168e3a2565ca15d6da5e160a03ef484",
+ "ade9f67ef2e8b1a46ca58cde2e7b85f0373ba83a",
[]
],
"2d.composite.grid.filter.shadow.fillRect-expected.html": [
@@ -454027,7 +454223,7 @@
[]
],
"2d.composite.grid.filter.shadow.fillRect.png": [
- "fde787731168e3a2565ca15d6da5e160a03ef484",
+ "ade9f67ef2e8b1a46ca58cde2e7b85f0373ba83a",
[]
],
"2d.composite.grid.filter.shadow.pattern-expected.html": [
@@ -454035,7 +454231,7 @@
[]
],
"2d.composite.grid.filter.shadow.pattern.png": [
- "fde787731168e3a2565ca15d6da5e160a03ef484",
+ "ade9f67ef2e8b1a46ca58cde2e7b85f0373ba83a",
[]
],
"2d.composite.grid.no_filter.no_shadow.drawImage-expected.html": [
@@ -454043,7 +454239,7 @@
[]
],
"2d.composite.grid.no_filter.no_shadow.drawImage.png": [
- "ce392a1dcccc5e06a3d163dff873a5647ecdb65c",
+ "0163f403ca425156553ada8e5b8548261f774ba4",
[]
],
"2d.composite.grid.no_filter.no_shadow.fillRect-expected.html": [
@@ -454051,7 +454247,7 @@
[]
],
"2d.composite.grid.no_filter.no_shadow.fillRect.png": [
- "ce392a1dcccc5e06a3d163dff873a5647ecdb65c",
+ "0163f403ca425156553ada8e5b8548261f774ba4",
[]
],
"2d.composite.grid.no_filter.no_shadow.pattern-expected.html": [
@@ -454059,7 +454255,7 @@
[]
],
"2d.composite.grid.no_filter.no_shadow.pattern.png": [
- "ce392a1dcccc5e06a3d163dff873a5647ecdb65c",
+ "0163f403ca425156553ada8e5b8548261f774ba4",
[]
],
"2d.composite.grid.no_filter.shadow.drawImage-expected.html": [
@@ -454067,7 +454263,7 @@
[]
],
"2d.composite.grid.no_filter.shadow.drawImage.png": [
- "aca03a61b220c1022c65b71dbd092f7b6de3c754",
+ "6e80ad32bb6f6e29fb35286262e0f3120e09bbb4",
[]
],
"2d.composite.grid.no_filter.shadow.fillRect-expected.html": [
@@ -454075,7 +454271,7 @@
[]
],
"2d.composite.grid.no_filter.shadow.fillRect.png": [
- "aca03a61b220c1022c65b71dbd092f7b6de3c754",
+ "6e80ad32bb6f6e29fb35286262e0f3120e09bbb4",
[]
],
"2d.composite.grid.no_filter.shadow.pattern-expected.html": [
@@ -454083,7 +454279,7 @@
[]
],
"2d.composite.grid.no_filter.shadow.pattern.png": [
- "aca03a61b220c1022c65b71dbd092f7b6de3c754",
+ "6e80ad32bb6f6e29fb35286262e0f3120e09bbb4",
[]
],
"2d.composite.image.clear.png": [
@@ -455766,6 +455962,10 @@
"2dffe90aadc57ae07067fa7decab24fd43fc8728",
[]
],
+ "2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative-expected.html": [
+ "6d109c3ffcd3ed269cd68638a4a722ac7d4a5c58",
+ []
+ ],
"2d.text.measure.text-clusters-rendering-font-change.tentative-expected.html": [
"9a9443962dfb988da61453159d02d953e620be6c",
[]
@@ -455805,7 +456005,7 @@
[]
],
"2d.composite.grid.filter.no_shadow.drawImage.png": [
- "2318c1ec94e401b19677b4c4b5e7badff8cea77e",
+ "263ed6ecdd29143e3a572ec18811ca96f893e621",
[]
],
"2d.composite.grid.filter.no_shadow.fillRect-expected.html": [
@@ -455813,7 +456013,7 @@
[]
],
"2d.composite.grid.filter.no_shadow.fillRect.png": [
- "2318c1ec94e401b19677b4c4b5e7badff8cea77e",
+ "263ed6ecdd29143e3a572ec18811ca96f893e621",
[]
],
"2d.composite.grid.filter.no_shadow.pattern-expected.html": [
@@ -455821,7 +456021,7 @@
[]
],
"2d.composite.grid.filter.no_shadow.pattern.png": [
- "2318c1ec94e401b19677b4c4b5e7badff8cea77e",
+ "263ed6ecdd29143e3a572ec18811ca96f893e621",
[]
],
"2d.composite.grid.filter.shadow.drawImage-expected.html": [
@@ -455829,7 +456029,7 @@
[]
],
"2d.composite.grid.filter.shadow.drawImage.png": [
- "fde787731168e3a2565ca15d6da5e160a03ef484",
+ "ade9f67ef2e8b1a46ca58cde2e7b85f0373ba83a",
[]
],
"2d.composite.grid.filter.shadow.fillRect-expected.html": [
@@ -455837,7 +456037,7 @@
[]
],
"2d.composite.grid.filter.shadow.fillRect.png": [
- "fde787731168e3a2565ca15d6da5e160a03ef484",
+ "ade9f67ef2e8b1a46ca58cde2e7b85f0373ba83a",
[]
],
"2d.composite.grid.filter.shadow.pattern-expected.html": [
@@ -455845,7 +456045,7 @@
[]
],
"2d.composite.grid.filter.shadow.pattern.png": [
- "fde787731168e3a2565ca15d6da5e160a03ef484",
+ "ade9f67ef2e8b1a46ca58cde2e7b85f0373ba83a",
[]
],
"2d.composite.grid.no_filter.no_shadow.drawImage-expected.html": [
@@ -455853,7 +456053,7 @@
[]
],
"2d.composite.grid.no_filter.no_shadow.drawImage.png": [
- "ce392a1dcccc5e06a3d163dff873a5647ecdb65c",
+ "0163f403ca425156553ada8e5b8548261f774ba4",
[]
],
"2d.composite.grid.no_filter.no_shadow.fillRect-expected.html": [
@@ -455861,7 +456061,7 @@
[]
],
"2d.composite.grid.no_filter.no_shadow.fillRect.png": [
- "ce392a1dcccc5e06a3d163dff873a5647ecdb65c",
+ "0163f403ca425156553ada8e5b8548261f774ba4",
[]
],
"2d.composite.grid.no_filter.no_shadow.pattern-expected.html": [
@@ -455869,7 +456069,7 @@
[]
],
"2d.composite.grid.no_filter.no_shadow.pattern.png": [
- "ce392a1dcccc5e06a3d163dff873a5647ecdb65c",
+ "0163f403ca425156553ada8e5b8548261f774ba4",
[]
],
"2d.composite.grid.no_filter.shadow.drawImage-expected.html": [
@@ -455877,7 +456077,7 @@
[]
],
"2d.composite.grid.no_filter.shadow.drawImage.png": [
- "aca03a61b220c1022c65b71dbd092f7b6de3c754",
+ "6e80ad32bb6f6e29fb35286262e0f3120e09bbb4",
[]
],
"2d.composite.grid.no_filter.shadow.fillRect-expected.html": [
@@ -455885,7 +456085,7 @@
[]
],
"2d.composite.grid.no_filter.shadow.fillRect.png": [
- "aca03a61b220c1022c65b71dbd092f7b6de3c754",
+ "6e80ad32bb6f6e29fb35286262e0f3120e09bbb4",
[]
],
"2d.composite.grid.no_filter.shadow.pattern-expected.html": [
@@ -455893,7 +456093,7 @@
[]
],
"2d.composite.grid.no_filter.shadow.pattern.png": [
- "aca03a61b220c1022c65b71dbd092f7b6de3c754",
+ "6e80ad32bb6f6e29fb35286262e0f3120e09bbb4",
[]
]
},
@@ -456390,6 +456590,10 @@
"2dffe90aadc57ae07067fa7decab24fd43fc8728",
[]
],
+ "2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative-expected.html": [
+ "6d109c3ffcd3ed269cd68638a4a722ac7d4a5c58",
+ []
+ ],
"2d.text.measure.text-clusters-rendering-font-change.tentative-expected.html": [
"9a9443962dfb988da61453159d02d953e620be6c",
[]
@@ -456569,7 +456773,7 @@
[]
],
"compositing.yaml": [
- "1db0c590db2bce8d1e3429e92ec1f7880cbb3cb9",
+ "838ad4b06cba88bc6ea080ca52a5f1ec3fb53cd5",
[]
],
"conformance_requirements.yaml": [
@@ -456617,7 +456821,7 @@
[]
],
"text.yaml": [
- "78312640c08938cf81e38ca0671b82280093e43b",
+ "7fe59a91a357868cf5f97773e8a70a15988e0400",
[]
],
"the-canvas-state.yaml": [
@@ -469158,7 +469362,7 @@
},
"tools": {
"ahem-generate-table.py": [
- "314279f67105958badfa56b37a4bcc2625797f5d",
+ "0898ab78c1891afe037b6e23ba70a7ad440fb8ac",
[]
]
}
@@ -471076,23 +471280,23 @@
},
"jpegxl": {
"3x3_jpeg_recompression-ref.html": [
- "070243d6a7e66183f9a7bcbe77cd7263e0ecbcc0",
+ "e0fb0f319ff75f6d79039dc8828eb9e13b2d66ed",
[]
],
"3x3_srgb_lossless-ref.html": [
- "1bb50832409d6aa7a645a413622ccc5e2443bea8",
+ "498cbf3944ae894b0dd661b83ea9d7a7e3ff95ee",
[]
],
"3x3_srgb_lossy-ref.html": [
- "a5e95baba3b19607b9d7044328e4516937918784",
+ "ad43c9d00b9eece5e1e8628cd0b3743cf86f9f53",
[]
],
"3x3a_srgb_lossless-ref.html": [
- "75d8ba7452ede9efbe871e28637cc30120c88809",
+ "1a5ad157df91683afcf5c1eb0b976ff2cdd7fd26",
[]
],
"3x3a_srgb_lossy-ref.html": [
- "3a1c22e8a2775b32622ccc538e3cef14d527db5a",
+ "602c3aa96185b9938d3e317e83bedf0178a470f6",
[]
],
"META.yml": [
@@ -471277,7 +471481,7 @@
[]
],
"largest-contentful-paint-helpers.js": [
- "52f7036466cca5d0c75d1966fe978db35f6237ad",
+ "d206beaef9945807f21f8c89c50c423e82ad2488",
[]
],
"lcp-sw-from-cache.js": [
@@ -471359,7 +471563,7 @@
]
},
"lint.ignore": [
- "cee60ba906e7fa2028fee655f4a175dbbab59032",
+ "ee19f061a74aa80a8aae9eff62261865144cc125",
[]
],
"loading": {
@@ -474110,7 +474314,7 @@
"focus-reset": {
"resources": {
"helpers.mjs": [
- "0a8a0439e1c885fdf263da1ecc74bcbc304b35a0",
+ "fd611e806292e8165e96604bc8e1fcb405326292",
[]
]
}
@@ -475071,6 +475275,10 @@
"fd3da53a29c3e7f55f950611d34694867b0ff0a4",
[]
],
+ "permissions-policy-focus-without-user-activation.html": [
+ "c802d6f06999e58e927fa52c08cfb4d81423e768",
+ []
+ ],
"permissions-policy-private-state-token-redemption.html": [
"7a055f0e7bfb8740b20afc1e43df0e0d66a5ef93",
[]
@@ -475826,7 +476034,7 @@
[]
],
"pointerevent_styles.css": [
- "1ee3b0b3965ff9fb3c5960f606cca6477ce145a8",
+ "f5ed4828f6966cc7354a473310d2292f8b6d638e",
[]
],
"pointerevent_support.js": [
@@ -478421,10 +478629,6 @@
"54ddb35f3112001e646646dc2d1bfa6721ba19f8",
[]
],
- "check-layout.js": [
- "8634481497d70103cd6838b2859e0915005400f3",
- []
- ],
"chromium": {
"README.md": [
"be090b332fc41b5f5b8fe45b4f5c156a5d26eaf3",
@@ -479398,7 +479602,7 @@
[]
],
"scroll-to-text-fragment-target.html": [
- "ceb9a2ca3ff0e0b3503796d28cfe6bab9029668f",
+ "3a2b3571147a7fc3e6fcf7cbdb9082d23b4e99d2",
[]
],
"stash.js": [
@@ -482664,6 +482868,10 @@
"1b63235b7cdffe9ebb43bfac3a01d5220e1519fb",
[]
],
+ "erroneous-function-module.js": [
+ "6d4630552559ea17b9fb6004664334bff72fb8a1",
+ []
+ ],
"frame0.html": [
"c9b559fe83a6e04f58364037976e82dbaa44591a",
[]
@@ -482680,6 +482888,30 @@
"1b63235b7cdffe9ebb43bfac3a01d5220e1519fb",
[]
],
+ "frame2.html": [
+ "bbbc067ce01f45c9386c0448bb86f7480295edad",
+ []
+ ],
+ "frame2.html.headers": [
+ "1b63235b7cdffe9ebb43bfac3a01d5220e1519fb",
+ []
+ ],
+ "frame3.html": [
+ "e12a2ad909a663e0ebc4d7b9b956a1e376e0e9e2",
+ []
+ ],
+ "frame3.html.headers": [
+ "1b63235b7cdffe9ebb43bfac3a01d5220e1519fb",
+ []
+ ],
+ "frame4.html": [
+ "716e803da0ada8f9dd1a3ed9768b03b05bb844c9",
+ []
+ ],
+ "frame4.html.headers": [
+ "1b63235b7cdffe9ebb43bfac3a01d5220e1519fb",
+ []
+ ],
"register-service-worker-iframe.https.html": [
"547ab1d93d9adb9cb82ea797ee5e900b9d0e067c",
[]
@@ -482692,6 +482924,10 @@
"896daa59828a485908b4a8bf826ec10b00a2ae2b",
[]
],
+ "select-url-saved-query-inner.https.sub.html": [
+ "9d5efe388d0145e77df69ef5a9a4513884668992",
+ []
+ ],
"sender0.html": [
"e3d0475f1220bbcbb71c11451bbd9ba96ec0f3eb",
[]
@@ -482761,7 +482997,7 @@
[]
],
"simple-module.js": [
- "eeb0ce95b040687a57a7eaa65be7c17a88b592fe",
+ "e639f47000819e2c5974c1cb99bdb04e3dbb1cfb",
[]
],
"simple-module.js.headers": [
@@ -482777,7 +483013,7 @@
[]
],
"util.js": [
- "09eb45c591b42b3bbb969948362668daf902b3f0",
+ "b1456fc01db71a46244068e264782916051087b1",
[]
],
"util.sub.js": [
@@ -482848,6 +483084,10 @@
"c5d057f3e2ffc613c1ae20c19986a3fb13c8c246",
[]
],
+ "select-url-saved-query-multi-frame-inner.https.sub.html": [
+ "549eec0fbfb97e8b373d954ef78c655ed4710c16",
+ []
+ ],
"utils.js": [
"a7462147d77c829ebda92d792faf664940b5f1c6",
[]
@@ -485471,7 +485711,7 @@
[]
],
"run_tc.py": [
- "446afadac8886261a8cc32370e52ee524f03fd1a",
+ "9def3bebcab5622fad088c74f2280da5ac64536d",
[]
],
"taskcluster-run.py": [
@@ -486149,7 +486389,7 @@
[]
],
"serve.py": [
- "a11e15db98db3f5f9e0980b39fdcffa5080d9737",
+ "2fe8c3dc5461241084e1baca28d9fef1b07e59c4",
[]
],
"test_functional.py": [
@@ -496440,7 +496680,7 @@
[]
],
"error.py": [
- "b19693e2d25adfb1078e8db4b53a28ce6e7a545f",
+ "bd2b31728eceb883c31425dbb678a5712a450867",
[]
],
"protocol.py": [
@@ -496503,7 +496743,7 @@
[]
],
"browser.py": [
- "932604397013bae93ce3d0ba58abc4d9424aa67d",
+ "923bf9904f19409b8e202db471795b0fbafa3ae0",
[]
],
"commands.json": [
@@ -496777,7 +497017,7 @@
[]
],
"firefox.py": [
- "964ed8337a026af8d26a6af17032298e6f904cea",
+ "e55036ecc48d5d71f589cb26ff717a9141f48ab9",
[]
],
"firefox_android.py": [
@@ -496853,11 +497093,11 @@
[]
],
"base.py": [
- "45d3af3bbc91045fd3d06722143f04dbfaf9c935",
+ "1dba97d94769d0690373c6b68f9e94c050c80805",
[]
],
"executorchrome.py": [
- "6ba361ee4c578866ea441a9336ed61708e77e32b",
+ "95e367a683d44e2d56027d345fbb163f096c592b",
[]
],
"executoredge.py": [
@@ -496881,7 +497121,7 @@
[]
],
"executorwebdriver.py": [
- "22aaf031a73298cd5cfa40a5ba6538b3214176cc",
+ "ca7b531227b699f31e356301a9302c7aecadbcaf",
[]
],
"executorwktr.py": [
@@ -501518,7 +501758,7 @@
[]
],
"helpers.py": [
- "0ca5bd28269a831ccdbcfdcbcb0eb748f308495f",
+ "1cb5b801da214d419bd2a060233ad1311313b408",
[]
],
"html": {
@@ -501855,13 +502095,23 @@
"6b22a19db920390ef34e86711fc399569db31e13",
[]
],
+ "conformance_tests": {
+ "byob_readtensor.https.any.js.headers": [
+ "5f8621ef83660c66f0d037ea28fafefb558140f1",
+ []
+ ],
+ "tensor.https.any.js.headers": [
+ "5f8621ef83660c66f0d037ea28fafefb558140f1",
+ []
+ ]
+ },
"resources": {
"utils.js": [
- "973c16baca760264cd71dc8b28288a8b01a68d51",
+ "112d48774863cdcd9a96d216c92c9076e4971343",
[]
],
"utils_validation.js": [
- "f491801bf3a6c04385ff49c2bf8b54cb5e355113",
+ "0f07b777def10fcebba8cd0282dea463e0c1b37e",
[]
]
}
@@ -506676,7 +506926,7 @@
],
"BlobURL": {
"cross-partition-navigation.tentative.https.html": [
- "05f54b0ae0afa905ab2dfb03a9ac86bea4971449",
+ "ee879b0d95508a6dfd0f03973903c03f4a1dfa2a",
[
null,
{
@@ -508741,7 +508991,7 @@
]
],
"get-databases.any.js": [
- "ac1ab15f27f7624238ab695957f50cc5bde1b453",
+ "a79adb808d925a53c6892ee7e193de6b8b9105af",
[
"IndexedDB/get-databases.any.html",
{
@@ -514537,6 +514787,47 @@
}
]
],
+ "derive_key_and_encrypt.https.any.js": [
+ "5edc832b6163bd8976c02ddbf42a375a8a36e87d",
+ [
+ "WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "WebCryptoAPI: deriveKey() Using HKDF and PBKDF2 from an ECDH key"
+ ],
+ [
+ "script",
+ "derive_key_and_encrypt.js"
+ ],
+ [
+ "script",
+ "../util/helpers.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.https.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "WebCryptoAPI: deriveKey() Using HKDF and PBKDF2 from an ECDH key"
+ ],
+ [
+ "script",
+ "derive_key_and_encrypt.js"
+ ],
+ [
+ "script",
+ "../util/helpers.js"
+ ]
+ ]
+ }
+ ]
+ ],
"derived_bits_length.https.any.js": [
"0aee2e3c172d30ab177fe89a8d75f964a2c9b703",
[
@@ -539963,7 +540254,7 @@
]
],
"to-javascript-url-script-src.html": [
- "70dea1f985e6b7642b5bfd194c34f1d8c8dcaa74",
+ "e0b6d992e963fa63f78f27189737eaab397066ac",
[
null,
{}
@@ -551301,7 +551592,7 @@
]
],
"scope-specificity.html": [
- "fa103ff3742fb341e80bf28b4a753d5a52918ddc",
+ "8541e0d6371cf56b35423d28a7c21ea4a117ec7a",
[
null,
{}
@@ -551793,6 +552084,36 @@
}
}
},
+ "css-color-hdr": {
+ "computed.html": [
+ "7ee1a96297723ae937ea4d3ce9e36b12760a9475",
+ [
+ null,
+ {}
+ ]
+ ],
+ "inheritance.html": [
+ "4f7a44a77290736703b170425f5b15e0ca445039",
+ [
+ null,
+ {}
+ ]
+ ],
+ "interpolation.html": [
+ "62e079f6366d7979e130e72dfec8d7f9fede07b7",
+ [
+ null,
+ {}
+ ]
+ ],
+ "parsing.html": [
+ "5d377a1ca7ab3633639bf6290f9106b705a9d93c",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
"css-conditional": {
"at-supports-whitespace.html": [
"12683ab92bb46af035b5bfa17b466b23736d1c5c",
@@ -551803,476 +552124,476 @@
],
"container-queries": {
"animation-container-size.html": [
- "e620335c358544c57ba58fd87e8cdd5d242c616e",
+ "0a142ef7e267f9987c5b81fbd2b84fa940ec180c",
[
null,
{}
]
],
"animation-container-type-dynamic.html": [
- "473c914d8a534ae3ddd76d956075bc5bdf0ef5f8",
+ "404a4c69cd8a722bf05f3b935008c69f7a80b54c",
[
null,
{}
]
],
"animation-nested-animation.html": [
- "b956fed2b4c2895a74f8d68de99632a7edecbd81",
+ "cc43b74587317bdc45d63e8b82a2904881267e9d",
[
null,
{}
]
],
"animation-nested-transition.html": [
- "ca8808664efcf8d00ac0d9af3a2ec90cf0f7a779",
+ "ed1de7af78226495e8730cb147c31fbf1c7b4107",
[
null,
{}
]
],
"aspect-ratio-feature-evaluation.html": [
- "9b68e8679d08eb440b3c1adc1fa11cf1cf8db6c4",
+ "590f2b227aaf5246bdc27cdca6d0246fd2a6ba0d",
[
null,
{}
]
],
"at-container-parsing.html": [
- "5c9d8c1bb9ea63a34016ca1a4b9931186a9c2209",
+ "183242e69dd5d4520def895bfa3abc3ad36e81ba",
[
null,
{}
]
],
"at-container-serialization.html": [
- "7e6e3e9945245013c2a7d795b3ead5d2ab13e4fc",
+ "dbe9ea023e885c3446ba05063f0a005542ea05ed",
[
null,
{}
]
],
"at-container-style-parsing.html": [
- "c63cc76560b4680d5a33863bda747c9fdde9cada",
+ "2e6722335c2c307343b0cc36660e22e87ff620bf",
[
null,
{}
]
],
"at-container-style-serialization.html": [
- "bd9d23a4b705de1e842018e94c76b6431412b0cb",
+ "f128109c678e44c35727362173df403b1dd37416",
[
null,
{}
]
],
"auto-scrollbars.html": [
- "96f082f38aa5595d63e72f4d1954c4e9140156bf",
+ "a08d694ac5711b0ca8526fe21ef5a84c8db0b849",
[
null,
{}
]
],
"backdrop-invalidation.html": [
- "6f7d52cc386f0a0b963f2b92b4fdc182433d9909",
+ "a4a232e9a136a490f0b92163053af429ba37fd76",
[
null,
{}
]
],
"calc-evaluation.html": [
- "60fd59e9cd436000d83127efa1469d60dcd0a6a5",
+ "ccdd31a061b38fef0ff1d357e48c2092de01490a",
[
null,
{}
]
],
"canvas-as-container-005.html": [
- "3068ce708e68e8392cd2f2a7d9e35eaf7f5242db",
+ "a96d48411e4ca1575998242a10f0bc445237f076",
[
null,
{}
]
],
"canvas-as-container-006.html": [
- "0fbb6f6d8332bfde3a0aec8f12198c9c650c4179",
+ "6cee3883aceb1cd5cebaf0337f57c51047cda987",
[
null,
{}
]
],
"column-spanner-in-container.html": [
- "0f0b5f7850fd0664441e4a75e6e5d75a91514e0f",
+ "912c63043068e911e9dc4fd133632e5426570c23",
[
null,
{}
]
],
"conditional-container-status.html": [
- "d0dfb97e9cb0bd32324c9ea180afa7938124de0c",
+ "23819c9a2817d913fc689f6c396080f795ded863",
[
null,
{}
]
],
"container-computed.html": [
- "fa56ab77402869eb44c8bb393ba2f11310498861",
+ "7b74dccf7bda456d1f9c431b9a6adf3ab6f43dea",
[
null,
{}
]
],
"container-for-shadow-dom.html": [
- "d79b3a9d554426754ceb6af98f6ca9e774b2e92d",
+ "13a2423a8225e379e1c21de7b0e6166e0f78d47a",
[
null,
{}
]
],
"container-inheritance.html": [
- "9fc8cadc3e4a06ce1cc7360ad7bac5fbcce5c01a",
+ "b4efa1d5231e2dcba3a0fe382dcd574ae3f4ddcc",
[
null,
{}
]
],
"container-inner-at-rules.html": [
- "4f0d6e02589bf1a31fd4f1b5c0a7ba9c2ae373c7",
+ "a6f2691d4955caa160344e7848b0770f254301b8",
[
null,
{}
]
],
"container-inside-multicol-with-table.html": [
- "1046d57ef250fe74166c1ca6a7c4d56bcb07975c",
+ "af5ca3059043a8522147fc6f5ef7deb176c54b4f",
[
null,
{}
]
],
"container-longhand-animation-type.html": [
- "efc9a817d94756242486a974afc50c8e4c75538b",
+ "8be0c51332c3f738762ffc04b1791d0382945686",
[
null,
{}
]
],
"container-name-computed.html": [
- "abd2ebe086067772ab861eab37795a10bfbdce6a",
+ "083e604cd5b12f8a1e8535449bf05c60fe42151c",
[
null,
{}
]
],
"container-name-invalidation.html": [
- "e918f182e2cfcea9792bded8fe5b5e6bb9b0f2fa",
+ "f9c8267b212470dc37e62dc81defdcb60c6f177c",
[
null,
{}
]
],
"container-name-parsing.html": [
- "895b73ee66e598ed3e226890d7fd64ca5c67a86e",
+ "7cf6800b2e0e5552b6b1903ab2fb97682f7d0875",
[
null,
{}
]
],
"container-name-tree-scoped.html": [
- "de633282e88b627b42f93f3fa90c020cf83f0bea",
+ "c2962ffa8d8001e1d15d23343df229539f01a2ca",
[
null,
{}
]
],
"container-nested.html": [
- "dfe30ac0ae17d91f3a5e71f168acb19404918090",
+ "c39672096ad9d28d527ed24c2809c49f187d4318",
[
null,
{}
]
],
"container-parsing.html": [
- "ab04102b569cf44fb307f68fb12d2ee61b2c7e9c",
+ "185d39e9ccfbd5afe4f1cf78b511bee3ec94aa08",
[
null,
{}
]
],
"container-selection-unknown-features.html": [
- "5c2c67caaf1569fd4d9e739ff3a25cfc2bb9e65a",
+ "ef9111ffdeef63b42d24f8eff13d22529bcf86f9",
[
null,
{}
]
],
"container-selection.html": [
- "d262da9ddfd7d9cc10e2378527c9f44f9a33169e",
+ "780dbd57cb22786dc7b6388abdadc10a8e538ab6",
[
null,
{}
]
],
"container-size-invalidation-after-load.html": [
- "2d66b0990fd48a7ad95755307a061a798627bb60",
+ "ccf169872a7aca5b82993b449302c5f1d068773c",
[
null,
{}
]
],
"container-size-invalidation.html": [
- "14433c9c3cf012474551ff53f6fcabe2a14ec4a0",
+ "ae8885e8d626fdd2363f1fffb04853dce666ac64",
[
null,
{}
]
],
"container-size-nested-invalidation.html": [
- "c13c80ed3852e478a0d9db66d1f9892a45cbacb5",
+ "0b1bfc0c8a553627c302bb8b6e2ac861f0731597",
[
null,
{}
]
],
"container-size-shadow-invalidation.html": [
- "4d2300701ae01fb857fead2e083478bbc29bee78",
+ "dfcc827981ecd5ddd1b049cbfc6bb7f5ab1062f5",
[
null,
{}
]
],
"container-type-computed.html": [
- "60d5ab5a05a468c1c72eee3139681cd9de923fe2",
+ "2612b15d66dbaf36802e00df9d54ee007c2be63d",
[
null,
{}
]
],
"container-type-containment.html": [
- "ba97b385d6c5672fb6193d49438acb77065d6d9c",
+ "f71fbde11122b11165e662b7a477f5a1638e6c10",
[
null,
{}
]
],
"container-type-invalidation.html": [
- "e4f02028a74c8d71ab36d4b78cf0cf8a0ad843fd",
+ "710292431bab6fd4914b56b1a99255b7b397793a",
[
null,
{}
]
],
"container-type-layout-invalidation.html": [
- "27c7b8a012debb1969d47e0d0c2c253b00298684",
+ "81c3083af3ea0b1a7b6d353f984d89ee14030289",
[
null,
{}
]
],
"container-type-parsing.html": [
- "1e106852c5bd85e4f5887cef42befcb1925700c9",
+ "711e00b0f93168aa0cea1e193f66a9373077985b",
[
null,
{}
]
],
"container-units-animation.html": [
- "79e59dc2a186fb3dc207547df9add7d327a357d5",
+ "984009ebdfef0ebb99ad36e5e694054bcc149caa",
[
null,
{}
]
],
"container-units-basic.html": [
- "84f55d550eac0b5810d103d4b59c37a9080c0fb3",
+ "2cf5e5c6b1a5f9eff0b5217e4959755394fc7e7f",
[
null,
{}
]
],
"container-units-computational-independence.html": [
- "94d786dfe51b18f5405a821f3dcb4378010b61ed",
+ "0a6777c3a2dd1d76a187e52b7b9257c35fc1a480",
[
null,
{}
]
],
"container-units-content-box.html": [
- "0fc18b3175f9c2a83900df80c16b821843919599",
+ "b2657a2df06c2ca197538277fd85c7bf4e80b687",
[
null,
{}
]
],
"container-units-in-at-container-dynamic.html": [
- "978d5a60051fdb8fd5c749fb25b8a212c648c6f0",
+ "ba8651d15f5e9db486b2cc9cdabe9c78d32f8f69",
[
null,
{}
]
],
"container-units-in-at-container-fallback.html": [
- "fe7af8e38ea2366f31bbf044e2f73912b030cf65",
+ "91ec82a2a5921de27f9a1311c0e1df4c0def7c9f",
[
null,
{}
]
],
"container-units-in-at-container.html": [
- "9faf62ffc0c2efa07f26b2617e8d18514e7504b0",
+ "3403ea64061182f98e0e16f16d32f6b2790a90ee",
[
null,
{}
]
],
"container-units-ineligible-container.html": [
- "61565de6e2899940017797db87df3118c806e15e",
+ "e6a36461da36599a69d0543fa530d892a54347e8",
[
null,
{}
]
],
"container-units-invalidation.html": [
- "602f6b69dc20401e831998a8a08c831658d0a24b",
+ "b4036875d2bd10ebb73baf7c4c4c88daa07ec1fb",
[
null,
{}
]
],
"container-units-media-queries.html": [
- "b46e0cb715a9c269fd69b1668e26afd7296b3447",
+ "f9ed6eb8aa55b1737ba5cecd03cae6dee81e557c",
[
null,
{}
]
],
"container-units-selection.html": [
- "66ab3e245803db542ae51cd1ba968b8b51f83605",
+ "cb69395b8b07207977d8b822d134241f400a1bd7",
[
null,
{}
]
],
"container-units-shadow.html": [
- "3c672ad54265c0ddfe01e55b4af6062e7a761f86",
+ "d860e0825853b54864c70dfa2be7c179be1a2c56",
[
null,
{}
]
],
"container-units-small-viewport-fallback.html": [
- "d1c95d33b8f124739f5da29e8c51ff305690a0d8",
+ "c4761392c8116312bbf976d1f9cee79fda5e712a",
[
null,
{}
]
],
"container-units-svglength.html": [
- "e39c21e34616fd2abcdf903f3c9aa6465a5dac43",
+ "4b25b79bf5454e385e24c2883ac956baaaff1584",
[
null,
{}
]
],
"container-units-typed-om.html": [
- "4ebb3518ac21373f28c1d1fc9a66644fec2ac565",
+ "935b5411a3654ff6b8342c34111d8c8003ef7032",
[
null,
{}
]
],
"counters-flex-circular.html": [
- "04af2e2dc06ce2dd44f1fa78204ef7f5f66a5bb8",
+ "661c9a9b3f6f81d7575084254ac2f48213dd1344",
[
null,
{}
]
],
"custom-property-style-queries.html": [
- "17ee5b4184bf9b71ca559031ef136aa5f7016277",
+ "2b3dd78fe5ec04994238e6b1b11c8d67de678ea3",
[
null,
{}
]
],
"custom-property-style-query-change.html": [
- "ac15092b4cd11443b521e9857eaff01235a7dab3",
+ "13280e35803b8a9b720026ed226a16e61f75f38d",
[
null,
{}
]
],
"deep-nested-inline-size-containers.html": [
- "40012b41f2188cd18ffeb9fe8b09cbbe5a87d0dc",
+ "6f311401b9c2dfd5768a07854ddc8ea7cb384dd0",
[
null,
{}
]
],
"display-contents-dynamic-style-queries.html": [
- "466992f628fd29a98a6cf65a04872bb9408d9b13",
+ "ca4879bfc01be85b5c499ad0157bb8eb2cc3bcc6",
[
null,
{}
]
],
"display-contents.html": [
- "3dd50caff3899c1c6f92b3a05eba6669db7adcef",
+ "bcb93171f90f9acc99f811c0c78d5ec25169bbf1",
[
null,
{}
]
],
"display-none.html": [
- "4949cbbb7152cda5e278924ebe86ff73a52a3439",
+ "22b8fbedab5efa903f1bc2145913018787b19c9a",
[
null,
{}
]
],
"font-relative-calc-dynamic.html": [
- "927dda9ffa111156ba7de53a1ea27c7ca2210c3d",
+ "fd807c2232ce08e02c1631a81f906b4e2abf4b99",
[
null,
{}
]
],
"font-relative-units-dynamic.html": [
- "60c668a71c7d8768a8bf0baa1b0694d46a247d4f",
+ "a9983d2f028b4a2b4e9807c6b7211087a90c5235",
[
null,
{}
]
],
"font-relative-units.html": [
- "38d1902825506e32d11ad16e805ce6304005336a",
+ "3d676402e1e6b266ede4e0249bfae29f159d14f7",
[
null,
{}
]
],
"fragmented-container-001.html": [
- "f5f4d7de7bdb922cca0c48a30334859caa23bdf0",
+ "3db0ea22987d1004f602cf6fd77ceaeed76c852d",
[
null,
{}
]
],
"get-animations.html": [
- "228f52ecf58361e93b486fb1295cfaffc00fe127",
+ "1cfa0a7773fdeb691ac959ec5b74181ac569961a",
[
null,
{}
]
],
"grid-container.html": [
- "c7002f696f6e630c81271c6b4bf04f4dc33580ec",
+ "ee9838e6cf4621c03b2e79727e6de6b5596f18a3",
[
null,
{}
]
],
"grid-item-container.html": [
- "f097c18b2ae6d2be3cee9b76b04b74eb4a6fae38",
+ "70ce6c16a6cd96294d5f5bedd870d2673c60a6fe",
[
null,
{}
@@ -552286,84 +552607,84 @@
]
],
"iframe-in-container-invalidation.html": [
- "4c904d2d4b40d6bef3640e034cef4d1cf985376a",
+ "64be52980a236722247fa48e14cafd2f7a5c8539",
[
null,
{}
]
],
"iframe-invalidation.html": [
- "c68fd4b16a9ffe95831524842f6f0005f75f4af9",
+ "58c2cd7330d82ed68b5e00f0ce8378015e089e47",
[
null,
{}
]
],
"ineligible-containment.html": [
- "1e1cace51e7b80ccc2511ff92243ccc0fefa51dc",
+ "20b49299428a968c88ee14aa97ad1fa73103a8d8",
[
null,
{}
]
],
"inheritance-from-container.html": [
- "4b815d68aa39c15b9eeb0bc50131701153caac8e",
+ "8bf69adff1bdfa6234d33c0c0d60f045173e58cc",
[
null,
{}
]
],
"inline-size-and-min-width.html": [
- "91e8c48a93aae0066878be545696cfc4ae0e924e",
+ "f895f9aadd14a1afa984ca4ea6e86e381ff7f908",
[
null,
{}
]
],
"inline-size-containment-vertical-rl.html": [
- "44fa62c79352c9afe756e2686580fe73bcc9379e",
+ "794268655adb74ad8128e6b0589295d813ee2b4f",
[
null,
{}
]
],
"inline-size-containment.html": [
- "154a0a47ce13287298f8e784818a79f450a8a132",
+ "3c94640bf071533fea6f59453172cb95f9073fff",
[
null,
{}
]
],
"layout-dependent-focus.html": [
- "3e28f4a1da16299a8e05cbc3700b3041d925a9e1",
+ "bc8b9b8dc0ba55f280c55f48da3893f65581fe80",
[
null,
{}
]
],
"multicol-container-001.html": [
- "9785b6b0c624d6c94a9fe557e6395a1610c75f99",
+ "714c3b9572694039dbd39e517b24c309739adee9",
[
null,
{}
]
],
"nested-query-containers.html": [
- "348e3d1529e294c06ad91126af628711ff2edbb7",
+ "b45bafc9bef797ab40f5181ac3cb155fc584a6aa",
[
null,
{}
]
],
"nested-size-style-container-invalidation.html": [
- "87256703884c388f882a6c5a0098339af525c5c5",
+ "c22a1a3068b35860778fe0c6604a36233c8bb51b",
[
null,
{}
]
],
"never-match-container.html": [
- "5acded7cc5a085f4aa822e64109872dc91711afa",
+ "d8557aa2cb16996e21ecdad0dbc5e34b58b73f24",
[
null,
{}
@@ -552377,105 +552698,105 @@
]
],
"orthogonal-wm-container-query.html": [
- "630226500effd84819a696939c2133ccbbea763b",
+ "c3a4026f7d7bda0a97c9836772cb2444f2b87718",
[
null,
{}
]
],
"percentage-padding-orthogonal.html": [
- "dac71be0bca6e2e86be48a28b1c8863763e57a23",
+ "e468505e6b0ac2697dace9bdf8dff6897088f3b4",
[
null,
{}
]
],
"pseudo-elements-001.html": [
- "e147da5d9e85858a9b4ecc69f65a028d8e0b042b",
+ "8d66eb0045d25996b71fb2f6efe128def86d9023",
[
null,
{}
]
],
"pseudo-elements-003.html": [
- "d7bec8a6e185b1f602600bbf10c4a1c20cf271a7",
+ "909a3215566ecf610f0934a4591526541e39077d",
[
null,
{}
]
],
"pseudo-elements-004.html": [
- "6c0babfae23160f3901c51e4a1b4b4e6a41583df",
+ "0a4ce52b8d16b845e3461157ece886e6c834c5ac",
[
null,
{}
]
],
"pseudo-elements-005.html": [
- "163349adc862bd7bf2c6a5064541eb7e19c66e4c",
+ "a357a13be9e803e34034d55071093c391e0aadfb",
[
null,
{}
]
],
"pseudo-elements-006.html": [
- "39c00d70dc235b7baddd25e5587e844400cc231a",
+ "dee9db64667c8a8318965a983dba53efb914ef86",
[
null,
{}
]
],
"pseudo-elements-007.html": [
- "575cb73af6515b01c39498e91a5db10a6f802551",
+ "1bcd43594596cf948c7678fd8cc70492bfa19e26",
[
null,
{}
]
],
"pseudo-elements-008.html": [
- "dfa07922368d5caa89b7b2568c5bc26e0147b508",
+ "6db12a1829411d060e91c0a2e1d50bd3279bcc5b",
[
null,
{}
]
],
"pseudo-elements-013.html": [
- "e41fc7611a4e30351910ebfd7908c0b9e0648552",
+ "1036c62ee5d409fe0e1c7141b5846abb3001b080",
[
null,
{}
]
],
"query-content-box.html": [
- "5b83944d2f81deebb3c685cc7c87dd2fd03f17d7",
+ "1ed98ba1d56878c711e49bcbde5634c026bf4f8a",
[
null,
{}
]
],
"query-evaluation-style.html": [
- "75876dd1ac354986fe7cba18ceebb99f510cafd5",
+ "585d5e7742b66f504a1e17e0b531b1802c41c509",
[
null,
{}
]
],
"query-evaluation.html": [
- "d5c77c3a7e4a7c403dc058c36763d941069ef049",
+ "68d803be2c4e27b8278effc4410a85363dc40899",
[
null,
{}
]
],
"reattach-container-with-dirty-child.html": [
- "914155a660239a10f47fc6f11011c559903f2725",
+ "5a4b9e311bde3dfcafb448d829b18c4ee2b2bfd0",
[
null,
{}
]
],
"registered-color-style-queries.html": [
- "fd663d2c2d839aa84a175c0c077aa20f85a00766",
+ "dc1393ba05c872988487e733c56dbcb826c5ed26",
[
null,
{}
@@ -552483,49 +552804,49 @@
],
"scroll-state": {
"at-container-overflowing-parsing.html": [
- "5c15a825853f7e545d43fe6f2c73cb0cc4bc45b4",
+ "e45326a2ffec65ba1653afa5372e908bc825a8ae",
[
null,
{}
]
],
"at-container-overflowing-serialization.html": [
- "f55cfeb63433cda37e1dd3393fc990107679b522",
+ "75a2be3bb788488b9521b8c6b1ae3e739f2b1c47",
[
null,
{}
]
],
"at-container-snapped-parsing.html": [
- "0a8fe50bc38e7bb297cb2f0e9092680918599472",
+ "adeace0a7d4f27bc58ad9aeb657fa28e1a45d161",
[
null,
{}
]
],
"at-container-snapped-serialization.html": [
- "59cc3d37f4f3fb9293568d5f82c5a060dc3fd456",
+ "748b5e3d1ace34e01062f7e4efa7ea39f075c41c",
[
null,
{}
]
],
"at-container-stuck-parsing.html": [
- "a3a1f01458d1ce321b21089ba3f65ffa12ee34d4",
+ "c1e0b0b1807222d373328af31b5edf036909ef5b",
[
null,
{}
]
],
"at-container-stuck-serialization.html": [
- "d5abede45c25be5b6c191482dee9936785d48068",
+ "85585130c1efe5a0b870c61d21602f1147fdd192",
[
null,
{}
]
],
"container-type-scroll-state-computed.html": [
- "4e80712beab2dc63f7d22bbe0973a5d8e84a56cf",
+ "4e156db4e8cdaa9be05b2ac38c8697ed6309f670",
[
null,
{}
@@ -552539,91 +552860,105 @@
]
],
"container-type-scroll-state-parsing.html": [
- "7f3779bc39d1850d423434fbe94f71e8dfb133cb",
+ "4a98243353669962b4819bb06eed403cda7a4b8e",
[
null,
{}
]
],
"scroll-state-initially-overflowing.html": [
- "91e45c794039fa5d7fbabbee2d209490837a661e",
+ "fe26333e55c493eac5972d852d60f3915add8b75",
[
null,
{}
]
],
"scroll-state-initially-snapped.html": [
- "64a171c361e7c93f1339887ed224a305c980ef99",
+ "c427e2dd569a59f58013396d2281bc4db9d0a8a6",
[
null,
{}
]
],
"scroll-state-initially-stuck.html": [
- "c0d59b61e768d77afd44a3ae344718a6e83ef728",
+ "9319e8ce1d9fcbbb95efaf79439662cd5a25b7f6",
[
null,
{}
]
],
"scroll-state-overflowing-change.html": [
- "ae0fd155f4c9c1e14483862a813a0684a4033726",
+ "15cdc96421fe89be7f944d7b5988a81bd591ab9a",
[
null,
{}
]
],
"scroll-state-overflowing-container-type-change.html": [
- "a011da4039de5e77a53cae8bb2040248970f9fd7",
+ "ecb12141603238031aaabb644e607e0bad78b41a",
[
null,
{}
]
],
"scroll-state-overflowing-layout-change.html": [
- "39181292ff7b82b9127dad64a594b6faa4d4a9ca",
+ "72344e2943dea37e553daca83ec68515aa7a7f91",
+ [
+ null,
+ {}
+ ]
+ ],
+ "scroll-state-overflowing-pseudo.html": [
+ "cb2638c5c122b53e4e122785203f3dcf6db8b8f5",
[
null,
{}
]
],
"scroll-state-overflowing-wm.html": [
- "46b2a590782df1bc59c4c86084940d589a377101",
+ "137808db805ef93e976d726630215ca1c5e9406c",
[
null,
{}
]
],
"scroll-state-snapped-change.html": [
- "6e9843b8b755b163acaa6f8137a86566803044e9",
+ "5dfea29404f5cbdea1fa66b8a0240d2b5a4648ce",
[
null,
{}
]
],
"scroll-state-snapped-container-type-change.html": [
- "4eb5de2679ef423ca3269d8e557d85ca609b20d4",
+ "81ed499801110dc4bd113ee52ccb106f6ff67b63",
[
null,
{}
]
],
"scroll-state-snapped-layout-change.html": [
- "26392239cdec562aaa84f072650bc7c0b23bde79",
+ "e1f2f687a8e6b26eac9c1255a989c83a11bb73ab",
[
null,
{}
]
],
"scroll-state-snapped-none.html": [
- "8c7aae56bebf34adb9214a36b3779ff45d085dcd",
+ "60efb78082d99452e637bef5202e77d7634b628b",
+ [
+ null,
+ {}
+ ]
+ ],
+ "scroll-state-snapped-pseudo.html": [
+ "1d7aaafcf303885a55949144e9aa648d31947c88",
[
null,
{}
]
],
"scroll-state-snapped-snap-changing.html": [
- "161c2e1368dd2ba88442c367cd1f1a06ac9b8b3f",
+ "85f678f07e1f40b04741c6a070af6b61cdaa229a",
[
null,
{
@@ -552632,35 +552967,42 @@
]
],
"scroll-state-snapped-wm.html": [
- "b6703e81142a3e22726ccd826aaab873b09b43a4",
+ "10bfd83b3ab6a9822385b34325394cc3169849e2",
[
null,
{}
]
],
"scroll-state-stuck-container-type-change.html": [
- "9c6df64832288706b6748dfdf2db9b3a907eab8c",
+ "f29b46e90f72bd689ddae2bde9ec45d29a89b158",
[
null,
{}
]
],
"scroll-state-stuck-layout-change.html": [
- "9d5b8195eed14046f3804f549ebb9919a69688f6",
+ "a2297c8122ebb695da58e18546e8ea3786f97907",
+ [
+ null,
+ {}
+ ]
+ ],
+ "scroll-state-stuck-pseudo.html": [
+ "f6a89e120004d7e289b89417a567117651ae9668",
[
null,
{}
]
],
"scroll-state-stuck-writing-direction.html": [
- "eb0c1c4a84ec54a1c167455c50f793711bdcffea",
+ "a082207aca7be76223ef61ce635f5f6a1d1b818a",
[
null,
{}
]
],
"scroll-state-target-query-change.html": [
- "33459f470b9920e81092a93bc82a72ef01c195b5",
+ "605b398b7a99a767a567dab69da2f1880e6bb798",
[
null,
{}
@@ -552668,154 +553010,154 @@
]
},
"sibling-layout-dependency.html": [
- "eb3df2ba410d34b62686351fc6834287fbd73baa",
+ "1cef872d60f93a620580ddd7f3620cb7b1be2ed3",
[
null,
{}
]
],
"size-container-no-principal-box.html": [
- "730bb1d7361ae449d7c129a318d89cd6f9c6adb4",
+ "cca59a434cd1f7b81828888d300c281d5944053f",
[
null,
{}
]
],
"size-container-writing-mode-change.html": [
- "dd709388b7ddffb951f52b2c84d9bbb4e8b93bac",
+ "33047dbb7584cacd3219fe7e32d622976be21aba",
[
null,
{}
]
],
"size-feature-evaluation.html": [
- "282233dec9d00786295324bbea99e33db8c77eb8",
+ "4ea81271fd23f335b31c9e6c057e736e76a44f63",
[
null,
{}
]
],
"style-change-in-container.html": [
- "abbb1266e6994fafe20cb8183e2cddbeefa82b84",
+ "612c387a6d3d7691b7535366797d77b93a8104e6",
[
null,
{}
]
],
"style-container-for-shadow-dom.html": [
- "22ab9b9c3e802c346eebb92b65b76dcce307d064",
+ "5ff49d37909d1bdf92e535dae8c8e03b79fe8057",
[
null,
{}
]
],
"style-container-invalidation-inheritance.html": [
- "9d2ab5611017f8519327d244d8287a3a61b8206b",
+ "2986b8461b9d6a5d0a0aaba8dd10f4b7b575aed3",
[
null,
{}
]
],
"style-not-sharing-float.html": [
- "c36339491134b487d30dca332fe3aba1e794e3db",
+ "2931113726f4146694ce583a7a6f62cc8910ca02",
[
null,
{}
]
],
"style-query-document-element.html": [
- "ff370a9b26db70d046b74c52f2279aed3c0c82a6",
+ "8ea959487b717ab0fc6ee0c619ed35054010741b",
[
null,
{}
]
],
"style-query-no-cycle.html": [
- "5a179d38976637780dffcb23829c7ee386ae6371",
+ "fc7d658759e4b347f2b85d7512e3b93071b668a7",
[
null,
{}
]
],
"style-query-with-unknown-width.html": [
- "52f250c2d0d942db2d1e2e7eeae0b89f593cc744",
+ "3791369436f6ab4a62ee16eaf566c30f3fb35332",
[
null,
{}
]
],
"svg-foreignobject-child-container.html": [
- "8dc98a6321c1a3a8fe71936a09d092acc2666f52",
+ "95dde8d3a0232b11a7daee0c06ed540e4558cd8f",
[
null,
{}
]
],
"svg-root-size-container.html": [
- "ccdcf557d513e7c3f7ebc4b4200fc03626c0c755",
+ "68b34fb2125f60dee93b8b4d3461bb8e5c2f4bcc",
[
null,
{}
]
],
"top-layer-dialog-container.html": [
- "40a611bc918f687d3cb45947fec6491393664e35",
+ "9920f1957bef5c861ff46c6f35337837e267ed40",
[
null,
{}
]
],
"top-layer-dialog.html": [
- "255b42acff67bf1459c874718a886cef761d76b1",
+ "6a9a297896a2f5b361784d399d34abaa534f28d2",
[
null,
{}
]
],
"top-layer-nested-dialog.html": [
- "a988efe02f68f624918f138fe264b7b83cd321c1",
+ "b70ee7c29bda608fe2010bf97a6b67abf12f1f34",
[
null,
{}
]
],
"transition-scrollbars.html": [
- "9d3f3a1c6c69ccab09c33492af49eb68fc7d2304",
+ "45ef9f7c7a497a2b26a38df54f78dfea6cd34902",
[
null,
{}
]
],
"transition-style-change-event-002.html": [
- "f5b32c6fa0e282c4de823f1173d49779ca8d2744",
+ "64b3521d534420b0bc079655982734ad00c7d8d0",
[
null,
{}
]
],
"transition-style-change-event.html": [
- "8940284f99091612c50ecf20cac6324f0faaac85",
+ "1034c554686997406ccb2647d3fe503fc132d234",
[
null,
{}
]
],
"unsupported-axis.html": [
- "80bbf9776dfe486045275de068b0a4281ea5ffeb",
+ "02c6f22c3c322e3d405a8177502492302cbdbc5c",
[
null,
{}
]
],
"viewport-units-dynamic.html": [
- "10f65efc0aeefa9a56c88b6820c85142987a70e2",
+ "3acef812adfb9b259b0a0bd635cf3c4e556537e3",
[
null,
{}
]
],
"viewport-units.html": [
- "498a9c7eb2d31e3f15a49b3c16b0decdd246f144",
+ "9be28fec894d4ccf3eb5dd975124251856667806",
[
null,
{}
@@ -552879,6 +553221,13 @@
{}
]
],
+ "supports-at-rule.tentative.html": [
+ "84214c385cd901dd01dd363fce643bf1f63b9578",
+ [
+ null,
+ {}
+ ]
+ ],
"supports-conditionText.html": [
"ea74077dfd0070edd9e8ae4f2ab092bf369ce268",
[
@@ -560806,7 +561155,7 @@
]
],
"grid-fit-content-percentage.html": [
- "892dbe40b46867b5f5c0b9b628e70decc9cdaedd",
+ "22683fef14f092bef74647f33b49ea67fb295ddf",
[
null,
{}
@@ -564136,6 +564485,13 @@
null,
{}
]
+ ],
+ "top-level-parent-pseudo-specificity.html": [
+ "40ac2459831e618b7e9e19dda1280275ddbb7977",
+ [
+ null,
+ {}
+ ]
]
},
"css-overflow": {
@@ -566482,6 +566838,13 @@
{}
]
],
+ "the-select-arrow-pseudo-element.tentative.html": [
+ "b71bfe2363475442a9b0a151b72f9884ec14f240",
+ [
+ null,
+ {}
+ ]
+ ],
"tree-abiding-pseudo-elements.html": [
"7839a38049a190135149c0d3d3b35fbc2d29d207",
[
@@ -568235,6 +568598,15 @@
null,
{}
]
+ ],
+ "unrelated-gesture-scroll-during-snap.html": [
+ "0390bdad257c9d7817eccaebba61fceacbf9ce8f",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
]
},
"css-scroll-snap-2": {
@@ -570760,7 +571132,28 @@
{}
]
],
+ "replaced-fractional-height-from-aspect-ratio.html": [
+ "0aece7f95ac628b242eddc9c5db9968900842745",
+ [
+ null,
+ {}
+ ]
+ ],
"stretch": {
+ "auto-margins-1.html": [
+ "658c3e30d71e2837163d4503cc6cb16ffab8a95d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "auto-margins-2.html": [
+ "fcd2f12dfaed131f087f1c1802e4a489abd33b12",
+ [
+ null,
+ {}
+ ]
+ ],
"block-height-1.html": [
"94960f15b96f9fbb6370e94fbbffb9336373c76c",
[
@@ -570775,6 +571168,34 @@
{}
]
],
+ "indefinite-1.html": [
+ "e69689c939f42b330f68eaa2ae07885557f65657",
+ [
+ null,
+ {}
+ ]
+ ],
+ "indefinite-2.html": [
+ "e8df12ccaa32f01dce2f1dfd607ad98646e91f3d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "indefinite-3.html": [
+ "67fbd50d4f7a74735d50a967bc111b02a9b54263",
+ [
+ null,
+ {}
+ ]
+ ],
+ "indefinite-4.html": [
+ "e08af30f6e4d01e1ee3d7f4c201ea9aeb3000dbd",
+ [
+ null,
+ {}
+ ]
+ ],
"parsing.html": [
"1f5bd39059ebffe59925dd616ad79e7d0a0f7f78",
[
@@ -575982,7 +576403,7 @@
]
},
"properties-value-001.html": [
- "54e84be2b09052b329aa160ece8e5bc3ed78375d",
+ "314ae42a5b05a33cebf4695fa709d7e51112213f",
[
null,
{
@@ -575991,14 +576412,14 @@
]
],
"properties-value-002.html": [
- "ed85b007d2c4d5dcd81eb71e5e87de9a6104739c",
+ "14c8f907dfb9b4bd6c2ae8678418ee8c01f6e9ce",
[
null,
{}
]
],
"properties-value-003.html": [
- "faf0258a60be1767425a12ba29a2bd57eaad5194",
+ "d90aea54c310d150368f7b8f56bb4832d6679317",
[
null,
{
@@ -576007,7 +576428,7 @@
]
],
"properties-value-implicit-001.html": [
- "8500436c529707f43349354ee87ef460e2d7d63b",
+ "d49505ef126aacd39183925d5ea3c6f07842230b",
[
null,
{
@@ -576016,7 +576437,7 @@
]
],
"properties-value-inherit-001.html": [
- "abbdecdfae9159fd0d315d6dea955e81aec988ce",
+ "8088ddfad1af58b6de7a7e6f8f96f9a903d170f1",
[
null,
{
@@ -576025,7 +576446,7 @@
]
],
"properties-value-inherit-002.html": [
- "9556cf7e23af7f755d5c1e9d09571fb8a9ee91aa",
+ "01990561438c93db8d3174c5e511c3042f0b8266",
[
null,
{
@@ -576034,14 +576455,14 @@
]
],
"properties-value-inherit-003.html": [
- "13a16132134c14b273a443779a9b95468ec1af9f",
+ "60f498c53f6bb1ef7d91ee04ffb321242f5604ce",
[
null,
{}
]
],
"pseudo-elements-001.html": [
- "146c533e235f0061872586039172a51c2d779873",
+ "5fb8fb6c0702a3ace19feda631ebf7070191db0f",
[
null,
{}
@@ -579457,29 +579878,36 @@
]
]
},
+ "attr-IACVT.html": [
+ "22c5b4e84abe0c8589d17ee0ac92a324b1490873",
+ [
+ null,
+ {}
+ ]
+ ],
"attr-all-types.html": [
- "1e1f7d015ccffaa4641602e7aaf02b8128e2d4e8",
+ "c48e476b6d9ae71c0c66fe5fb8a9d26321feb633",
[
null,
{}
]
],
"attr-container-style-query.html": [
- "2cc872509c085ec05c9da512b2388dc1e5bafa78",
+ "9afa95f81ef20abc277d38e8d1ed01c9b2f8a6cd",
[
null,
{}
]
],
"attr-invalidation.html": [
- "a48556e5ff7273772e1b037114f0112a8773b6a0",
+ "47d617010c50859430190e1fe43f0de465bc399a",
[
null,
{}
]
],
"attr-pseudo-elem-invalidation.html": [
- "1ef912bf75d2ed811e4676754a794dc6f2564f31",
+ "c17704f009c77e221ce489ca0c6dab27deaab89c",
[
null,
{}
@@ -580369,7 +580797,7 @@
]
],
"signs-abs-computed.html": [
- "8bad89e557b8e7a042a24732e380e815c12de2ab",
+ "fe4b938c5b44bc7071486121ef641fb4270a6e8a",
[
null,
{}
@@ -587415,7 +587843,14 @@
]
],
"ElementInternals-accessibility.html": [
- "3b04f257dea0ffef43775be018adcc624819b96a",
+ "20861e5cfd1db5c58ac5daf26830457b93967f02",
+ [
+ null,
+ {}
+ ]
+ ],
+ "ElementInternals-accessibility.tentative.html": [
+ "2bab6bedfd29872e3c424819db7900e1aa75517a",
[
null,
{}
@@ -587859,7 +588294,14 @@
]
],
"AriaMixin-string-attributes.html": [
- "c058084ab28ce7d3688517578f5367a1287c235c",
+ "0b32326f5a4d3f5d42b1150b002055e0541caff8",
+ [
+ null,
+ {}
+ ]
+ ],
+ "AriaMixin-string-attributes.tentative.html": [
+ "8c81adb30c6c684feb7a601b143363292a2500b5",
[
null,
{}
@@ -588969,14 +589411,39 @@
"dom": {
"abort": {
"AbortSignal.any.js": [
- "3bbdc11a92f90d4e2d4dc8a57ca5774b43dac556",
+ "c2fc88d3b4f103a995e0e6450ba4a0a4cabcad8e",
[
"dom/abort/AbortSignal.any.html",
- {}
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,shadowrealm"
+ ]
+ ]
+ }
+ ],
+ [
+ "dom/abort/AbortSignal.any.shadowrealm.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,shadowrealm"
+ ]
+ ]
+ }
],
[
"dom/abort/AbortSignal.any.worker.html",
- {}
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,shadowrealm"
+ ]
+ ]
+ }
]
],
"abort-signal-any.any.js": [
@@ -589012,14 +589479,39 @@
]
],
"event.any.js": [
- "34af8ee5c560ae23aea4bb61ecf7420049fa411e",
+ "afc003b94e6c19acd443f9c850e0b06d84fb74ea",
[
"dom/abort/event.any.html",
- {}
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,shadowrealm"
+ ]
+ ]
+ }
+ ],
+ [
+ "dom/abort/event.any.shadowrealm.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,shadowrealm"
+ ]
+ ]
+ }
],
[
"dom/abort/event.any.worker.html",
- {}
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,shadowrealm"
+ ]
+ ]
+ }
]
],
"reason-constructor.html": [
@@ -589028,6 +589520,45 @@
null,
{}
]
+ ],
+ "timeout-shadowrealm.any.js": [
+ "c87b047c2212eda35d0c79063093b7d3501538cc",
+ [
+ "dom/abort/timeout-shadowrealm.any.shadowrealm.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "shadowrealm"
+ ]
+ ]
+ }
+ ]
+ ],
+ "timeout.any.js": [
+ "61b595e717c844259b6f75d9bd8b1cbd9b66d8d2",
+ [
+ "dom/abort/timeout.any.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker"
+ ]
+ ]
+ }
+ ],
+ [
+ "dom/abort/timeout.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker"
+ ]
+ ]
+ }
+ ]
]
},
"attributes-are-nodes.html": [
@@ -592046,7 +592577,7 @@
]
],
"ParentNode-append.html": [
- "4e101f73a25719af97280f56cbfe8b463e1f5339",
+ "928c184b8d56198e230d33f8a6f7787203b8e375",
[
null,
{}
@@ -592711,6 +593242,13 @@
{}
]
],
+ "focus-within.html": [
+ "18d8c93b9982dd96a14c5548257292ad7b76c315",
+ [
+ null,
+ {}
+ ]
+ ],
"fullscreen-preserve.html": [
"810eeac9af90f80e18ed149e875b3656f81b3a1d",
[
@@ -592818,7 +593356,7 @@
]
],
"selection-preserve.html": [
- "04b81c9a0563894c68ad498b49352e7de9e01049",
+ "8739209b620562caf8aeb49110c3e3ef5a7a059a",
[
null,
{
@@ -597681,7 +598219,7 @@
]
],
"insertHTML.html": [
- "00bd0df1d5249bdbe2a41add8b2d58d8330bb3f2",
+ "efc2609828ccbf576fe79fbfe1b3da4f2f6bb6b7",
[
"editing/plaintext-only/insertHTML.html?white-space=normal",
{
@@ -597708,7 +598246,7 @@
]
],
"insertLineBreak.html": [
- "73ee625dd6277257fb61240e37f363b58bac0430",
+ "32448ed37e25a3eaaca335dadb5c90591dcebf9d",
[
"editing/plaintext-only/insertLineBreak.html?white-space=normal",
{
@@ -597739,7 +598277,7 @@
]
],
"insertParagraph.html": [
- "429da8d134f6bf21b726208046a53877a6a24e69",
+ "70cbdd1b36811988c9b77aefef4c8d994b960f4f",
[
"editing/plaintext-only/insertParagraph.html?white-space=normal",
{
@@ -597766,7 +598304,7 @@
]
],
"insertText.html": [
- "664b9befb8d33b81e28971d69345cc2142f21a0b",
+ "4a3ef23bbbd8cb17733e17efbf046455736a1ecf",
[
"editing/plaintext-only/insertText.html?white-space=normal",
{
@@ -597797,7 +598335,7 @@
]
],
"paste.https.html": [
- "9081028732a1a8f7c7c1bce0f581fc0686737a37",
+ "191a83ff8f05f6817388c814832578c4d1a409ef",
[
"editing/plaintext-only/paste.https.html?white-space=normal",
{
@@ -598687,7 +599225,7 @@
]
],
"cross-origin-element.sub.html": [
- "1052bf246d0fa262ce5370f4152cb60dd758adab",
+ "25a07a435e9eea0119070c0c6caadb31887e4859",
[
null,
{}
@@ -598759,7 +599297,7 @@
]
],
"image-TAO.sub.html": [
- "7b455dfa4c405de3918efbcd0f9648be09346948",
+ "7986e69500ef7db1f0bc6aeb1cb07d41455b8988",
[
null,
{}
@@ -598849,13 +599387,6 @@
{}
]
],
- "multiple-redirects-TAO.html": [
- "3a45b552bea0f599fd778e62a77759321384fd2f",
- [
- null,
- {}
- ]
- ],
"observe-background-image.html": [
"6a43401cd0f4270f52b9167393b1b9fd0a7d9cce",
[
@@ -598940,13 +599471,6 @@
{}
]
],
- "redirects-tao-star.html": [
- "e5067d3d6bd7915522bfb670fad0919f0e4101fb",
- [
- null,
- {}
- ]
- ],
"retrievability.html": [
"cd2c2a956e194cd06b5374a26dc9f1b06fe5f482",
[
@@ -614739,24 +615263,30 @@
]
],
"navigate-ancestor-nested-fenced-frame.https.html": [
- "ec41fe8757564da2dda6107bc494266a87b7f323",
+ "fb50be94fbc098bf8f4a35093c09b699cba67ecd",
[
null,
- {}
+ {
+ "testdriver": true
+ }
]
],
"navigate-ancestor-nested-iframe.https.html": [
- "977eae17486de1997c177921b1934d68ce1725bf",
+ "83656a28c114c0cd1f286c832eac5b7a86490c4d",
[
null,
- {}
+ {
+ "testdriver": true
+ }
]
],
"navigate-ancestor-top-level-fenced-frame.https.html": [
- "9907f25292ca77a58dc8f310c57c3ccf6b7a8f8c",
+ "bfce01094d59eada4026f63d7fcbeaab187cdcaf",
[
null,
- {}
+ {
+ "testdriver": true
+ }
]
],
"navigate-by-name-succeed.https.html": [
@@ -630282,7 +630812,7 @@
]
],
"additional-bids.https.window.js": [
- "3ba0b49cbc089e2c3789bbf0bf2d75f59c0145e1",
+ "9cddbaf065d17393ff30c0efab3413209c5fbda3",
[
"fledge/tentative/additional-bids.https.window.html?1-last",
{
@@ -639351,7 +639881,7 @@
]
],
"server-response.https.window.js": [
- "1d272fb59a82c638834e1f2e6560d6204e8dbaf1",
+ "7bbe4bbf00840ab21c213ad3d4ab7ad7470974c7",
[
"fledge/tentative/server-response.https.window.html?1-4",
{
@@ -639439,6 +639969,10 @@
[
"variant",
"?49-52"
+ ],
+ [
+ "variant",
+ "?53-56"
]
],
"timeout": "long"
@@ -639531,6 +640065,10 @@
[
"variant",
"?49-52"
+ ],
+ [
+ "variant",
+ "?53-56"
]
],
"timeout": "long"
@@ -639623,6 +640161,10 @@
[
"variant",
"?49-52"
+ ],
+ [
+ "variant",
+ "?53-56"
]
],
"timeout": "long"
@@ -639715,6 +640257,10 @@
[
"variant",
"?49-52"
+ ],
+ [
+ "variant",
+ "?53-56"
]
],
"timeout": "long"
@@ -639807,6 +640353,10 @@
[
"variant",
"?49-52"
+ ],
+ [
+ "variant",
+ "?53-56"
]
],
"timeout": "long"
@@ -639899,6 +640449,10 @@
[
"variant",
"?49-52"
+ ],
+ [
+ "variant",
+ "?53-56"
]
],
"timeout": "long"
@@ -639991,6 +640545,10 @@
[
"variant",
"?49-52"
+ ],
+ [
+ "variant",
+ "?53-56"
]
],
"timeout": "long"
@@ -640083,6 +640641,10 @@
[
"variant",
"?49-52"
+ ],
+ [
+ "variant",
+ "?53-56"
]
],
"timeout": "long"
@@ -640175,6 +640737,10 @@
[
"variant",
"?49-52"
+ ],
+ [
+ "variant",
+ "?53-56"
]
],
"timeout": "long"
@@ -640267,6 +640833,10 @@
[
"variant",
"?49-52"
+ ],
+ [
+ "variant",
+ "?53-56"
]
],
"timeout": "long"
@@ -640359,6 +640929,10 @@
[
"variant",
"?49-52"
+ ],
+ [
+ "variant",
+ "?53-56"
]
],
"timeout": "long"
@@ -640451,6 +641025,106 @@
[
"variant",
"?49-52"
+ ],
+ [
+ "variant",
+ "?53-56"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "fledge/tentative/server-response.https.window.html?53-56",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/resources/testdriver.js"
+ ],
+ [
+ "script",
+ "/resources/testdriver-vendor.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/ba-fledge-util.sub.js"
+ ],
+ [
+ "script",
+ "resources/fledge-util.sub.js"
+ ],
+ [
+ "script",
+ "third_party/cbor-js/cbor.js"
+ ],
+ [
+ "script",
+ "/common/subset-tests.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ],
+ [
+ "variant",
+ "?1-4"
+ ],
+ [
+ "variant",
+ "?5-8"
+ ],
+ [
+ "variant",
+ "?9-12"
+ ],
+ [
+ "variant",
+ "?13-16"
+ ],
+ [
+ "variant",
+ "?17-20"
+ ],
+ [
+ "variant",
+ "?21-24"
+ ],
+ [
+ "variant",
+ "?25-28"
+ ],
+ [
+ "variant",
+ "?29-32"
+ ],
+ [
+ "variant",
+ "?33-36"
+ ],
+ [
+ "variant",
+ "?37-40"
+ ],
+ [
+ "variant",
+ "?41-44"
+ ],
+ [
+ "variant",
+ "?45-48"
+ ],
+ [
+ "variant",
+ "?49-52"
+ ],
+ [
+ "variant",
+ "?53-56"
]
],
"timeout": "long"
@@ -640543,6 +641217,10 @@
[
"variant",
"?49-52"
+ ],
+ [
+ "variant",
+ "?53-56"
]
],
"timeout": "long"
@@ -664400,90 +665078,6 @@
{}
]
],
- "2d.composite.grid.filter.no_shadow.drawImage.worker.js": [
- "45329fcd9c8b222abe33fff963358e4b8ae728d6",
- [
- "html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.worker.html",
- {}
- ]
- ],
- "2d.composite.grid.filter.no_shadow.fillRect.worker.js": [
- "dff55436a40b07924332b17725d930f9c3956a4c",
- [
- "html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.worker.html",
- {}
- ]
- ],
- "2d.composite.grid.filter.no_shadow.pattern.worker.js": [
- "d3e79cd2d156f65378c8e9ddeb4f7ee326a0c2c4",
- [
- "html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.worker.html",
- {}
- ]
- ],
- "2d.composite.grid.filter.shadow.drawImage.worker.js": [
- "9a9c2f9363225722249284b1ac48709482b1f204",
- [
- "html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.worker.html",
- {}
- ]
- ],
- "2d.composite.grid.filter.shadow.fillRect.worker.js": [
- "f495009b301eeb9c36286f6fe8dc6edcc835427c",
- [
- "html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.worker.html",
- {}
- ]
- ],
- "2d.composite.grid.filter.shadow.pattern.worker.js": [
- "d960d0d54014226083b2d86e922048aea84a6db1",
- [
- "html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.worker.html",
- {}
- ]
- ],
- "2d.composite.grid.no_filter.no_shadow.drawImage.worker.js": [
- "de1686a76e80b558ca3b9b40f86b9ea80a053a1d",
- [
- "html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.worker.html",
- {}
- ]
- ],
- "2d.composite.grid.no_filter.no_shadow.fillRect.worker.js": [
- "cb60645b70402e4e97a34d78687e12365215613c",
- [
- "html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.worker.html",
- {}
- ]
- ],
- "2d.composite.grid.no_filter.no_shadow.pattern.worker.js": [
- "e1479261ce22afe939a593343c1dcacc01dc0050",
- [
- "html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.worker.html",
- {}
- ]
- ],
- "2d.composite.grid.no_filter.shadow.drawImage.worker.js": [
- "c7827238f6936c67f0a1a705008c38d4c75bc310",
- [
- "html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.worker.html",
- {}
- ]
- ],
- "2d.composite.grid.no_filter.shadow.fillRect.worker.js": [
- "217fe38a8de678c2dc69b21faf5bc8abb6c2fd50",
- [
- "html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.worker.html",
- {}
- ]
- ],
- "2d.composite.grid.no_filter.shadow.pattern.worker.js": [
- "f26657b521426a8773ef674b1be07c31411adbc8",
- [
- "html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.worker.html",
- {}
- ]
- ],
"2d.composite.image.clear.html": [
"f001c4409c3e2c2ca59b64de64174cf6251624f6",
[
@@ -682083,7 +682677,14 @@
},
"dom": {
"aria-attribute-reflection.html": [
- "d2e5b03f853baa85ee53224953e3995ec3743a80",
+ "2a73f5c557b3e534756ccfa307ca958dde51c577",
+ [
+ null,
+ {}
+ ]
+ ],
+ "aria-attribute-reflection.tentative.html": [
+ "db38ddef06c61989dbe89bec9bc8b7ac14c55809",
[
null,
{}
@@ -682922,7 +683523,7 @@
]
],
"innertext-whitespace-pre-line.html": [
- "c5696df9de87fa86803b87ed95101d320f146197",
+ "8ce76f2eb1fcb575cb58ac9bd1e6356b7a5cddd2",
[
null,
{}
@@ -695396,7 +695997,7 @@
]
],
"selectedoption.tentative.html": [
- "b3381ac510a9905b0907e1528287197352bc4c86",
+ "398b0b988de057bed208846d5e8499a60fd45d3d",
[
null,
{
@@ -695405,14 +696006,14 @@
]
],
"selectedoptionelement-attr.tentative.html": [
- "63b4af3abc8bf7b40c68295fe3d0ff6139c2229a",
+ "f7ef48c24e401fec34b1db776863f0160c9dcacf",
[
null,
{}
]
],
"switch-picker-appearance.tentative.html": [
- "7a58f62e2900f8ca6c7cb1438a4f303602e31f03",
+ "3367cc7cd37dd6d9aa35960278ff14065fbcdcdd",
[
null,
{
@@ -696014,6 +696615,13 @@
{}
]
],
+ "dialog-active-document.html": [
+ "d6eea38fa8a3993de0643e6711f4924c4947c52d",
+ [
+ null,
+ {}
+ ]
+ ],
"dialog-autofocus-just-once.html": [
"894efd59dc290d682b6732e49782606a90f4fad1",
[
@@ -696243,7 +696851,7 @@
]
],
"dialog-showModal.html": [
- "47612e759eaa4996f56366cbbd333ba676a08824",
+ "652378e015b56d88c99dd46bfce9b5e57e0aa076",
[
null,
{}
@@ -697061,6 +697669,13 @@
}
]
],
+ "popover-active-document.html": [
+ "6ad1142ed79c64c5a461813c59467e03d6b4bf97",
+ [
+ null,
+ {}
+ ]
+ ],
"popover-anchor-display-none.tentative.html": [
"8db022b1262f84ff6e570d13ce0bf14fbcdd5d68",
[
@@ -697335,6 +697950,13 @@
}
]
],
+ "popover-minimum-role.html": [
+ "8606f983969b9fc94e2684073a4946e9358e3507",
+ [
+ null,
+ {}
+ ]
+ ],
"popover-move-documents.html": [
"11f52c2f2f0d14c74649cc7c52ac6e5ac68058b1",
[
@@ -715450,6 +716072,33 @@
]
},
"media-capabilities": {
+ "decodingInfo-webrtc.any.js": [
+ "0f3a4fa0f2d282a694a9e0a0d5c2abfe0697cde1",
+ [
+ "media-capabilities/decodingInfo-webrtc.any.html",
+ {
+ "script_metadata": [
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "media-capabilities/decodingInfo-webrtc.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
"decodingInfo.any.js": [
"7362c11f932c7c57c87d3bfc394feb1b24b239d0",
[
@@ -715477,13 +716126,6 @@
}
]
],
- "decodingInfo.webrtc.html": [
- "f2839561006970694ad54e86a0613d8c2cfbb25f",
- [
- null,
- {}
- ]
- ],
"decodingInfoEncryptedMedia.http.html": [
"267b23431b7fdf3baf3d4843d68778bb1cc15c85",
[
@@ -715500,6 +716142,33 @@
}
]
],
+ "encodingInfo-webrtc.any.js": [
+ "635801c9f1a4163269d719aa12e5e5396b9e6562",
+ [
+ "media-capabilities/encodingInfo-webrtc.any.html",
+ {
+ "script_metadata": [
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "media-capabilities/encodingInfo-webrtc.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
"encodingInfo.any.js": [
"6882b0ae9117ab268ff5710f7f9b397b1daedbbf",
[
@@ -715511,13 +716180,6 @@
{}
]
],
- "encodingInfo.webrtc.html": [
- "414b7944f6169e34f67979ce0a98ff915552f6b5",
- [
- null,
- {}
- ]
- ],
"idlharness.any.js": [
"6da5c7d2848c2dc8a669dfcf621233c40a227c03",
[
@@ -724165,7 +724827,7 @@
]
],
"paint-visited.html": [
- "c02ea2405258f34df3c88b17e4b6d383913ed8f9",
+ "eb61d51eeaccd0d00cf9fb9fe7483f3455482d77",
[
null,
{}
@@ -726581,6 +727243,13 @@
]
],
"experimental-features": {
+ "focus-without-user-activation-default-permissions-policy.tentative.https.sub.html": [
+ "9ca1426040c6edecba4200c92b53ff8ce6ee61cd",
+ [
+ null,
+ {}
+ ]
+ ],
"focus-without-user-activation-disabled-tentative.html": [
"3980fd1219cba990454ffa86e0a5bd493b9eb5e6",
[
@@ -728978,7 +729647,7 @@
]
],
"pointerevent_sequence_at_implicit_release_on_click.html": [
- "bfcc8ad54a8d74bbc5a1a0fa7ae756b0f32c5d1b",
+ "1895765cd55407d84122c41ec1b3db2a9254a219",
[
"pointerevents/pointerevent_sequence_at_implicit_release_on_click.html?mouse",
{
@@ -729198,7 +729867,7 @@
]
],
"pointerevent_touch-action-inherit_parent-none_touch.html": [
- "d927ed94b329f8e7487cd455aa264a0bd397b189",
+ "828864602c4a7698f3543416c0f52539caead23a",
[
null,
{
@@ -729217,7 +729886,7 @@
]
],
"pointerevent_touch-action-modified_touch.html": [
- "a91022504a7ebf8dee21a368b5911285ef614e1c",
+ "9f0abd683709fb64d04c9afa32ce3bb129a46bc6",
[
null,
{
@@ -730475,6 +731144,53 @@
]
}
]
+ ],
+ "supported-encodings.https.any.js": [
+ "45b5ed1cba46c63c908d35d0391c844acc536c04",
+ [
+ "push-api/supported-encodings.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ]
+ ]
+ }
+ ],
+ [
+ "push-api/supported-encodings.https.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ]
+ ]
+ }
+ ],
+ [
+ "push-api/supported-encodings.https.any.sharedworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ]
+ ]
+ }
+ ],
+ [
+ "push-api/supported-encodings.https.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ]
+ ]
+ }
+ ]
]
},
"quirks": {
@@ -754294,6 +755010,48 @@
{}
]
],
+ "select-url-saved-query-cross-origin-multi-query.tentative.https.sub.html": [
+ "7738d90fa69dd7c5c16f601da1aa1e72f7266c25",
+ [
+ null,
+ {}
+ ]
+ ],
+ "select-url-saved-query-key-tuples.tentative.https.sub.html": [
+ "05bc807b868239126b1f0fbaa8db9c2c690c2b00",
+ [
+ null,
+ {}
+ ]
+ ],
+ "select-url-saved-query-rejection.tentative.https.sub.html": [
+ "819b5e5166a1970ff543583a7fb0a75e7d7821b5",
+ [
+ null,
+ {}
+ ]
+ ],
+ "select-url-saved-query-same-origin-multi-query.tentative.https.sub.html": [
+ "9ee49bb2b25c90ec78a3fcd00da802c7d12d2f27",
+ [
+ null,
+ {}
+ ]
+ ],
+ "select-url-saved-query-validate-index-after-retrieving.tentative.https.sub.html": [
+ "f45ce4957c4644dc017be927e2d2b3b955b9500b",
+ [
+ null,
+ {}
+ ]
+ ],
+ "select-url-saved-query-validate-index-before-storing.tentative.https.sub.html": [
+ "5cb906e61d51fb6396fc757c261e73830dfc3594",
+ [
+ null,
+ {}
+ ]
+ ],
"set-exceed-former-entry-limit.tentative.https.html": [
"b78abbf1efd17711d2bffe641b83266c8f862e14",
[
@@ -754570,6 +755328,34 @@
null,
{}
]
+ ],
+ "select-url-saved-query-async.tentative.https.sub.html": [
+ "f0d35f658b167f75e026ddaca33edb6ed43e1044",
+ [
+ null,
+ {}
+ ]
+ ],
+ "select-url-saved-query-different-operation.tentative.https.sub.html": [
+ "aec53bfccfed5c1d131cd8996e55d9b1b5142bcf",
+ [
+ null,
+ {}
+ ]
+ ],
+ "select-url-saved-query-multi-frame.tentative.https.sub.html": [
+ "c33e1d346aadb8108bcd77878102028bec3b9188",
+ [
+ null,
+ {}
+ ]
+ ],
+ "select-url-saved-query.tentative.https.sub.html": [
+ "0c33bd74fe9a8aace4cc8154bd57aa4643b10484",
+ [
+ null,
+ {}
+ ]
]
},
"signed-exchange": {
@@ -768351,8 +769137,15 @@
]
},
"scripted": {
+ "getcharnumatposition-slr.tentative.html": [
+ "a929d58ba144cc0f1fe6a60e0c7f7281fe5f8ca3",
+ [
+ null,
+ {}
+ ]
+ ],
"getcharnumatposition.html": [
- "779fb477b95d3bb90d2b9c8033f89641ba9c3ca1",
+ "f17369b3742eddddbee792e0a0d983c24052f0ef",
[
null,
{}
@@ -768379,6 +769172,13 @@
{}
]
],
+ "getstartpositionofchar.html": [
+ "5b09ea198a283324161ebaaac2f51b54ccdb8166",
+ [
+ null,
+ {}
+ ]
+ ],
"getsubstringlength-emoji-ligatures.html": [
"2b6061be5dbde360f259a3b3d3076ef21668961f",
[
@@ -794089,7 +794889,7 @@
]
],
"byob_readtensor.https.any.js": [
- "f43cca0ea4eb7de5cdd3070cf4581bf90c1ae6a2",
+ "97bd666fa2cbf1dcd16dbeaeb836d9e8c7739aca",
[
"webnn/conformance_tests/byob_readtensor.https.any.html?cpu",
{
@@ -796273,7 +797073,7 @@
]
],
"dequantizeLinear.https.any.js": [
- "8a04d0e6b8a36f1f4b5e3a0a9b04feec1acf7ab3",
+ "73dd916b9763160a6626c0781a4099c924aff183",
[
"webnn/conformance_tests/dequantizeLinear.https.any.html?cpu",
{
@@ -812917,7 +813717,7 @@
]
],
"tensor.https.any.js": [
- "0bc51614608f514dbb3879fcb0bb468c88af9bb7",
+ "582ecdb9d68bddf2905414827622ba91799b4943",
[
"webnn/conformance_tests/tensor.https.any.html?cpu",
{
@@ -814097,7 +814897,7 @@
],
"validation_tests": {
"argMinMax.https.any.js": [
- "abd4e878a2a58978302491f50ae63107f258cedd",
+ "a6c74f1fb41b94cb0ea1e8164cdf4c17cc01af52",
[
"webnn/validation_tests/argMinMax.https.any.html?cpu",
{
@@ -814286,7 +815086,7 @@
]
],
"batchNormalization.https.any.js": [
- "636f803ecb7ee32b0307cc3a8f465b8240513d9a",
+ "d503899a193741365a3495b3d8b52f8283adc11e",
[
"webnn/validation_tests/batchNormalization.https.any.html?cpu",
{
@@ -814853,7 +815653,7 @@
]
],
"clamp.https.any.js": [
- "e76092daf43adb851c57890e8b332b21fd66ebb3",
+ "787c40fea604b85ecac360fe5d27d4ed9c0d3f9d",
[
"webnn/validation_tests/clamp.https.any.html?cpu",
{
@@ -815231,7 +816031,7 @@
]
],
"concat.https.any.js": [
- "65c56a842461e655234f2003c4d3e530f3fd324a",
+ "6ccac4e7e8b5a311adc0b47cd85844bd2f7bae34",
[
"webnn/validation_tests/concat.https.any.html?cpu",
{
@@ -815609,7 +816409,7 @@
]
],
"constant.https.any.js": [
- "fc0243197dba43d5e53052ebc56cc9ce12f281fb",
+ "dccb41d4b24037d8953ac57a3b2c183a2984107a",
[
"webnn/validation_tests/constant.https.any.html?cpu",
{
@@ -815798,7 +816598,7 @@
]
],
"conv2d.https.any.js": [
- "405538ff4d8040e157a8c332f6a89816294c6e3c",
+ "eda93e38b2b499f95c7f50b4faf160a592776ab8",
[
"webnn/validation_tests/conv2d.https.any.html?cpu",
{
@@ -815987,7 +816787,7 @@
]
],
"convTranspose2d.https.any.js": [
- "c128903e9cc51fc738067eb0bbc43d8e656dd1bf",
+ "cafb0e86e44a7d544e7c5f4330f09e4c0c618099",
[
"webnn/validation_tests/convTranspose2d.https.any.html?cpu",
{
@@ -816365,7 +817165,7 @@
]
],
"cumulativeSum.https.any.js": [
- "6381d674ab4e9503805f9aa0529d940d491f79b5",
+ "9e6a22d825bc7a2f33997a52d36536209bd548f3",
[
"webnn/validation_tests/cumulativeSum.https.any.html?cpu",
{
@@ -816554,7 +817354,7 @@
]
],
"dequantizeLinear.https.any.js": [
- "a5e6c8ea50e199da2b90d6a6873ccc490403c71e",
+ "d0dd2c15dfff2d63c7a1f165770dd8b9543ccf5e",
[
"webnn/validation_tests/dequantizeLinear.https.any.html?cpu",
{
@@ -817133,7 +817933,7 @@
]
],
"elementwise-binary.https.any.js": [
- "e578a343468f018e57f5fa37941c1915647084d4",
+ "32777f84681a9e621993d78f4395a31b47a6272e",
[
"webnn/validation_tests/elementwise-binary.https.any.html?cpu",
{
@@ -817700,7 +818500,7 @@
]
],
"elu.https.any.js": [
- "4fe08b1b0cef1837431d23d9225f9a34792c63e5",
+ "5ddcdaf8484b604e5dafdb597f6bc97fba7427fc",
[
"webnn/validation_tests/elu.https.any.html?cpu",
{
@@ -817889,7 +818689,7 @@
]
],
"expand.https.any.js": [
- "23fe94aedc1eb18e5c0a98bc50e49a2bf15eba2b",
+ "c9c60358917f8b961ea45adfa251744458b8fe51",
[
"webnn/validation_tests/expand.https.any.html?cpu",
{
@@ -818078,7 +818878,7 @@
]
],
"gather.https.any.js": [
- "dbeacbfc2791f0211358700d22d1ce4e41e1339b",
+ "e4a46a90d4b363783bc9020074d8d261ff59a28b",
[
"webnn/validation_tests/gather.https.any.html?cpu",
{
@@ -818267,7 +819067,7 @@
]
],
"gatherElements.https.any.js": [
- "4c4b04490e8b6cacaba20806ec988c8d5d4ba620",
+ "e30e4a5a13b1b8df6861266039a95c6f07f3a16f",
[
"webnn/validation_tests/gatherElements.https.any.html?cpu",
{
@@ -818456,7 +819256,7 @@
]
],
"gatherND.https.any.js": [
- "a8bfa2b336bf56238014665a70ca46ac00b6c541",
+ "697dda00776404cbe8bba31de89907cabb389a64",
[
"webnn/validation_tests/gatherND.https.any.html?cpu",
{
@@ -818834,7 +819634,7 @@
]
],
"gemm.https.any.js": [
- "cad1806b5ff918b82b75f83a79f082a3f97edc6e",
+ "6115003d0392bbee3fb396052534f106bc6d86f2",
[
"webnn/validation_tests/gemm.https.any.html?cpu",
{
@@ -819023,7 +819823,7 @@
]
],
"gru.https.any.js": [
- "158384a4b78777f552ce68a09c0fea4f085b473d",
+ "e074a27648f0917f0540dbb0fbaeb5c922f776a0",
[
"webnn/validation_tests/gru.https.any.html?cpu",
{
@@ -819212,7 +820012,7 @@
]
],
"gruCell.https.any.js": [
- "7bbb9afcff0eac56813336ac66f641be73fd6c8b",
+ "b176b379330440766c323c9e05154f86e0b6f9af",
[
"webnn/validation_tests/gruCell.https.any.html?cpu",
{
@@ -819401,7 +820201,7 @@
]
],
"hardSigmoid.https.any.js": [
- "8134863a3112c8caed6f1e4845c28ea3e2799975",
+ "f3a9ea0ba0e81cb8da1032d8b7a7df0d0727322a",
[
"webnn/validation_tests/hardSigmoid.https.any.html?cpu",
{
@@ -819779,7 +820579,7 @@
]
],
"input.https.any.js": [
- "b5b257d8bb02a2a93bf4af2c86d7944298530fc3",
+ "cc60c44567046b2bf41ae50eb1d0fd732364dfb5",
[
"webnn/validation_tests/input.https.any.html?cpu",
{
@@ -819968,7 +820768,7 @@
]
],
"instanceNormalization.https.any.js": [
- "618be23fdec86a317c79f018567bd4a3478c05fd",
+ "f09e67da414b6a61d290036494dadf37763a24a6",
[
"webnn/validation_tests/instanceNormalization.https.any.html?cpu",
{
@@ -820346,7 +821146,7 @@
]
],
"layerNormalization.https.any.js": [
- "97bb479f04d4ae054fcec82fcada7c72b8d2982b",
+ "445bace965193d9686b9a63b8dd16626e6d59f81",
[
"webnn/validation_tests/layerNormalization.https.any.html?cpu",
{
@@ -820535,7 +821335,7 @@
]
],
"leakyRelu.https.any.js": [
- "c49ac659ef4d7de696f066e04dcaced764c8e482",
+ "b64d7681d93aea4939dadb8396b83f946b40510c",
[
"webnn/validation_tests/leakyRelu.https.any.html?cpu",
{
@@ -820724,7 +821524,7 @@
]
],
"linear.https.any.js": [
- "816dad35039a307cbf7365140e9d42ecc2b4d42e",
+ "d904b9290ff24a5de3102c644c64ecc01dc664c2",
[
"webnn/validation_tests/linear.https.any.html?cpu",
{
@@ -820913,7 +821713,7 @@
]
],
"lstm.https.any.js": [
- "8cc2a014a7c4aa4f19ca75778f2b7b0a700479d3",
+ "8d8175ecb0988e798a4dc62c9b132f1f070f53e7",
[
"webnn/validation_tests/lstm.https.any.html?cpu",
{
@@ -821102,7 +821902,7 @@
]
],
"lstmCell.https.any.js": [
- "a739761d56ea7e8ac0cb7cd1547942b018a13d2a",
+ "a4e15af1b25f8f106acaa2062f48cc0d930da953",
[
"webnn/validation_tests/lstmCell.https.any.html?cpu",
{
@@ -821291,7 +822091,7 @@
]
],
"matmul.https.any.js": [
- "4f8a1ee59a3816c93c992b2c29c6a4d6f14d8d2d",
+ "86440e2b0f1c97585186fab868468abdc2762d47",
[
"webnn/validation_tests/matmul.https.any.html?cpu",
{
@@ -821480,7 +822280,7 @@
]
],
"pad.https.any.js": [
- "b45f68ab0141149ecb0ec49e29bad1fcd0cc4efe",
+ "ca11bd2c9695a4783b1cda24ed9dc96b38523ea3",
[
"webnn/validation_tests/pad.https.any.html?cpu",
{
@@ -821669,7 +822469,7 @@
]
],
"pooling-and-reduction-keep-dims.https.any.js": [
- "3beee94cd44dcd6898357a0530ad1b8728d644f0",
+ "969c5c61a498e14df5b45ebe3166f105708a73f4",
[
"webnn/validation_tests/pooling-and-reduction-keep-dims.https.any.html?cpu",
{
@@ -821912,7 +822712,7 @@
]
],
"pooling.https.any.js": [
- "d862d807ab443a90fff9b671eeec23d2bdab0c8a",
+ "e02d41e996be42d441b503d634e043c813ea4d71",
[
"webnn/validation_tests/pooling.https.any.html?cpu",
{
@@ -822101,7 +822901,7 @@
]
],
"prelu.https.any.js": [
- "94eb6995374e651c5af79b407e7706547ca5d437",
+ "e3a43c61d8d97b1984783042f244f91626e20827",
[
"webnn/validation_tests/prelu.https.any.html?cpu",
{
@@ -822290,7 +823090,7 @@
]
],
"quantizeLinear.https.any.js": [
- "2f0b21d225a8cbda190f29b8c2471e5c6ceec7de",
+ "42b8ac4b1f2c36f9611db528e01ce465f194de6a",
[
"webnn/validation_tests/quantizeLinear.https.any.html?cpu",
{
@@ -822479,7 +823279,7 @@
]
],
"reduction.https.any.js": [
- "b56306351f05e60ae37b2ab2a4d22d6853c6dd52",
+ "d872b7fb4f0393173e2316fe508b7cd64116d75f",
[
"webnn/validation_tests/reduction.https.any.html?cpu",
{
@@ -822857,7 +823657,7 @@
]
],
"resample2d.https.any.js": [
- "df2b85d02de25a7577baa01f6e3a5cae309445da",
+ "1278143d232f0594d876f17b2ac359946ba76a6c",
[
"webnn/validation_tests/resample2d.https.any.html?cpu",
{
@@ -823046,7 +823846,7 @@
]
],
"reshape.https.any.js": [
- "7e49cada67a20702faf2dafe3efee5a87525f59a",
+ "67c895be9b788159938003247c015aea9821db5c",
[
"webnn/validation_tests/reshape.https.any.html?cpu",
{
@@ -823235,7 +824035,7 @@
]
],
"scatterElements.https.any.js": [
- "15551b2bbe5b48bb50813ee02a69b75351aed8ba",
+ "39e99ddfdfc7f6a0b37bd0b5ca1f3bc2df04b708",
[
"webnn/validation_tests/scatterElements.https.any.html?cpu",
{
@@ -823424,7 +824224,7 @@
]
],
"scatterND.https.any.js": [
- "5e28471fffa47aa985bc2d6a681156a029f7661b",
+ "e529aea52ee213a2108ed21c9c1b1beb9d9e4663",
[
"webnn/validation_tests/scatterND.https.any.html?cpu",
{
@@ -823802,7 +824602,7 @@
]
],
"slice.https.any.js": [
- "3fb3cdcd6f67a81aec49fe221c279c8f1c36d7d5",
+ "cc442d3d2b195867dad46178c6080754f42ee545",
[
"webnn/validation_tests/slice.https.any.html?cpu",
{
@@ -823991,7 +824791,7 @@
]
],
"softmax.https.any.js": [
- "4a5ee563070fb7ac1c17930f8140cae91b6cb125",
+ "eb7ebbd3070c37a274f01183ba495a13f3de811a",
[
"webnn/validation_tests/softmax.https.any.html?cpu",
{
@@ -824558,7 +825358,7 @@
]
],
"split.https.any.js": [
- "c25f839168d39aa002d2e2ab6435f7075c593953",
+ "863e6a79c5f5761799c138b8682550bdd8684a31",
[
"webnn/validation_tests/split.https.any.html?cpu",
{
@@ -824936,7 +825736,7 @@
]
],
"tile.https.any.js": [
- "6ad81cba4beb70b1d71c1c781aa032216f01b125",
+ "067335409178db5dc46e22b64f327b00a952bd68",
[
"webnn/validation_tests/tile.https.any.html?cpu",
{
@@ -825125,7 +825925,7 @@
]
],
"transpose.https.any.js": [
- "a79e14008a6abe18abb56be37d968cace793f5a6",
+ "67a05ce057c587aee2e74454ba387544c3f90446",
[
"webnn/validation_tests/transpose.https.any.html?cpu",
{
@@ -825503,7 +826303,7 @@
]
],
"where.https.any.js": [
- "2f1941556b1c3a3d8c04502e6f7e2beb5cdd0669",
+ "424d080c009d325384c134d6095228ce79a80b31",
[
"webnn/validation_tests/where.https.any.html?cpu",
{
@@ -870567,15 +871367,6 @@
]
]
},
- "css-sizing": {
- "replaced-fractional-height-from-aspect-ratio.html": [
- "d97c3f133ebec02ce5569e95826ab3237b7559c7",
- [
- null,
- {}
- ]
- ]
- },
"css-text": {
"text-align": {
"text-align-end-018.html": [
@@ -873363,6 +874154,13 @@
{}
]
],
+ "navigation.py": [
+ "825bca7e994ff0330147e5da394edb312a62ef84",
+ [
+ null,
+ {}
+ ]
+ ],
"pointer.py": [
"6109450a23c1d49215a2cc4ef8547789d568eb79",
[
@@ -875094,7 +875892,7 @@
]
],
"fullscreen.py": [
- "f6e9e8792360c9069345a27d870f027ecaabf6cd",
+ "eb170369627b0662c779849e0818ed74fb00a321",
[
null,
{}
@@ -875492,8 +876290,15 @@
]
},
"maximize_window": {
+ "from_minimized_window.py": [
+ "ab33aeb963a1502e98e21b8bc3a5caddeb16978a",
+ [
+ null,
+ {}
+ ]
+ ],
"maximize.py": [
- "3a20a0d5589bd222c17530ad650311555d71ded9",
+ "6b9fc680b85b49cd6e86c0930989e7606e4aef1d",
[
null,
{
@@ -875522,7 +876327,7 @@
},
"minimize_window": {
"minimize.py": [
- "2ad5333ec54a79fd8306c17f093046a87b5aaf25",
+ "c4e15ad9a9cbc29f1cddda960214233b77c72ab3",
[
null,
{
@@ -875576,7 +876381,7 @@
},
"new_session": {
"create_alwaysMatch.py": [
- "64fd0a7425657fa0596298ec281ea4a1bbe08a4f",
+ "7a7f007dabb3188ac02893f3567ff805dab78b5b",
[
null,
{
@@ -875585,7 +876390,7 @@
]
],
"create_firstMatch.py": [
- "d4523f4330c76e46fd9441901dc17314aec85c66",
+ "22c74bcfbd748d4eea838d22a5764fae2eaecdda",
[
null,
{
@@ -875970,7 +876775,7 @@
]
],
"set.py": [
- "9e15d02b0d1953df3d22f7ff7b544f6e86cca1ea",
+ "51cddffed51d53b74be60424215f9d9cabd3474e",
[
null,
{
diff --git a/tests/wpt/meta/WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.https.any.js.ini b/tests/wpt/meta/WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.https.any.js.ini
new file mode 100644
index 00000000000..e7b745e50c3
--- /dev/null
+++ b/tests/wpt/meta/WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.https.any.js.ini
@@ -0,0 +1,4 @@
+[derive_key_and_encrypt.https.any.html]
+ expected: ERROR
+
+[derive_key_and_encrypt.https.any.worker.html]
diff --git a/tests/wpt/meta/css/compositing/mix-blend-mode/mix-blend-mode-video-sibling.html.ini b/tests/wpt/meta/css/compositing/mix-blend-mode/mix-blend-mode-video-sibling.html.ini
new file mode 100644
index 00000000000..55551102b45
--- /dev/null
+++ b/tests/wpt/meta/css/compositing/mix-blend-mode/mix-blend-mode-video-sibling.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-video-sibling.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/compositing/mix-blend-mode/mix-blend-mode-video.html.ini b/tests/wpt/meta/css/compositing/mix-blend-mode/mix-blend-mode-video.html.ini
new file mode 100644
index 00000000000..26726a1734d
--- /dev/null
+++ b/tests/wpt/meta/css/compositing/mix-blend-mode/mix-blend-mode-video.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-video.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-cascade/scope-specificity.html.ini b/tests/wpt/meta/css/css-cascade/scope-specificity.html.ini
index cf0b84e5101..dae34ee9f45 100644
--- a/tests/wpt/meta/css/css-cascade/scope-specificity.html.ini
+++ b/tests/wpt/meta/css/css-cascade/scope-specificity.html.ini
@@ -55,3 +55,6 @@
[@scope (#main) { > .a { } } and :where(#main) > .a]
expected: FAIL
+
+ [@scope { & .b { } } and :where(:scope) .b]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-color-hdr/computed.html.ini b/tests/wpt/meta/css/css-color-hdr/computed.html.ini
new file mode 100644
index 00000000000..8a0e56f83fc
--- /dev/null
+++ b/tests/wpt/meta/css/css-color-hdr/computed.html.ini
@@ -0,0 +1,51 @@
+[computed.html]
+ [Property dynamic-range-limit value 'high']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'constrained-high']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'standard']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(standard 75%, high 25%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(standard 25%, high 75%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(high 25%, standard 75%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(high 100%, standard 100%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(high 80%, standard 60%, constrained-high 60%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(standard 25%, constrained-high 75%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(constrained-high 75%, standard 25%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(constrained-high 25%, high 25%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(standard 25%, constrained-high 50%, high 25%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(standard 10%, constrained-high 20%, high 20%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(high 10%, standard 30%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(dynamic-range-limit-mix(standard 10%, high 30%) 20%, standard 80%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(dynamic-range-limit-mix(standard 25%, high 75%) 20%, dynamic-range-limit-mix(standard 25%, constrained-high 75%) 40%, dynamic-range-limit-mix(constrained-high 25%, high 75%) 40%)']
+ expected: FAIL
+
+ [Property dynamic-range-limit value 'dynamic-range-limit-mix(high 10%, dynamic-range-limit-mix(standard 25%, constrained-high 75%) 20%, dynamic-range-limit-mix(constrained-high 10%, high 30%) 20%)']
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-color-hdr/inheritance.html.ini b/tests/wpt/meta/css/css-color-hdr/inheritance.html.ini
new file mode 100644
index 00000000000..b7307d0fe24
--- /dev/null
+++ b/tests/wpt/meta/css/css-color-hdr/inheritance.html.ini
@@ -0,0 +1,6 @@
+[inheritance.html]
+ [Property dynamic-range-limit has initial value high]
+ expected: FAIL
+
+ [Property dynamic-range-limit inherits]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-color-hdr/interpolation.html.ini b/tests/wpt/meta/css/css-color-hdr/interpolation.html.ini
new file mode 100644
index 00000000000..8b0224cf3f4
--- /dev/null
+++ b/tests/wpt/meta/css/css-color-hdr/interpolation.html.ini
@@ -0,0 +1,192 @@
+[interpolation.html]
+ [CSS Transitions: property <dynamic-range-limit> from [high\] to [standard\] at (0) should be [high\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [high\] to [standard\] at (0.25) should be [dynamic-range-limit-mix(standard 25%, high 75%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [high\] to [standard\] at (0.75) should be [dynamic-range-limit-mix(standard 75%, high 25%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [high\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [high\] to [standard\] at (0) should be [high\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [high\] to [standard\] at (0.25) should be [dynamic-range-limit-mix(standard 25%, high 75%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [high\] to [standard\] at (0.75) should be [dynamic-range-limit-mix(standard 75%, high 25%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [high\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [high\] to [standard\] at (0) should be [high\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [high\] to [standard\] at (0.25) should be [dynamic-range-limit-mix(standard 25%, high 75%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [high\] to [standard\] at (0.75) should be [dynamic-range-limit-mix(standard 75%, high 25%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [high\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [high\] to [standard\] at (0) should be [high\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [high\] to [standard\] at (0.25) should be [dynamic-range-limit-mix(standard 25%, high 75%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [high\] to [standard\] at (0.75) should be [dynamic-range-limit-mix(standard 75%, high 25%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [high\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (0) should be [constrained-high\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, constrained-high 50%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (0) should be [constrained-high\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, constrained-high 50%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (0) should be [constrained-high\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, constrained-high 50%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (0) should be [constrained-high\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, constrained-high 50%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [constrained-high\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (0) should be [dynamic-range-limit-mix(standard 50%, high 50%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (0.75) should be [dynamic-range-limit-mix(standard 87.5%, high 12.5%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (0) should be [dynamic-range-limit-mix(standard 50%, high 50%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (0.75) should be [dynamic-range-limit-mix(standard 87.5%, high 12.5%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (0) should be [dynamic-range-limit-mix(standard 50%, high 50%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (0.75) should be [dynamic-range-limit-mix(standard 87.5%, high 12.5%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (0) should be [dynamic-range-limit-mix(standard 50%, high 50%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (0.75) should be [dynamic-range-limit-mix(standard 87.5%, high 12.5%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 50%, high 50%)\] to [standard\] at (1) should be [standard\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (0) should be [dynamic-range-limit-mix(standard 90%, high 10%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, high 50%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (1) should be [dynamic-range-limit-mix(standard 10%, high 90%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (0) should be [dynamic-range-limit-mix(standard 90%, high 10%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, high 50%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (1) should be [dynamic-range-limit-mix(standard 10%, high 90%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (0) should be [dynamic-range-limit-mix(standard 90%, high 10%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, high 50%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (1) should be [dynamic-range-limit-mix(standard 10%, high 90%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (0) should be [dynamic-range-limit-mix(standard 90%, high 10%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, high 50%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(standard 90%, high 10%)\] to [dynamic-range-limit-mix(standard 10%, high 90%)\] at (1) should be [dynamic-range-limit-mix(standard 10%, high 90%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (0) should be [dynamic-range-limit-mix(standard 10%, constrained-high 90%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, constrained-high 45%, high 5%)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (1) should be [dynamic-range-limit-mix(standard 90%, high 10%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (0) should be [dynamic-range-limit-mix(standard 10%, constrained-high 90%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, constrained-high 45%, high 5%)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (1) should be [dynamic-range-limit-mix(standard 90%, high 10%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (0) should be [dynamic-range-limit-mix(standard 10%, constrained-high 90%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, constrained-high 45%, high 5%)\]]
+ expected: FAIL
+
+ [CSS Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (1) should be [dynamic-range-limit-mix(standard 90%, high 10%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (0) should be [dynamic-range-limit-mix(standard 10%, constrained-high 90%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (0.5) should be [dynamic-range-limit-mix(standard 50%, constrained-high 45%, high 5%)\]]
+ expected: FAIL
+
+ [Web Animations: property <dynamic-range-limit> from [dynamic-range-limit-mix(constrained-high 90%, standard 10%)\] to [dynamic-range-limit-mix(high 10%, standard 90%)\] at (1) should be [dynamic-range-limit-mix(standard 90%, high 10%)\]]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-color-hdr/parsing.html.ini b/tests/wpt/meta/css/css-color-hdr/parsing.html.ini
new file mode 100644
index 00000000000..b5075cf660f
--- /dev/null
+++ b/tests/wpt/meta/css/css-color-hdr/parsing.html.ini
@@ -0,0 +1,30 @@
+[parsing.html]
+ [e.style['dynamic-range-limit'\] = "standard" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "high" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "constrained-high" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "dynamic-range-limit-mix(high 80%, standard 20%)" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "dynamic-range-limit-mix(high 8%, standard 2%)" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "dynamic-range-limit-mix(high 99%, standard 99%)" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "dynamic-range-limit-mix(constrained-high 20%, high 80%)" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "dynamic-range-limit-mix(dynamic-range-limit-mix(constrained-high 90%, high 10%) 1%, high 80%)" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "dynamic-range-limit-mix(high 1%, dynamic-range-limit-mix(constrained-high 2%, high 10%) 80%)" should set the property value]
+ expected: FAIL
+
+ [e.style['dynamic-range-limit'\] = "dynamic-range-limit-mix(dynamic-range-limit-mix(high 1%, standard 2%) 3%, dynamic-range-limit-mix(constrained-high 5%, high 5%) 6%)" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/registered-color-style-queries.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/registered-color-style-queries.html.ini
index 3befc312c69..d4281d42b51 100644
--- a/tests/wpt/meta/css/css-conditional/container-queries/registered-color-style-queries.html.ini
+++ b/tests/wpt/meta/css/css-conditional/container-queries/registered-color-style-queries.html.ini
@@ -1,4 +1,5 @@
[registered-color-style-queries.html]
+ expected: ERROR
[Registered color with light color-scheme and light-dark()]
expected: FAIL
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-computed.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-computed.html.ini
index bf71bdf192b..132e4ea1fbc 100644
--- a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-computed.html.ini
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-computed.html.ini
@@ -1,2 +1,9 @@
[container-type-scroll-state-computed.html]
- expected: ERROR
+ [Property container-type value 'scroll-state']
+ expected: FAIL
+
+ [Property container-type value 'scroll-state size']
+ expected: FAIL
+
+ [Property container-type value 'inline-size scroll-state']
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-pseudo.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-pseudo.html.ini
new file mode 100644
index 00000000000..27cb88702ca
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-pseudo.html.ini
@@ -0,0 +1,2 @@
+[scroll-state-overflowing-pseudo.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-pseudo.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-pseudo.html.ini
new file mode 100644
index 00000000000..17708297d9b
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-pseudo.html.ini
@@ -0,0 +1,2 @@
+[scroll-state-snapped-pseudo.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-pseudo.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-pseudo.html.ini
new file mode 100644
index 00000000000..8ef346bc83c
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-pseudo.html.ini
@@ -0,0 +1,2 @@
+[scroll-state-stuck-pseudo.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/style-query-document-element.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/style-query-document-element.html.ini
index d59e1b1536d..e0b2158c1b4 100644
--- a/tests/wpt/meta/css/css-conditional/container-queries/style-query-document-element.html.ini
+++ b/tests/wpt/meta/css/css-conditional/container-queries/style-query-document-element.html.ini
@@ -1,2 +1,3 @@
[style-query-document-element.html]
- expected: ERROR
+ [style query should evaluate to true]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-conditional/js/supports-at-rule.tentative.html.ini b/tests/wpt/meta/css/css-conditional/js/supports-at-rule.tentative.html.ini
new file mode 100644
index 00000000000..f8d0581c7c5
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/js/supports-at-rule.tentative.html.ini
@@ -0,0 +1,120 @@
+[supports-at-rule.tentative.html]
+ [@supports at-rule]
+ expected: FAIL
+
+ [@supports at-rule 1]
+ expected: FAIL
+
+ [@supports at-rule 2]
+ expected: FAIL
+
+ [@supports at-rule 3]
+ expected: FAIL
+
+ [@supports at-rule 4]
+ expected: FAIL
+
+ [@supports at-rule 6]
+ expected: FAIL
+
+ [@supports at-rule 7]
+ expected: FAIL
+
+ [@supports at-rule 8]
+ expected: FAIL
+
+ [quoted value is OK]
+ expected: FAIL
+
+ [implicit end parenthesis]
+ expected: FAIL
+
+ [@supports at-rule 16]
+ expected: FAIL
+
+ [@supports at-rule 17]
+ expected: FAIL
+
+ [@supports at-rule 18]
+ expected: FAIL
+
+ [@supports at-rule 19]
+ expected: FAIL
+
+ [@supports at-rule 20]
+ expected: FAIL
+
+ [@supports at-rule 21]
+ expected: FAIL
+
+ [@supports at-rule 22]
+ expected: FAIL
+
+ [@supports at-rule 23]
+ expected: FAIL
+
+ [@supports at-rule 24]
+ expected: FAIL
+
+ [@supports at-rule 25]
+ expected: FAIL
+
+ [@supports at-rule 26]
+ expected: FAIL
+
+ [@supports at-rule 27]
+ expected: FAIL
+
+ [@supports at-rule 28]
+ expected: FAIL
+
+ [@supports at-rule 30]
+ expected: FAIL
+
+ [@supports at-rule 31]
+ expected: FAIL
+
+ [@supports at-rule 32]
+ expected: FAIL
+
+ [@supports at-rule 33]
+ expected: FAIL
+
+ [@supports at-rule 34]
+ expected: FAIL
+
+ [@supports at-rule 35]
+ expected: FAIL
+
+ [@supports at-rule 36]
+ expected: FAIL
+
+ [@supports at-rule 37]
+ expected: FAIL
+
+ [@supports at-rule 38]
+ expected: FAIL
+
+ [@supports at-rule 39]
+ expected: FAIL
+
+ [@supports at-rule 40]
+ expected: FAIL
+
+ [@supports at-rule 41]
+ expected: FAIL
+
+ [@supports at-rule 42]
+ expected: FAIL
+
+ [@supports at-rule 43]
+ expected: FAIL
+
+ [@supports at-rule 44]
+ expected: FAIL
+
+ [@supports at-rule 45]
+ expected: FAIL
+
+ [@supports at-rule 46]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-grid/layout-algorithm/grid-fit-content-percentage.html.ini b/tests/wpt/meta/css/css-grid/layout-algorithm/grid-fit-content-percentage.html.ini
index 32b5d8d7680..d41dbcf0823 100644
--- a/tests/wpt/meta/css/css-grid/layout-algorithm/grid-fit-content-percentage.html.ini
+++ b/tests/wpt/meta/css/css-grid/layout-algorithm/grid-fit-content-percentage.html.ini
@@ -28,3 +28,63 @@
[fit-content(calc(0px + 150%))]
expected: FAIL
+
+ [fit-content(0%); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(50%); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(75%); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(100%); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(150%); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(calc(0px + 0%)); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(calc(0px + 50%)); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(calc(0px + 75%)); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(calc(0px + 100%)); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(calc(0px + 150%)); min-width: 0px]
+ expected: FAIL
+
+ [fit-content(0%); min-width: auto]
+ expected: FAIL
+
+ [fit-content(50%); min-width: auto]
+ expected: FAIL
+
+ [fit-content(75%); min-width: auto]
+ expected: FAIL
+
+ [fit-content(100%); min-width: auto]
+ expected: FAIL
+
+ [fit-content(150%); min-width: auto]
+ expected: FAIL
+
+ [fit-content(calc(0px + 0%)); min-width: auto]
+ expected: FAIL
+
+ [fit-content(calc(0px + 50%)); min-width: auto]
+ expected: FAIL
+
+ [fit-content(calc(0px + 75%)); min-width: auto]
+ expected: FAIL
+
+ [fit-content(calc(0px + 100%)); min-width: auto]
+ expected: FAIL
+
+ [fit-content(calc(0px + 150%)); min-width: auto]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-pseudo/parsing/the-select-arrow-pseudo-element.tentative.html.ini b/tests/wpt/meta/css/css-pseudo/parsing/the-select-arrow-pseudo-element.tentative.html.ini
new file mode 100644
index 00000000000..0303c3c39d8
--- /dev/null
+++ b/tests/wpt/meta/css/css-pseudo/parsing/the-select-arrow-pseudo-element.tentative.html.ini
@@ -0,0 +1,18 @@
+[the-select-arrow-pseudo-element.tentative.html]
+ ["::select-arrow" should be a valid selector]
+ expected: FAIL
+
+ ["*::select-arrow" should be a valid selector]
+ expected: FAIL
+
+ ["foo.bar[baz\]::select-arrow" should be a valid selector]
+ expected: FAIL
+
+ ["::select-arrow::marker" should be a valid selector]
+ expected: FAIL
+
+ ["::slotted(*)::select-arrow" should be a valid selector]
+ expected: FAIL
+
+ ["::part(foo)::select-arrow" should be a valid selector]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/stretch/auto-margins-1.html.ini b/tests/wpt/meta/css/css-sizing/stretch/auto-margins-1.html.ini
new file mode 100644
index 00000000000..5030c8126ba
--- /dev/null
+++ b/tests/wpt/meta/css/css-sizing/stretch/auto-margins-1.html.ini
@@ -0,0 +1,3 @@
+[auto-margins-1.html]
+ [[data-expected-width\] 2]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/stretch/indefinite-4.html.ini b/tests/wpt/meta/css/css-sizing/stretch/indefinite-4.html.ini
new file mode 100644
index 00000000000..d0bd94e4cbe
--- /dev/null
+++ b/tests/wpt/meta/css/css-sizing/stretch/indefinite-4.html.ini
@@ -0,0 +1,3 @@
+[indefinite-4.html]
+ [[data-expected-client-height\] 1]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-text/line-breaking/segment-break-transformation-ignorable-1.html.ini b/tests/wpt/meta/css/css-text/line-breaking/segment-break-transformation-ignorable-1.html.ini
new file mode 100644
index 00000000000..d981ffe23af
--- /dev/null
+++ b/tests/wpt/meta/css/css-text/line-breaking/segment-break-transformation-ignorable-1.html.ini
@@ -0,0 +1,2 @@
+[segment-break-transformation-ignorable-1.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/attr-IACVT.html.ini b/tests/wpt/meta/css/css-values/attr-IACVT.html.ini
new file mode 100644
index 00000000000..7d7e1ecd848
--- /dev/null
+++ b/tests/wpt/meta/css/css-values/attr-IACVT.html.ini
@@ -0,0 +1,3 @@
+[attr-IACVT.html]
+ [CSS Values Test: attr() IACVT]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/attr-all-types.html.ini b/tests/wpt/meta/css/css-values/attr-all-types.html.ini
index 2239863f502..4a56492d36e 100644
--- a/tests/wpt/meta/css/css-values/attr-all-types.html.ini
+++ b/tests/wpt/meta/css/css-values/attr-all-types.html.ini
@@ -38,9 +38,6 @@
[CSS Values and Units Test: attr 13]
expected: FAIL
- [CSS Values and Units Test: attr 14]
- expected: FAIL
-
[CSS Values and Units Test: attr 18]
expected: FAIL
@@ -59,57 +56,6 @@
[CSS Values and Units Test: attr 38]
expected: FAIL
- [CSS Values and Units Test: attr 39]
- expected: FAIL
-
- [CSS Values and Units Test: attr 40]
- expected: FAIL
-
- [CSS Values and Units Test: attr 41]
- expected: FAIL
-
- [CSS Values and Units Test: attr 42]
- expected: FAIL
-
- [CSS Values and Units Test: attr 43]
- expected: FAIL
-
- [CSS Values and Units Test: attr 44]
- expected: FAIL
-
- [CSS Values and Units Test: attr 45]
- expected: FAIL
-
- [CSS Values and Units Test: attr 46]
- expected: FAIL
-
- [CSS Values and Units Test: attr 47]
- expected: FAIL
-
- [CSS Values and Units Test: attr 48]
- expected: FAIL
-
- [CSS Values and Units Test: attr 49]
- expected: FAIL
-
- [CSS Values and Units Test: attr 50]
- expected: FAIL
-
- [CSS Values and Units Test: attr 51]
- expected: FAIL
-
- [CSS Values and Units Test: attr 52]
- expected: FAIL
-
- [CSS Values and Units Test: attr 53]
- expected: FAIL
-
- [CSS Values and Units Test: attr 54]
- expected: FAIL
-
- [CSS Values and Units Test: attr 55]
- expected: FAIL
-
[CSS Values and Units Test: attr 12]
expected: FAIL
@@ -122,21 +68,6 @@
[CSS Values and Units Test: attr 24]
expected: FAIL
- [CSS Values and Units Test: attr 56]
- expected: FAIL
-
- [CSS Values and Units Test: attr 57]
- expected: FAIL
-
- [CSS Values and Units Test: attr 58]
- expected: FAIL
-
- [CSS Values and Units Test: attr 59]
- expected: FAIL
-
- [CSS Values and Units Test: attr 60]
- expected: FAIL
-
[CSS Values and Units Test: attr 15]
expected: FAIL
@@ -155,35 +86,32 @@
[CSS Values and Units Test: attr 27]
expected: FAIL
- [CSS Values and Units Test: attr 31]
- expected: FAIL
-
[CSS Values and Units Test: attr 32]
expected: FAIL
- [CSS Values and Units Test: attr 61]
+ [CSS Values and Units Test: attr 74]
expected: FAIL
- [CSS Values and Units Test: attr 62]
+ [CSS Values and Units Test: attr 75]
expected: FAIL
- [CSS Values and Units Test: attr 63]
+ [CSS Values and Units Test: attr 76]
expected: FAIL
- [CSS Values and Units Test: attr 74]
+ [CSS Values and Units Test: attr 77]
expected: FAIL
- [CSS Values and Units Test: attr 75]
+ [CSS Values and Units Test: attr 22]
expected: FAIL
- [CSS Values and Units Test: attr 64]
+ [CSS Values and Units Test: attr 23]
expected: FAIL
- [CSS Values and Units Test: attr 65]
+ [CSS Values and Units Test: attr 30]
expected: FAIL
- [CSS Values and Units Test: attr 76]
+ [CSS Values and Units Test: attr 34]
expected: FAIL
- [CSS Values and Units Test: attr 77]
+ [CSS Values and Units Test: attr 35]
expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/attr-px-invalid-cast.html.ini b/tests/wpt/meta/css/css-values/attr-px-invalid-cast.html.ini
deleted file mode 100644
index 87888f53efd..00000000000
--- a/tests/wpt/meta/css/css-values/attr-px-invalid-cast.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[attr-px-invalid-cast.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/attr-px-valid.html.ini b/tests/wpt/meta/css/css-values/attr-px-valid.html.ini
deleted file mode 100644
index 7bcf98b2d8a..00000000000
--- a/tests/wpt/meta/css/css-values/attr-px-valid.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[attr-px-valid.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/signs-abs-computed.html.ini b/tests/wpt/meta/css/css-values/signs-abs-computed.html.ini
index e2069e297af..ece49b5a44a 100644
--- a/tests/wpt/meta/css/css-values/signs-abs-computed.html.ini
+++ b/tests/wpt/meta/css/css-values/signs-abs-computed.html.ini
@@ -136,3 +136,66 @@
[sign(10px - 2em) should be used-value-equivalent to -1; fontSize=10px]
expected: FAIL
+
+ [calc(2.5 - sign(41px - 2em) / 2) should be used-value-equivalent to 2]
+ expected: FAIL
+
+ [calc(2.5 - sign(40px - 2em) / 2) should be used-value-equivalent to 2.5]
+ expected: FAIL
+
+ [calc(2.5 - sign(39px - 2em) / 2) should be used-value-equivalent to 3]
+ expected: FAIL
+
+ [calc(3 + sign(42px - 2em)) should be used-value-equivalent to 4]
+ expected: FAIL
+
+ [calc(3 + sign(40px - 2em)) should be used-value-equivalent to 3]
+ expected: FAIL
+
+ [calc(3 + sign(38px - 2em)) should be used-value-equivalent to 2]
+ expected: FAIL
+
+ [calc(90deg + 30deg * sign(42px - 2em)) should be used-value-equivalent to 120deg]
+ expected: FAIL
+
+ [calc(90deg + 30deg * sign(40px - 2em)) should be used-value-equivalent to 90deg]
+ expected: FAIL
+
+ [calc(90deg + 30deg * sign(38px - 2em)) should be used-value-equivalent to 60deg]
+ expected: FAIL
+
+ [calc(5s + 15s * sign(42px - 2em)) should be used-value-equivalent to 20s]
+ expected: FAIL
+
+ [calc(5s + 15s * sign(40px - 2em)) should be used-value-equivalent to 5s]
+ expected: FAIL
+
+ [calc(5s + 15s * sign(38px - 2em)) should be used-value-equivalent to -10s]
+ expected: FAIL
+
+ [calc(100dpi + 20dpi * sign(42px - 2em)) should be used-value-equivalent to 120dpi]
+ expected: FAIL
+
+ [calc(100dpi + 20dpi * sign(40px - 2em)) should be used-value-equivalent to 100dpi]
+ expected: FAIL
+
+ [calc(100dpi + 20dpi * sign(38px - 2em)) should be used-value-equivalent to 80dpi]
+ expected: FAIL
+
+ [calc(3fr + 1fr * sign(42px - 2em)) should be used-value-equivalent to 4fr]
+ expected: FAIL
+
+ [calc(3fr + 1fr * sign(40px - 2em)) should be used-value-equivalent to 3fr]
+ expected: FAIL
+
+ [calc(3fr + 1fr * sign(38px - 2em)) should be used-value-equivalent to 2fr]
+ expected: FAIL
+
+ [calc(2.5 - sign(33px - 2rem) / 2) should be used-value-equivalent to 2]
+ expected: FAIL
+
+ [calc(2.5 - sign(32px - 2rem) / 2) should be used-value-equivalent to 2.5]
+ expected: FAIL
+
+ [calc(2.5 - sign(31px - 2rem) / 2) should be used-value-equivalent to 3]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes.html.ini b/tests/wpt/meta/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes.html.ini
new file mode 100644
index 00000000000..d1cd1865181
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes.html.ini
@@ -0,0 +1,2 @@
+[negated-always-matches-negated-first-of-type-when-ancestor-changes.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes.html.ini b/tests/wpt/meta/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes.html.ini
new file mode 100644
index 00000000000..a22a798704c
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes.html.ini
@@ -0,0 +1,2 @@
+[negated-always-matches-negated-last-of-type-when-ancestor-changes.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes.html.ini b/tests/wpt/meta/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes.html.ini
new file mode 100644
index 00000000000..27ecadf65ec
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes.html.ini
@@ -0,0 +1,2 @@
+[negated-is-never-matches-negated-first-of-type-when-ancestor-changes.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes.html.ini b/tests/wpt/meta/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes.html.ini
new file mode 100644
index 00000000000..254d5774e11
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes.html.ini
@@ -0,0 +1,2 @@
+[negated-is-never-matches-negated-last-of-type-when-ancestor-changes.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes.html.ini b/tests/wpt/meta/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes.html.ini
new file mode 100644
index 00000000000..ab06ad7b0cc
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes.html.ini
@@ -0,0 +1,2 @@
+[negated-negated-first-of-type-when-ancestor-changes.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes.html.ini b/tests/wpt/meta/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes.html.ini
new file mode 100644
index 00000000000..75d4f82effe
--- /dev/null
+++ b/tests/wpt/meta/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes.html.ini
@@ -0,0 +1,2 @@
+[negated-negated-last-of-type-when-ancestor-changes.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/custom-elements/ElementInternals-accessibility.tentative.html.ini b/tests/wpt/meta/custom-elements/ElementInternals-accessibility.tentative.html.ini
new file mode 100644
index 00000000000..e888efbcc55
--- /dev/null
+++ b/tests/wpt/meta/custom-elements/ElementInternals-accessibility.tentative.html.ini
@@ -0,0 +1,9 @@
+[ElementInternals-accessibility.tentative.html]
+ [ariaColIndexText is defined in ElementInternals]
+ expected: FAIL
+
+ [ariaDescription is defined in ElementInternals]
+ expected: FAIL
+
+ [ariaRowIndexText is defined in ElementInternals]
+ expected: FAIL
diff --git a/tests/wpt/meta/dom/abort/AbortSignal.any.js.ini b/tests/wpt/meta/dom/abort/AbortSignal.any.js.ini
index 477da6cc050..5c57b72c1c3 100644
--- a/tests/wpt/meta/dom/abort/AbortSignal.any.js.ini
+++ b/tests/wpt/meta/dom/abort/AbortSignal.any.js.ini
@@ -30,3 +30,7 @@
[AbortSignal timeouts fire in order]
expected: FAIL
+
+
+[AbortSignal.any.shadowrealm.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/dom/abort/event.any.js.ini b/tests/wpt/meta/dom/abort/event.any.js.ini
index b7fdb742a6e..7641e92134c 100644
--- a/tests/wpt/meta/dom/abort/event.any.js.ini
+++ b/tests/wpt/meta/dom/abort/event.any.js.ini
@@ -96,3 +96,7 @@
[AbortController.signal.reason returns the same DOMException]
expected: FAIL
+
+
+[event.any.shadowrealm.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/dom/abort/timeout-shadowrealm.any.js.ini b/tests/wpt/meta/dom/abort/timeout-shadowrealm.any.js.ini
new file mode 100644
index 00000000000..2a8e04706a9
--- /dev/null
+++ b/tests/wpt/meta/dom/abort/timeout-shadowrealm.any.js.ini
@@ -0,0 +1,2 @@
+[timeout-shadowrealm.any.shadowrealm.html]
+ expected: ERROR
diff --git a/tests/wpt/meta/dom/abort/timeout.any.js.ini b/tests/wpt/meta/dom/abort/timeout.any.js.ini
new file mode 100644
index 00000000000..624b6a502c3
--- /dev/null
+++ b/tests/wpt/meta/dom/abort/timeout.any.js.ini
@@ -0,0 +1,20 @@
+[timeout.any.html]
+ [AbortSignal.timeout() returns a non-aborted signal]
+ expected: FAIL
+
+ [Signal returned by AbortSignal.timeout() times out]
+ expected: FAIL
+
+ [AbortSignal timeouts fire in order]
+ expected: FAIL
+
+
+[timeout.any.worker.html]
+ [AbortSignal.timeout() returns a non-aborted signal]
+ expected: FAIL
+
+ [Signal returned by AbortSignal.timeout() times out]
+ expected: FAIL
+
+ [AbortSignal timeouts fire in order]
+ expected: FAIL
diff --git a/tests/wpt/meta/dom/nodes/moveBefore/tentative/focus-within.html.ini b/tests/wpt/meta/dom/nodes/moveBefore/tentative/focus-within.html.ini
new file mode 100644
index 00000000000..e7448213aa1
--- /dev/null
+++ b/tests/wpt/meta/dom/nodes/moveBefore/tentative/focus-within.html.ini
@@ -0,0 +1,15 @@
+[focus-within.html]
+ [focus-within should be updated when reparenting focused element directly]
+ expected: FAIL
+
+ [focus-within should be updated when reparenting an element that has focus within]
+ expected: FAIL
+
+ [focus-within should remain the same when moving to the same parent]
+ expected: FAIL
+
+ [:focus-within should be eventually up to date when moving to an inert subtree]
+ expected: FAIL
+
+ [:focus-within should be eventually up to date when moving to a subtree that would become inert via style]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/css-font-face.https.sub.tentative.html.ini b/tests/wpt/meta/fetch/metadata/generated/css-font-face.https.sub.tentative.html.ini
index 37454f3ed97..4dcac5c96b4 100644
--- a/tests/wpt/meta/fetch/metadata/generated/css-font-face.https.sub.tentative.html.ini
+++ b/tests/wpt/meta/fetch/metadata/generated/css-font-face.https.sub.tentative.html.ini
@@ -46,3 +46,6 @@
[sec-fetch-user]
expected: FAIL
+
+ [sec-fetch-dest]
+ expected: FAIL
diff --git a/tests/wpt/meta/fullscreen/crashtests/chrome-1312699.html.ini b/tests/wpt/meta/fullscreen/crashtests/chrome-1312699.html.ini
deleted file mode 100644
index f1efc6d3c4c..00000000000
--- a/tests/wpt/meta/fullscreen/crashtests/chrome-1312699.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[chrome-1312699.html]
- expected: TIMEOUT
diff --git a/tests/wpt/meta/fullscreen/crashtests/content-visibility-crash.html.ini b/tests/wpt/meta/fullscreen/crashtests/content-visibility-crash.html.ini
deleted file mode 100644
index 39620c6a4e9..00000000000
--- a/tests/wpt/meta/fullscreen/crashtests/content-visibility-crash.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[content-visibility-crash.html]
- expected: TIMEOUT \ No newline at end of file
diff --git a/tests/wpt/meta/fullscreen/rendering/backdrop-iframe.html.ini b/tests/wpt/meta/fullscreen/rendering/backdrop-iframe.html.ini
deleted file mode 100644
index 70d926570da..00000000000
--- a/tests/wpt/meta/fullscreen/rendering/backdrop-iframe.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[backdrop-iframe.html]
- expected: TIMEOUT
diff --git a/tests/wpt/meta/fullscreen/rendering/backdrop-inherit.html.ini b/tests/wpt/meta/fullscreen/rendering/backdrop-inherit.html.ini
deleted file mode 100644
index 9de3b56d1e9..00000000000
--- a/tests/wpt/meta/fullscreen/rendering/backdrop-inherit.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[backdrop-inherit.html]
- expected: TIMEOUT
diff --git a/tests/wpt/meta/fullscreen/rendering/backdrop-object.html.ini b/tests/wpt/meta/fullscreen/rendering/backdrop-object.html.ini
deleted file mode 100644
index 46e7b6f55cd..00000000000
--- a/tests/wpt/meta/fullscreen/rendering/backdrop-object.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[backdrop-object.html]
- expected: TIMEOUT
diff --git a/tests/wpt/meta/fullscreen/rendering/fullscreen-root-fills-page.html.ini b/tests/wpt/meta/fullscreen/rendering/fullscreen-root-fills-page.html.ini
deleted file mode 100644
index cf9995f8551..00000000000
--- a/tests/wpt/meta/fullscreen/rendering/fullscreen-root-fills-page.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[fullscreen-root-fills-page.html]
- expected: TIMEOUT
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/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html.ini b/tests/wpt/meta/html/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html.ini
new file mode 100644
index 00000000000..1f345b780e6
--- /dev/null
+++ b/tests/wpt/meta/html/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html.ini
@@ -0,0 +1,2 @@
+[2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.worker.js.ini b/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.worker.js.ini
deleted file mode 100644
index 92758eb9bd1..00000000000
--- a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.worker.js.ini
+++ /dev/null
@@ -1,78 +0,0 @@
-[2d.composite.grid.no_filter.no_shadow.drawImage.worker.html]
- [2d]
- expected: FAIL
-
- [2d 1]
- expected: FAIL
-
- [2d 2]
- expected: FAIL
-
- [2d 3]
- expected: FAIL
-
- [2d 4]
- expected: FAIL
-
- [2d 5]
- expected: FAIL
-
- [2d 6]
- expected: FAIL
-
- [2d 7]
- expected: FAIL
-
- [2d 8]
- expected: FAIL
-
- [2d 9]
- expected: FAIL
-
- [2d 10]
- expected: FAIL
-
- [2d 11]
- expected: FAIL
-
- [2d 12]
- expected: FAIL
-
- [2d 13]
- expected: FAIL
-
- [2d 14]
- expected: FAIL
-
- [2d 15]
- expected: FAIL
-
- [2d 16]
- expected: FAIL
-
- [2d 17]
- expected: FAIL
-
- [2d 18]
- expected: FAIL
-
- [2d 19]
- expected: FAIL
-
- [2d 20]
- expected: FAIL
-
- [2d 21]
- expected: FAIL
-
- [2d 22]
- expected: FAIL
-
- [2d 23]
- expected: FAIL
-
- [2d 24]
- expected: FAIL
-
- [2d 25]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.worker.js.ini b/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.worker.js.ini
deleted file mode 100644
index e619d9eb9ee..00000000000
--- a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.worker.js.ini
+++ /dev/null
@@ -1,78 +0,0 @@
-[2d.composite.grid.no_filter.no_shadow.fillRect.worker.html]
- [2d]
- expected: FAIL
-
- [2d 1]
- expected: FAIL
-
- [2d 2]
- expected: FAIL
-
- [2d 3]
- expected: FAIL
-
- [2d 4]
- expected: FAIL
-
- [2d 5]
- expected: FAIL
-
- [2d 6]
- expected: FAIL
-
- [2d 7]
- expected: FAIL
-
- [2d 8]
- expected: FAIL
-
- [2d 9]
- expected: FAIL
-
- [2d 10]
- expected: FAIL
-
- [2d 11]
- expected: FAIL
-
- [2d 12]
- expected: FAIL
-
- [2d 13]
- expected: FAIL
-
- [2d 14]
- expected: FAIL
-
- [2d 15]
- expected: FAIL
-
- [2d 16]
- expected: FAIL
-
- [2d 17]
- expected: FAIL
-
- [2d 18]
- expected: FAIL
-
- [2d 19]
- expected: FAIL
-
- [2d 20]
- expected: FAIL
-
- [2d 21]
- expected: FAIL
-
- [2d 22]
- expected: FAIL
-
- [2d 23]
- expected: FAIL
-
- [2d 24]
- expected: FAIL
-
- [2d 25]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.worker.js.ini b/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.worker.js.ini
deleted file mode 100644
index bee6d9d0775..00000000000
--- a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.worker.js.ini
+++ /dev/null
@@ -1,78 +0,0 @@
-[2d.composite.grid.no_filter.no_shadow.pattern.worker.html]
- [2d]
- expected: FAIL
-
- [2d 1]
- expected: FAIL
-
- [2d 2]
- expected: FAIL
-
- [2d 3]
- expected: FAIL
-
- [2d 4]
- expected: FAIL
-
- [2d 5]
- expected: FAIL
-
- [2d 6]
- expected: FAIL
-
- [2d 7]
- expected: FAIL
-
- [2d 8]
- expected: FAIL
-
- [2d 9]
- expected: FAIL
-
- [2d 10]
- expected: FAIL
-
- [2d 11]
- expected: FAIL
-
- [2d 12]
- expected: FAIL
-
- [2d 13]
- expected: FAIL
-
- [2d 14]
- expected: FAIL
-
- [2d 15]
- expected: FAIL
-
- [2d 16]
- expected: FAIL
-
- [2d 17]
- expected: FAIL
-
- [2d 18]
- expected: FAIL
-
- [2d 19]
- expected: FAIL
-
- [2d 20]
- expected: FAIL
-
- [2d 21]
- expected: FAIL
-
- [2d 22]
- expected: FAIL
-
- [2d 23]
- expected: FAIL
-
- [2d 24]
- expected: FAIL
-
- [2d 25]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.worker.js.ini b/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.worker.js.ini
deleted file mode 100644
index a798b37c417..00000000000
--- a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.worker.js.ini
+++ /dev/null
@@ -1,78 +0,0 @@
-[2d.composite.grid.no_filter.shadow.drawImage.worker.html]
- [2d]
- expected: FAIL
-
- [2d 1]
- expected: FAIL
-
- [2d 2]
- expected: FAIL
-
- [2d 3]
- expected: FAIL
-
- [2d 4]
- expected: FAIL
-
- [2d 5]
- expected: FAIL
-
- [2d 6]
- expected: FAIL
-
- [2d 7]
- expected: FAIL
-
- [2d 8]
- expected: FAIL
-
- [2d 9]
- expected: FAIL
-
- [2d 10]
- expected: FAIL
-
- [2d 11]
- expected: FAIL
-
- [2d 12]
- expected: FAIL
-
- [2d 13]
- expected: FAIL
-
- [2d 14]
- expected: FAIL
-
- [2d 15]
- expected: FAIL
-
- [2d 16]
- expected: FAIL
-
- [2d 17]
- expected: FAIL
-
- [2d 18]
- expected: FAIL
-
- [2d 19]
- expected: FAIL
-
- [2d 20]
- expected: FAIL
-
- [2d 21]
- expected: FAIL
-
- [2d 22]
- expected: FAIL
-
- [2d 23]
- expected: FAIL
-
- [2d 24]
- expected: FAIL
-
- [2d 25]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.worker.js.ini b/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.worker.js.ini
deleted file mode 100644
index 33a8dc42b8b..00000000000
--- a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.worker.js.ini
+++ /dev/null
@@ -1,78 +0,0 @@
-[2d.composite.grid.no_filter.shadow.fillRect.worker.html]
- [2d]
- expected: FAIL
-
- [2d 1]
- expected: FAIL
-
- [2d 2]
- expected: FAIL
-
- [2d 3]
- expected: FAIL
-
- [2d 4]
- expected: FAIL
-
- [2d 5]
- expected: FAIL
-
- [2d 6]
- expected: FAIL
-
- [2d 7]
- expected: FAIL
-
- [2d 8]
- expected: FAIL
-
- [2d 9]
- expected: FAIL
-
- [2d 10]
- expected: FAIL
-
- [2d 11]
- expected: FAIL
-
- [2d 12]
- expected: FAIL
-
- [2d 13]
- expected: FAIL
-
- [2d 14]
- expected: FAIL
-
- [2d 15]
- expected: FAIL
-
- [2d 16]
- expected: FAIL
-
- [2d 17]
- expected: FAIL
-
- [2d 18]
- expected: FAIL
-
- [2d 19]
- expected: FAIL
-
- [2d 20]
- expected: FAIL
-
- [2d 21]
- expected: FAIL
-
- [2d 22]
- expected: FAIL
-
- [2d 23]
- expected: FAIL
-
- [2d 24]
- expected: FAIL
-
- [2d 25]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.worker.js.ini b/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.worker.js.ini
deleted file mode 100644
index b5d883b658d..00000000000
--- a/tests/wpt/meta/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.worker.js.ini
+++ /dev/null
@@ -1,78 +0,0 @@
-[2d.composite.grid.no_filter.shadow.pattern.worker.html]
- [2d]
- expected: FAIL
-
- [2d 1]
- expected: FAIL
-
- [2d 2]
- expected: FAIL
-
- [2d 3]
- expected: FAIL
-
- [2d 4]
- expected: FAIL
-
- [2d 5]
- expected: FAIL
-
- [2d 6]
- expected: FAIL
-
- [2d 7]
- expected: FAIL
-
- [2d 8]
- expected: FAIL
-
- [2d 9]
- expected: FAIL
-
- [2d 10]
- expected: FAIL
-
- [2d 11]
- expected: FAIL
-
- [2d 12]
- expected: FAIL
-
- [2d 13]
- expected: FAIL
-
- [2d 14]
- expected: FAIL
-
- [2d 15]
- expected: FAIL
-
- [2d 16]
- expected: FAIL
-
- [2d 17]
- expected: FAIL
-
- [2d 18]
- expected: FAIL
-
- [2d 19]
- expected: FAIL
-
- [2d 20]
- expected: FAIL
-
- [2d 21]
- expected: FAIL
-
- [2d 22]
- expected: FAIL
-
- [2d 23]
- expected: FAIL
-
- [2d 24]
- expected: FAIL
-
- [2d 25]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html.ini b/tests/wpt/meta/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html.ini
new file mode 100644
index 00000000000..1f345b780e6
--- /dev/null
+++ b/tests/wpt/meta/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html.ini
@@ -0,0 +1,2 @@
+[2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.w.html.ini b/tests/wpt/meta/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.w.html.ini
new file mode 100644
index 00000000000..a691585df81
--- /dev/null
+++ b/tests/wpt/meta/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.w.html.ini
@@ -0,0 +1,2 @@
+[2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.w.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
index ccdaf8d61b2..ff6467094b8 100644
--- a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
+++ b/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
@@ -1,3 +1,3 @@
[iframe_sandbox_popups_nonescaping-3.html]
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini b/tests/wpt/meta/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini
index 7682a4830bf..7682a4830bf 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini
+++ b/tests/wpt/meta/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini
diff --git a/tests/wpt/meta/html/semantics/interactive-elements/the-dialog-element/dialog-active-document.html.ini b/tests/wpt/meta/html/semantics/interactive-elements/the-dialog-element/dialog-active-document.html.ini
new file mode 100644
index 00000000000..3518ca4269d
--- /dev/null
+++ b/tests/wpt/meta/html/semantics/interactive-elements/the-dialog-element/dialog-active-document.html.ini
@@ -0,0 +1,3 @@
+[dialog-active-document.html]
+ [showModal should throw when the document isn't active]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html.ini b/tests/wpt/meta/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html.ini
index 7dbee00b55c..3a548c186fb 100644
--- a/tests/wpt/meta/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html.ini
+++ b/tests/wpt/meta/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html.ini
@@ -28,3 +28,6 @@
[Although the document is not attached to any pages, showModal() should execute as normal.]
expected: FAIL
+
+ [When the document is not attached to any pages, showModal() should throw.]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/semantics/popovers/popover-active-document.html.ini b/tests/wpt/meta/html/semantics/popovers/popover-active-document.html.ini
new file mode 100644
index 00000000000..8ddd6a4539e
--- /dev/null
+++ b/tests/wpt/meta/html/semantics/popovers/popover-active-document.html.ini
@@ -0,0 +1,3 @@
+[popover-active-document.html]
+ [showPopover should throw when the document isn't active]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/semantics/popovers/popover-minimum-role.html.ini b/tests/wpt/meta/html/semantics/popovers/popover-minimum-role.html.ini
new file mode 100644
index 00000000000..1ae0c3961a0
--- /dev/null
+++ b/tests/wpt/meta/html/semantics/popovers/popover-minimum-role.html.ini
@@ -0,0 +1,6 @@
+[popover-minimum-role.html]
+ [If specified on an element with an implicit role of generic, then the element's role instead maps to group.]
+ expected: FAIL
+
+ [Dynamic changes to popover attribute should change the role.]
+ expected: FAIL
diff --git a/tests/wpt/meta/webmessaging/with-ports/017.html.ini b/tests/wpt/meta/webmessaging/with-ports/017.html.ini
deleted file mode 100644
index c7946fc91b4..00000000000
--- a/tests/wpt/meta/webmessaging/with-ports/017.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[017.html]
- expected: TIMEOUT
- [origin of the script that invoked the method, about:blank]
- expected: TIMEOUT
diff --git a/tests/wpt/meta/webmessaging/without-ports/018.html.ini b/tests/wpt/meta/webmessaging/without-ports/018.html.ini
deleted file mode 100644
index b7b36c1d3a4..00000000000
--- a/tests/wpt/meta/webmessaging/without-ports/018.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[018.html]
- expected: TIMEOUT
- [origin of the script that invoked the method, javascript:]
- expected: TIMEOUT
diff --git a/tests/wpt/tests/.github/workflows/check-workflow-run.yml b/tests/wpt/tests/.github/workflows/check-workflow-run.yml
index 4b7e6575db6..0487f03a592 100644
--- a/tests/wpt/tests/.github/workflows/check-workflow-run.yml
+++ b/tests/wpt/tests/.github/workflows/check-workflow-run.yml
@@ -15,7 +15,7 @@ on:
jobs:
check-workflow-run:
name: "Check for appropriate epochs"
- if: ${{ github.event_name == 'workflow_run' }}
+ if: ${{ github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success' }}
runs-on:
- ubuntu-22.04
permissions:
diff --git a/tests/wpt/tests/.github/workflows/documentation.yml b/tests/wpt/tests/.github/workflows/documentation.yml
index eecf8ea6369..f7e9fb2e135 100644
--- a/tests/wpt/tests/.github/workflows/documentation.yml
+++ b/tests/wpt/tests/.github/workflows/documentation.yml
@@ -15,6 +15,7 @@ on:
jobs:
build-and-publish:
runs-on: ubuntu-20.04
+ if: github.repository == 'web-platform-tests/wpt'
steps:
- name: Set up Python
uses: actions/setup-python@v5
@@ -31,8 +32,6 @@ jobs:
with:
fetch-depth: 50
- name: Run website_build.sh
- # Use a conditional step instead of a conditional job to work around #20700.
- if: github.repository == 'web-platform-tests/wpt'
run: ./tools/ci/website_build.sh
env:
DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
diff --git a/tests/wpt/tests/.github/workflows/epochs.yml b/tests/wpt/tests/.github/workflows/epochs.yml
index 8e85ee75a84..8b2081364e5 100644
--- a/tests/wpt/tests/.github/workflows/epochs.yml
+++ b/tests/wpt/tests/.github/workflows/epochs.yml
@@ -7,14 +7,13 @@ on:
jobs:
update:
runs-on: ubuntu-20.04
+ if: github.repository == 'web-platform-tests/wpt'
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run epochs_update.sh
- # Use a conditional step instead of a conditional job to work around #20700.
- if: github.repository == 'web-platform-tests/wpt'
run: ./tools/ci/epochs_update.sh
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/tests/wpt/tests/.github/workflows/interfaces.yml b/tests/wpt/tests/.github/workflows/interfaces.yml
index ff2a679b598..302e0a846d8 100644
--- a/tests/wpt/tests/.github/workflows/interfaces.yml
+++ b/tests/wpt/tests/.github/workflows/interfaces.yml
@@ -7,14 +7,13 @@ on:
jobs:
update:
runs-on: ubuntu-20.04
+ if: github.repository == 'web-platform-tests/wpt'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run interfaces_update.sh
run: ./tools/ci/interfaces_update.sh
- name: Create pull request
- # Use a conditional step instead of a conditional job to work around #20700.
- if: github.repository == 'web-platform-tests/wpt'
uses: peter-evans/create-pull-request@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/tests/wpt/tests/.github/workflows/manifest.yml b/tests/wpt/tests/.github/workflows/manifest.yml
index aae43615a9e..a27fc2258de 100644
--- a/tests/wpt/tests/.github/workflows/manifest.yml
+++ b/tests/wpt/tests/.github/workflows/manifest.yml
@@ -9,6 +9,7 @@ on:
jobs:
build-and-tag:
runs-on: ubuntu-20.04
+ if: github.repository == 'web-platform-tests/wpt'
steps:
- name: Set up Python
uses: actions/setup-python@v5
@@ -23,8 +24,6 @@ jobs:
sudo apt-get -qqy install zstd
pip install -r tools/wpt/requirements.txt
- name: Run manifest_build.py
- # Use a conditional step instead of a conditional job to work around #20700.
- if: github.repository == 'web-platform-tests/wpt'
run: tools/docker/retry.py --delay 60 python tools/ci/manifest_build.py
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/tests/wpt/tests/.github/workflows/regen_certs.yml b/tests/wpt/tests/.github/workflows/regen_certs.yml
index bb0cea9f396..b66ba90065f 100644
--- a/tests/wpt/tests/.github/workflows/regen_certs.yml
+++ b/tests/wpt/tests/.github/workflows/regen_certs.yml
@@ -8,6 +8,7 @@ on:
jobs:
update:
runs-on: ubuntu-20.04
+ if: github.repository == 'web-platform-tests/wpt'
steps:
- name: Set up Python
uses: actions/setup-python@v5
@@ -16,14 +17,10 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: Regenerate certs
- # Use a conditional step instead of a conditional job to work around #20700.
- if: github.repository == 'web-platform-tests/wpt'
run: |
python wpt make-hosts-file | sudo tee -a /etc/hosts
python wpt regen-certs --force
- name: Commit and create pull request
- # Use a conditional step instead of a conditional job to work around #20700.
- if: github.repository == 'web-platform-tests/wpt'
uses: peter-evans/create-pull-request@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/tests/wpt/tests/.gitignore b/tests/wpt/tests/.gitignore
index 061700a9604..f2525f49ab6 100644
--- a/tests/wpt/tests/.gitignore
+++ b/tests/wpt/tests/.gitignore
@@ -17,6 +17,9 @@ node_modules/
/MANIFEST.json
/_certs
/config.json
+# The default manifest location when running infrastructure tests locally with
+# `--metadata=infrastructure/metadata`.
+/infrastructure/metadata/MANIFEST.json
# Files generated when regenerating pre-generated certs
/tools/certs/0*.pem
diff --git a/tests/wpt/tests/FileAPI/BlobURL/cross-partition-navigation.tentative.https.html b/tests/wpt/tests/FileAPI/BlobURL/cross-partition-navigation.tentative.https.html
index 05f54b0ae0a..ee879b0d955 100644
--- a/tests/wpt/tests/FileAPI/BlobURL/cross-partition-navigation.tentative.https.html
+++ b/tests/wpt/tests/FileAPI/BlobURL/cross-partition-navigation.tentative.https.html
@@ -64,7 +64,25 @@ async function create_test_iframes(t, response_queue_uuid) {
return [cross_site_iframe_uuid, same_site_iframe_uuid];
}
-// Tests navigating blob URL for same and cross partition iframes.
+const opener_check_frame_html = (noopener_response_queue) => `
+ <!doctype html>
+ <!-- dispatcher.js requires the baseURI to be set in order to compute
+ the server path correctly in the blob URL page. -->
+ <base href="${window.location.href}">
+ <script src="/html/cross-origin-embedder-policy/credentialless/resources/common.js"><\/script>
+ <script src="/html/anonymous-iframe/resources/common.js"><\/script>
+ <script src="/common/utils.js"><\/script>
+ <script src="/common/dispatcher/dispatcher.js"><\/script>
+ <script>
+ if (window.opener === null) {
+ send("${noopener_response_queue}", "${opener_null_response}")
+ } else {
+ send("${noopener_response_queue}", "${opener_not_null_response}")
+ }
+ <\/script>
+`;
+
+// Tests blob URL window.open for same and cross partition iframes.
promise_test(t => {
return new Promise(async (resolve, reject) => {
try {
@@ -75,25 +93,7 @@ promise_test(t => {
const [cross_site_iframe_uuid, same_site_iframe_uuid] =
await create_test_iframes(t, response_queue_uuid);
- const frame_html = `
- <!doctype html>
- <!-- dispatcher.js requires the baseURI to be set in order to compute
- the server path correctly in the blob URL page. -->
- <base href="${window.location.href}">
- <script src="/html/cross-origin-embedder-policy/credentialless/resources/common.js"><\/script>
- <script src="/html/anonymous-iframe/resources/common.js"><\/script>
- <script src="/common/utils.js"><\/script>
- <script src="/common/dispatcher/dispatcher.js"><\/script>
- <script>
- if (window.opener === null) {
- send("${noopener_response_queue}", "${opener_null_response}")
- } else {
- send("${noopener_response_queue}", "${opener_not_null_response}")
- }
- <\/script>
- `;
-
- const blob = new Blob([frame_html], {type : "text/html"});
+ const blob = new Blob([opener_check_frame_html(noopener_response_queue)], {type : "text/html"});
const blob_url = URL.createObjectURL(blob);
// Attempt to open blob URL in cross partition iframe.
@@ -122,7 +122,105 @@ promise_test(t => {
reject(e);
}
});
-}, "Blob URL navigation should enforce noopener for a cross-top-level-site navigation");
+}, "Blob URL window.open should enforce noopener for a cross-top-level-site navigation");
+
+const open_blob_url_window_via_a_click = (blob_url) => `
+ const link = document.createElement("a");
+ link.href = "${blob_url}";
+ link.target = "_blank";
+ link.rel = "opener";
+ document.body.appendChild(link);
+ link.click();
+`;
+
+// Tests blob URL `<a target="_blank" rel="opener">` click for same and cross partition iframes.
+promise_test(t => {
+ return new Promise(async (resolve, reject) => {
+ try {
+ // Creates same and cross partition iframes.
+ const noopener_response_queue = token();
+
+ const [cross_site_iframe_uuid, same_site_iframe_uuid] = await create_test_iframes(t, token());
+
+ const blob = new Blob([opener_check_frame_html(noopener_response_queue)], {type : "text/html"});
+ const blob_url = URL.createObjectURL(blob);
+
+ // Attempt to click blob URL in cross partition iframe.
+ await send(cross_site_iframe_uuid, open_blob_url_window_via_a_click(blob_url));
+ const noopener_response_1 = await receive(noopener_response_queue);
+ if (noopener_response_1 !== opener_null_response) {
+ reject(`Blob URL page opener wasn't null in not-same-top-level-site iframe.`);
+ }
+
+ // Attempt to click blob URL in same partition iframe.
+ await send(same_site_iframe_uuid, open_blob_url_window_via_a_click(blob_url));
+ const noopener_response_2 = await receive(noopener_response_queue);
+ if (noopener_response_2 !== opener_not_null_response) {
+ reject(`Blob URL page opener was null in same-top-level-site iframe`);
+ }
+ resolve();
+ } catch (e) {
+ reject(e);
+ }
+ });
+}, "Blob URL link click should enforce noopener for a cross-top-level-site navigation");
+
+const open_blob_url_window_via_area_click = (blob_url) => `
+ const canvas = document.createElement("canvas");
+ canvas.height = 1;
+ canvas.width = 1;
+ const dataURL = canvas.toDataURL();
+
+ const image = document.createElement("img");
+ image.src = dataURL;
+ document.body.appendChild(image);
+
+ const map = document.createElement("map");
+ map.name = "map";
+ image.useMap = "#map";
+ document.body.appendChild(map);
+
+ const area = document.createElement("area");
+ area.shape = "rect";
+ area.coords = "0,0,1,1";
+ area.href = "${blob_url}";
+ area.target = "_blank";
+ area.rel = "opener";
+ map.appendChild(area);
+ area.click();
+`;
+
+// Tests blob URL `<area target="_blank" rel="opener">` click for same and cross partition iframes.
+promise_test(t => {
+ return new Promise(async (resolve, reject) => {
+ try {
+ // Creates same and cross partition iframes.
+ const noopener_response_queue = token();
+
+ const [cross_site_iframe_uuid, same_site_iframe_uuid] = await create_test_iframes(t, token());
+
+ const blob = new Blob([opener_check_frame_html(noopener_response_queue)], {type : "text/html"});
+ const blob_url = URL.createObjectURL(blob);
+
+ // Attempt to click blob URL in cross partition iframe.
+ await send(cross_site_iframe_uuid, open_blob_url_window_via_area_click(blob_url));
+ const noopener_response_1 = await receive(noopener_response_queue);
+ if (noopener_response_1 !== opener_null_response) {
+ reject(`Blob URL page opener wasn't null in not-same-top-level-site iframe.`);
+ }
+
+ // Attempt to click blob URL in same partition iframe.
+ await send(same_site_iframe_uuid, open_blob_url_window_via_area_click(blob_url));
+ const noopener_response_2 = await receive(noopener_response_queue);
+ if (noopener_response_2 !== opener_not_null_response) {
+ reject(`Blob URL page opener was null in same-top-level-site iframe`);
+ }
+ resolve();
+ } catch (e) {
+ reject(e);
+ }
+ });
+}, "Blob URL area element click should enforce noopener for a cross-top-level-site navigation");
</script>
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/tests/IndexedDB/get-databases.any.js b/tests/wpt/tests/IndexedDB/get-databases.any.js
index ac1ab15f27f..a79adb808d9 100644
--- a/tests/wpt/tests/IndexedDB/get-databases.any.js
+++ b/tests/wpt/tests/IndexedDB/get-databases.any.js
@@ -85,20 +85,32 @@ promise_test(async testCase => {
}, "Make sure an empty list is returned for the case of no databases.");
promise_test(async testCase => {
+ function sleep_sync(msec) {
+ const start = new Date().getTime();
+ while (new Date().getTime() - start < msec) {}
+ }
+
// Delete any databases that may not have been cleaned up after previous test
// runs as well as the two databases made above.
await deleteAllDatabases(testCase);
const db1 = await createNamedDatabase(testCase, "DB1", ()=>{});
+ let databases_promise1;
const db2 = await createNamedDatabase(testCase, "DB2", async () => {
- const databases_result1 = await indexedDB.databases();
- assert_equals(
- databases_result1.length,
- 1,
- "The result of databases() should be only those databases which have "
- + "been created at the time of calling, regardless of versionchange "
- + "transactions currently running.");
+ databases_promise1 = indexedDB.databases();
+
+ // Give databases() operation a chance to fetch all current info about
+ // existing databases. This must be a sync sleep since await would trigger
+ // auto commit of the upgrade transaction.
+ sleep_sync(1000);
});
+ const databases_result1 = await databases_promise1;
+ assert_equals(
+ databases_result1.length,
+ 1,
+ "The result of databases() should be only those databases which have "
+ + "been created at the time of calling, regardless of versionchange "
+ + "transactions currently running.");
db1.close();
db2.close();
const databases_result2 = await indexedDB.databases();
@@ -107,13 +119,20 @@ promise_test(async testCase => {
2,
"The result of databases() should include all databases which have "
+ "been created at the time of calling.");
+ let databases_promise3;
await migrateNamedDatabase(testCase, "DB2", 2, async () => {
- const databases_result3 = await indexedDB.databases();
- assert_true(
- databases_result3[0].version === 1
- && databases_result3[1].version === 1,
- "The result of databases() should contain the versions of databases "
- + "at the time of calling, regardless of versionchange transactions "
- + "currently running.");
+ databases_promise3 = indexedDB.databases();
+
+ // Give databases() operation a chance to fetch all current info about
+ // existing databases. This must be a sync sleep since await would trigger
+ // auto commit of the upgrade transaction.
+ sleep_sync(1000);
});
+ const databases_result3 = await databases_promise3;
+ assert_true(
+ databases_result3[0].version === 1
+ && databases_result3[1].version === 1,
+ "The result of databases() should contain the versions of databases "
+ + "at the time of calling, regardless of versionchange transactions "
+ + "currently running.");
}, "Ensure that databases() doesn't pick up changes that haven't commited.");
diff --git a/tests/wpt/tests/WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.https.any.js b/tests/wpt/tests/WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.https.any.js
new file mode 100644
index 00000000000..5edc832b616
--- /dev/null
+++ b/tests/wpt/tests/WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.https.any.js
@@ -0,0 +1,9 @@
+// META: title=WebCryptoAPI: deriveKey() Using HKDF and PBKDF2 from an ECDH key
+// META: script=derive_key_and_encrypt.js
+// META: script=../util/helpers.js
+
+// Test imported from WebKit's source, defined to check the impact of the
+// 'Get Key Length' behavior of HKDF and PBKDF2, which should return 'null'
+// in both cases, in the 'deriveKey' operation.
+// https://bugs.webkit.org/show_bug.cgi?id=282096
+promise_test(define_tests, 'setup - define tests');
diff --git a/tests/wpt/tests/WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.js b/tests/wpt/tests/WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.js
new file mode 100644
index 00000000000..5963a852fcf
--- /dev/null
+++ b/tests/wpt/tests/WebCryptoAPI/derive_bits_keys/derive_key_and_encrypt.js
@@ -0,0 +1,49 @@
+let iv = new Uint8Array(Array(12).keys());
+let salt = new Uint8Array(Array(10).keys());
+let plaintext = new Uint8Array(Array(100).keys());
+
+function define_tests() {
+ importKeys().then((keys) => {
+ // Make sure that ecdh produces the same shared secret and the same encryption results using a key derived from that secret.
+ keys.forEach(keyData => {
+ promise_test(async() => {
+ let hkdfKey = await crypto.subtle.deriveKey({name: "ECDH", public: keyData.publicKey }, keyData.privateKey, { name: "HKDF", hash: "" , salt: new Uint8Array(), info: new Uint8Array() }, false, ["deriveKey"]);
+ let aesKey = await crypto.subtle.deriveKey({name: "HKDF", hash: "SHA-256", salt: salt, info: plaintext}, hkdfKey, {name:"AES-GCM", length: 256}, true, ["encrypt", "decrypt"]);
+ let result = await crypto.subtle.encrypt({ name: "AES-GCM", iv: iv }, aesKey, plaintext);
+ assert_equals(bytesToHexString(result), "a6280c522670eaf82f6564afbeb20a5b3f2d4e13c5596f6df3dcff8c34cb2118d2770fb24d83cfac5079c323118485bb01170292ee41eb82b07208f4840478fea3771d8922785c476ba06c2a0b933fc1661431419530a916ad4468545d1af5004a1149fea241c2ff1582ee58a8b7d79935de5def");
+ }, "HKDF derivation of a ECDH key " + keyData.test);
+ promise_test(async() => {
+ let pkdf2Key = await crypto.subtle.deriveKey({name: "ECDH", public: keyData.publicKey }, keyData.privateKey, { name: "PBKDF2", hash: "" , salt: new Uint8Array(), iterations: 32 }, false, ["deriveKey"]);
+ let aesKey = await crypto.subtle.deriveKey({name: "PBKDF2", hash: "SHA-256", salt: salt, iterations: 32 }, pkdf2Key, { name:"AES-GCM", length: 256 }, true, ["encrypt", "decrypt"]);
+ let result = await crypto.subtle.encrypt({ name: "AES-GCM", iv: iv }, aesKey, plaintext);
+ assert_equals(bytesToHexString(result), "c6201dfbb6fa92c1c246f6ce52f8f1c037f087efde41bac7f6485a2a8207623d2d3825b9cbe8ef864a90378667ed25544ce44cd2904bd96c19f0eeb611d626185165a8afb4e52f95700d7880f83939a42712fc4e377f198c01a61b397b76c3a4b93d932c321084bbef33332169dea09458b27df3");
+ }, "PBKDF2 derivation of a ECDH key " + keyData.test);
+ });
+ }, (e) => {
+ assert_unreached("Setup failed: " + e.message);
+ });
+
+ return Promise.resolve("define_tests");
+}
+
+async function importKeys() {
+ // "ECDSA" with a 'P-256' curve
+ let keyData = [
+ hexStringToUint8Array("308187020100301306072a8648ce3d020106082a8648ce3d030107046d306b0201010420fe77a808a7109ba5ceb93ebebad2c84a714d864ad29b62d6537e1969035c0079a144034200042684c752eef1c927a80c74e8b02ce459f848b5977f37fd878b36dae632be9a6cadd56126e404a4f75c535e5769d95b49fb1106f784f3d231b776d1f4d57927ce"),
+ hexStringToUint8Array("042684c752eef1c927a80c74e8b02ce459f848b5977f37fd878b36dae632be9a6cadd56126e404a4f75c535e5769d95b49fb1106f784f3d231b776d1f4d57927ce"),
+ hexStringToUint8Array("308187020100301306072a8648ce3d020106082a8648ce3d030107046d306b020101042067521ccd1f85516118182bca3394c273bab9ce5cd6265105559e325e01f2df1ca144034200043042d8698882f2b59de972390d3fc9277e2e677a6c560148017c9475218fda1b38f76f7645fbcaf3d03e6259d080204fbafb04731b6ad53cb25c3d35d95b7c73"),
+ hexStringToUint8Array("043042d8698882f2b59de972390d3fc9277e2e677a6c560148017c9475218fda1b38f76f7645fbcaf3d03e6259d080204fbafb04731b6ad53cb25c3d35d95b7c73"),
+ ];
+ let extractable = true;
+ var allKeys = await Promise.all([
+ crypto.subtle.importKey("pkcs8", keyData[0], {name: "ECDH", namedCurve: "P-256"}, extractable, ["deriveKey", 'deriveBits']),
+ crypto.subtle.importKey("raw", keyData[1], {name: "ECDH", namedCurve: "P-256"}, extractable, []),
+ crypto.subtle.importKey("pkcs8", keyData[2], {name: "ECDH", namedCurve: "P-256"}, extractable, ["deriveKey", 'deriveBits']),
+ crypto.subtle.importKey("raw", keyData[3], {name: "ECDH", namedCurve: "P-256"}, extractable, []),
+ ]);
+ // Test cases defined combining public and private keys of each key-pair.
+ return [
+ { test: 1, publicKey: allKeys[3], privateKey: allKeys[0] },
+ { test: 2, publicKey: allKeys[1], privateKey: allKeys[2] }
+ ];
+}
diff --git a/tests/wpt/tests/WebCryptoAPI/util/helpers.js b/tests/wpt/tests/WebCryptoAPI/util/helpers.js
index bda97003263..c60371dc6ad 100644
--- a/tests/wpt/tests/WebCryptoAPI/util/helpers.js
+++ b/tests/wpt/tests/WebCryptoAPI/util/helpers.js
@@ -259,3 +259,41 @@ function allNameVariants(name, slowTest) {
if (slowTest) return [mixedCaseName];
return unique([upCaseName, lowCaseName, mixedCaseName]);
}
+
+// Builds a hex string representation for an array-like input.
+// "bytes" can be an Array of bytes, an ArrayBuffer, or any TypedArray.
+// The output looks like this:
+// ab034c99
+function bytesToHexString(bytes)
+{
+ if (!bytes)
+ return null;
+
+ bytes = new Uint8Array(bytes);
+ var hexBytes = [];
+
+ for (var i = 0; i < bytes.length; ++i) {
+ var byteString = bytes[i].toString(16);
+ if (byteString.length < 2)
+ byteString = "0" + byteString;
+ hexBytes.push(byteString);
+ }
+
+ return hexBytes.join("");
+}
+
+function hexStringToUint8Array(hexString)
+{
+ if (hexString.length % 2 != 0)
+ throw "Invalid hexString";
+ var arrayBuffer = new Uint8Array(hexString.length / 2);
+
+ for (var i = 0; i < hexString.length; i += 2) {
+ var byteValue = parseInt(hexString.substr(i, 2), 16);
+ if (byteValue == NaN)
+ throw "Invalid hexString";
+ arrayBuffer[i/2] = byteValue;
+ }
+
+ return arrayBuffer;
+}
diff --git a/tests/wpt/tests/avif/animated-avif-timeout-ref.html b/tests/wpt/tests/avif/animated-avif-timeout-ref.html
index 52374220c91..82febcca0b1 100644
--- a/tests/wpt/tests/avif/animated-avif-timeout-ref.html
+++ b/tests/wpt/tests/avif/animated-avif-timeout-ref.html
@@ -1 +1 @@
-<img src=../images/green.avif style="height:500px">
+<img src=../images/green.avif style="height:500px;image-rendering:crisp-edges;">
diff --git a/tests/wpt/tests/avif/animated-avif-timeout.html b/tests/wpt/tests/avif/animated-avif-timeout.html
index 0970c994d34..e89b9a8e06c 100644
--- a/tests/wpt/tests/avif/animated-avif-timeout.html
+++ b/tests/wpt/tests/avif/animated-avif-timeout.html
@@ -1,7 +1,7 @@
<html class="reftest-wait">
<title>Animated AVIF: Second frame displays quickly, replacing red with green.</title>
<link rel="match" href="animated-avif-timeout-ref.html"/>
-<img src=../images/animated-avif.avif onload="loaded()" style="height:500px"/>
+<img src=../images/animated-avif.avif onload="loaded()" style="height:500px;image-rendering:crisp-edges;"/>
<script>
function loaded() {
setTimeout(function() {
diff --git a/tests/wpt/tests/content-security-policy/navigation/to-javascript-url-script-src.html b/tests/wpt/tests/content-security-policy/navigation/to-javascript-url-script-src.html
index 70dea1f985e..e0b6d992e96 100644
--- a/tests/wpt/tests/content-security-policy/navigation/to-javascript-url-script-src.html
+++ b/tests/wpt/tests/content-security-policy/navigation/to-javascript-url-script-src.html
@@ -7,17 +7,15 @@
<body>
<script nonce="abc">
- function assert_csp_event_for_element(test, element) {
+ function assert_csp_event_for_element(test, element, resolve) {
assert_equals(typeof SecurityPolicyViolationEvent, "function", "These tests require 'SecurityPolicyViolationEvent'.");
document.addEventListener("securitypolicyviolation", test.step_func(e => {
- if (e.target != element)
- return;
assert_equals(e.blockedURI, "inline");
assert_equals(e.effectiveDirective, "script-src-elem");
assert_equals(element.contentDocument.body.innerText, "", "Ensure that 'Fail' doesn't appear in the child document.");
element.remove();
- test.done();
- }));
+ resolve();
+ }, { once: true }));
}
function navigate_to_javascript_onload(test, iframe) {
@@ -32,41 +30,49 @@
}));
}
- async_test(t => {
- var i = document.createElement("iframe");
- i.src = "javascript:'Fail.'";
+ promise_test(t => {
+ return new Promise(resolve => {
+ var i = document.createElement("iframe");
+ i.src = "javascript:'Fail.'";
- assert_csp_event_for_element(t, i);
+ assert_csp_event_for_element(t, i, resolve);
- document.body.appendChild(i);
+ document.body.appendChild(i);
+ })
}, "<iframe src='javascript:'> blocked without 'unsafe-inline'.");
- async_test(t => {
- var i = document.createElement("iframe");
+ promise_test(t => {
+ return new Promise(resolve => {
+ var i = document.createElement("iframe");
- assert_csp_event_for_element(t, i);
- navigate_to_javascript_onload(t, i);
+ assert_csp_event_for_element(t, i, resolve);
+ navigate_to_javascript_onload(t, i);
- document.body.appendChild(i);
+ document.body.appendChild(i);
+ })
}, "<iframe> navigated to 'javascript:' blocked without 'unsafe-inline'.");
- async_test(t => {
- var i = document.createElement("iframe");
- i.src = "../support/echo-policy.py?policy=" + encodeURIComponent("script-src 'unsafe-inline'");
+ promise_test(t => {
+ return new Promise(resolve => {
+ var i = document.createElement("iframe");
+ i.src = "../support/echo-policy.py?policy=" + encodeURIComponent("script-src 'unsafe-inline'");
- assert_csp_event_for_element(t, i);
- navigate_to_javascript_onload(t, i);
+ assert_csp_event_for_element(t, i, resolve);
+ navigate_to_javascript_onload(t, i);
- document.body.appendChild(i);
+ document.body.appendChild(i);
+ })
}, "<iframe src='...'> with 'unsafe-inline' navigated to 'javascript:' blocked in this document");
- async_test(t => {
- var i = document.createElement("iframe");
- i.src = "../support/echo-policy.py?policy=" + encodeURIComponent("script-src 'none'");
+ promise_test(t => {
+ return new Promise(resolve => {
+ var i = document.createElement("iframe");
+ i.src = "../support/echo-policy.py?policy=" + encodeURIComponent("script-src 'none'");
- assert_csp_event_for_element(t, i);
- navigate_to_javascript_onload(t, i);
+ assert_csp_event_for_element(t, i, resolve);
+ navigate_to_javascript_onload(t, i);
- document.body.appendChild(i);
+ document.body.appendChild(i);
+ })
}, "<iframe src='...'> without 'unsafe-inline' navigated to 'javascript:' blocked in this document.");
</script>
diff --git a/tests/wpt/tests/css/css-cascade/scope-specificity.html b/tests/wpt/tests/css/css-cascade/scope-specificity.html
index fa103ff3742..8541e0d6371 100644
--- a/tests/wpt/tests/css/css-cascade/scope-specificity.html
+++ b/tests/wpt/tests/css/css-cascade/scope-specificity.html
@@ -85,8 +85,10 @@ test_scope_specificity(['@scope (#main)', 'div .b'], 'div .b');
test_scope_specificity(['@scope (#main)', '@scope (.a)', '.b'], '.b');
// Explicit `:scope` adds specficity.
test_scope_specificity(['@scope (#main)', ':scope .b'], ':scope .b');
-// Using & in scoped style with implicit scope root uses `:scope`, which adds specificity
-test_scope_specificity(['@scope', '& .b'], ':scope .b', styleImplicit);
+// Using & in scoped style with implicit scope root matches the same elements
+// as `:scope`, but does not add any specificity.
+// https://github.com/w3c/csswg-drafts/issues/10196
+test_scope_specificity(['@scope', '& .b'], ':where(:scope) .b', styleImplicit);
// Using relative selector syntax does not add specificity
test_scope_specificity(['@scope (#main)', '> .a'], ':where(#main) > .a');
</script>
diff --git a/tests/wpt/tests/css/css-color-hdr/computed.html b/tests/wpt/tests/css/css-color-hdr/computed.html
new file mode 100644
index 00000000000..7ee1a962977
--- /dev/null
+++ b/tests/wpt/tests/css/css-color-hdr/computed.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<title>Computed value of dynamic-range-limit</title>
+<link rel="help" href="https://drafts.csswg.org/css-color-hdr/#the-dynamic-range-limit-property">
+<meta name="assert" content="Computed value of dynamic-range-limit">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+
+<div id="target"></div>
+
+<script>
+test_computed_value("dynamic-range-limit", "high");
+test_computed_value("dynamic-range-limit", "constrained-high");
+test_computed_value("dynamic-range-limit", "standard");
+test_computed_value("dynamic-range-limit", "dynamic-range-limit-mix(standard 75%, high 25%)");
+test_computed_value("dynamic-range-limit", "dynamic-range-limit-mix(standard 25%, high 75%)");
+test_computed_value("dynamic-range-limit", "dynamic-range-limit-mix(high 25%, standard 75%)",
+ "dynamic-range-limit-mix(standard 75%, high 25%)");
+test_computed_value("dynamic-range-limit", "dynamic-range-limit-mix(high 100%, standard 100%)",
+ "dynamic-range-limit-mix(standard 50%, high 50%)");
+test_computed_value("dynamic-range-limit", "dynamic-range-limit-mix(high 80%, standard 60%, constrained-high 60%)",
+ "dynamic-range-limit-mix(standard 30%, constrained-high 30%, high 40%)");
+test_computed_value("dynamic-range-limit", "dynamic-range-limit-mix(standard 25%, constrained-high 75%)");
+test_computed_value("dynamic-range-limit", "dynamic-range-limit-mix(constrained-high 75%, standard 25%)",
+ "dynamic-range-limit-mix(standard 25%, constrained-high 75%)");
+test_computed_value("dynamic-range-limit", "dynamic-range-limit-mix(constrained-high 25%, high 25%)",
+ "dynamic-range-limit-mix(constrained-high 50%, high 50%)");
+test_computed_value("dynamic-range-limit", "dynamic-range-limit-mix(standard 25%, constrained-high 50%, high 25%)");
+test_computed_value("dynamic-range-limit", "dynamic-range-limit-mix(standard 10%, constrained-high 20%, high 20%)",
+ "dynamic-range-limit-mix(standard 20%, constrained-high 40%, high 40%)");
+test_computed_value("dynamic-range-limit", "dynamic-range-limit-mix(high 10%, standard 30%)",
+ "dynamic-range-limit-mix(standard 75%, high 25%)");
+test_computed_value("dynamic-range-limit", "dynamic-range-limit-mix(dynamic-range-limit-mix(standard 10%, high 30%) 20%, standard 80%)",
+ "dynamic-range-limit-mix(standard 85%, high 15%)");
+test_computed_value("dynamic-range-limit", "dynamic-range-limit-mix(dynamic-range-limit-mix(standard 25%, high 75%) 20%, dynamic-range-limit-mix(standard 25%, constrained-high 75%) 40%, dynamic-range-limit-mix(constrained-high 25%, high 75%) 40%)",
+ "dynamic-range-limit-mix(standard 15%, constrained-high 40%, high 45%)");
+test_computed_value("dynamic-range-limit", "dynamic-range-limit-mix(high 10%, dynamic-range-limit-mix(standard 25%, constrained-high 75%) 20%, dynamic-range-limit-mix(constrained-high 10%, high 30%) 20%)",
+ "dynamic-range-limit-mix(standard 10%, constrained-high 40%, high 50%)");
+</script>
diff --git a/tests/wpt/tests/css/css-color-hdr/inheritance.html b/tests/wpt/tests/css/css-color-hdr/inheritance.html
new file mode 100644
index 00000000000..4f7a44a7729
--- /dev/null
+++ b/tests/wpt/tests/css/css-color-hdr/inheritance.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<title>Inheritance of dynamic-range-limit</title>
+<link rel="help" href="https://drafts.csswg.org/css-color-hdr/#the-dynamic-range-limit-property">
+<meta name="assert" content="Inheritance of dynamic-range-limit">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/inheritance-testcommon.js"></script>
+
+<div id="container">
+ <div id="target"></div>
+</div>
+
+<script>
+ assert_inherited('dynamic-range-limit', 'high', 'standard');
+</script>
diff --git a/tests/wpt/tests/css/css-color-hdr/interpolation.html b/tests/wpt/tests/css/css-color-hdr/interpolation.html
new file mode 100644
index 00000000000..62e079f6366
--- /dev/null
+++ b/tests/wpt/tests/css/css-color-hdr/interpolation.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<title>Interpolation of dynamic-range-limit</title>
+<link rel="help" href="https://drafts.csswg.org/css-color-hdr/#the-dynamic-range-limit-property">
+<meta name="assert" content="Interpolation of dynamic-range-limit">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<body>
+ <template id="target-template">T</template>
+</body>
+
+<script>
+test_interpolation({
+ property: "dynamic-range-limit",
+ from: "high",
+ to: "standard",
+}, [
+ {at: 0.0, expect: "high"},
+ {at: 0.25, expect: "dynamic-range-limit-mix(standard 25%, high 75%)"},
+ {at: 0.75, expect: "dynamic-range-limit-mix(standard 75%, high 25%)"},
+ {at: 1.0, expect: "standard"},
+]);
+
+test_interpolation({
+ property: "dynamic-range-limit",
+ from: "constrained-high",
+ to: "standard",
+}, [
+ {at: 0.0, expect: "constrained-high"},
+ {at: 0.5, expect: "dynamic-range-limit-mix(standard 50%, constrained-high 50%)"},
+ {at: 1.0, expect: "standard"},
+]);
+
+test_interpolation({
+ property: "dynamic-range-limit",
+ from: "dynamic-range-limit-mix(standard 50%, high 50%)",
+ to: "standard",
+}, [
+ {at: 0.0, expect: "dynamic-range-limit-mix(standard 50%, high 50%)"},
+ {at: 0.75, expect: "dynamic-range-limit-mix(standard 87.5%, high 12.5%)"},
+ {at: 1.0, expect: "standard"},
+]);
+
+test_interpolation({
+ property: "dynamic-range-limit",
+ from: "dynamic-range-limit-mix(standard 90%, high 10%)",
+ to: "dynamic-range-limit-mix(standard 10%, high 90%)",
+}, [
+ {at: 0.0, expect: "dynamic-range-limit-mix(standard 90%, high 10%)"},
+ {at: 0.5, expect: "dynamic-range-limit-mix(standard 50%, high 50%)"},
+ {at: 1.0, expect: "dynamic-range-limit-mix(standard 10%, high 90%)"},
+]);
+
+test_interpolation({
+ property: "dynamic-range-limit",
+ from: "dynamic-range-limit-mix(constrained-high 90%, standard 10%)",
+ to: "dynamic-range-limit-mix(high 10%, standard 90%)",
+}, [
+ {at: 0.0, expect: "dynamic-range-limit-mix(standard 10%, constrained-high 90%)"},
+ {at: 0.5, expect: "dynamic-range-limit-mix(standard 50%, constrained-high 45%, high 5%)"},
+ {at: 1.0, expect: "dynamic-range-limit-mix(standard 90%, high 10%)"},
+]);
+</script>
diff --git a/tests/wpt/tests/css/css-color-hdr/parsing.html b/tests/wpt/tests/css/css-color-hdr/parsing.html
new file mode 100644
index 00000000000..5d377a1ca7a
--- /dev/null
+++ b/tests/wpt/tests/css/css-color-hdr/parsing.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<title>Parsing dynamic-range-limit with valid and invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-color-hdr/#the-dynamic-range-limit-property">
+<meta name="assert" content="Parsing of dynamic-range-limit">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+
+<script>
+ test_valid_value("dynamic-range-limit", "standard");
+ test_valid_value("dynamic-range-limit", "high");
+ test_valid_value("dynamic-range-limit", "constrained-high");
+ test_valid_value("dynamic-range-limit", "dynamic-range-limit-mix(high 80%, standard 20%)");
+ test_valid_value("dynamic-range-limit", "dynamic-range-limit-mix(high 8%, standard 2%)");
+ test_valid_value("dynamic-range-limit", "dynamic-range-limit-mix(high 99%, standard 99%)");
+ test_valid_value("dynamic-range-limit", "dynamic-range-limit-mix(constrained-high 20%, high 80%)");
+ test_valid_value("dynamic-range-limit", "dynamic-range-limit-mix(dynamic-range-limit-mix(constrained-high 90%, high 10%) 1%, high 80%)");
+ test_valid_value("dynamic-range-limit", "dynamic-range-limit-mix(high 1%, dynamic-range-limit-mix(constrained-high 2%, high 10%) 80%)");
+ test_valid_value("dynamic-range-limit", "dynamic-range-limit-mix(dynamic-range-limit-mix(high 1%, standard 2%) 3%, dynamic-range-limit-mix(constrained-high 5%, high 5%) 6%)");
+ test_invalid_value("dynamic-range-limit", "dynamic-range-limit-mix(high 80%, standard 20%, )");
+ test_invalid_value("dynamic-range-limit", "dynamic-range-limit-mix(high, standard 20%)");
+ test_invalid_value("dynamic-range-limit", "dynamic-range-limit-mix(constrained-high, high, 80%)");
+ test_invalid_value("dynamic-range-limit", "");
+ test_invalid_value("dynamic-range-limit", "none");
+ test_invalid_value("dynamic-range-limit", "default");
+ test_invalid_value("dynamic-range-limit", "hdr");
+ test_invalid_value("dynamic-range-limit", "sdr");
+ test_invalid_value("dynamic-range-limit", "low");
+ test_invalid_value("dynamic-range-limit", "dynamic-range-limit-mix(low, high, 10%)");
+ test_invalid_value("dynamic-range-limit", "dynamic-range-limit-mix(high 101%, standard 1%)");
+ test_invalid_value("dynamic-range-limit", "dynamic-range-limit-mix(high -1%, standard 1%)");
+ test_invalid_value("dynamic-range-limit", "dynamic-range-limit-mix(standard, high, 0.1)");
+ test_invalid_value("dynamic-range-limit", "dynamic-range-limit-mix(high 0%, standard 0%)");
+ test_invalid_value("dynamic-range-limit", "dynamic-range-limit-mix(dynamic-range-limit-mix(high 1%, standard 2%) 3%, dynamic-range-limit-mix(constrained-high 0%, high 0%) 6%)");
+</script>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/animation-container-size.html b/tests/wpt/tests/css/css-conditional/container-queries/animation-container-size.html
index e620335c358..0a142ef7e26 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/animation-container-size.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/animation-container-size.html
@@ -29,7 +29,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(target).backgroundColor, 'rgb(0, 0, 255)');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/animation-container-type-dynamic.html b/tests/wpt/tests/css/css-conditional/container-queries/animation-container-type-dynamic.html
index 473c914d8a5..404a4c69cd8 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/animation-container-type-dynamic.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/animation-container-type-dynamic.html
@@ -49,7 +49,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(target).backgroundColor, 'rgb(0, 0, 255)');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/animation-nested-animation.html b/tests/wpt/tests/css/css-conditional/container-queries/animation-nested-animation.html
index b956fed2b4c..cc43b745873 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/animation-nested-animation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/animation-nested-animation.html
@@ -33,7 +33,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(target).backgroundColor, 'rgb(0, 128, 0)');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/animation-nested-transition.html b/tests/wpt/tests/css/css-conditional/container-queries/animation-nested-transition.html
index ca8808664ef..ed1de7af782 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/animation-nested-transition.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/animation-nested-transition.html
@@ -30,7 +30,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(target).backgroundColor, 'rgb(100, 100, 100)');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/aspect-ratio-feature-evaluation.html b/tests/wpt/tests/css/css-conditional/container-queries/aspect-ratio-feature-evaluation.html
index 9b68e8679d0..590f2b227aa 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/aspect-ratio-feature-evaluation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/aspect-ratio-feature-evaluation.html
@@ -22,7 +22,7 @@
<div id="inline-size" class="container"><span></span></div>
<div id="size" class="container"><span></span></div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
const red = "rgb(255, 0, 0)";
const green = "rgb(0, 128, 0)";
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/at-container-parsing.html b/tests/wpt/tests/css/css-conditional/container-queries/at-container-parsing.html
index 5c9d8c1bb9e..183242e69dd 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/at-container-parsing.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/at-container-parsing.html
@@ -8,7 +8,7 @@
<main id="cq-main"></main>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test_cq_condition_known('(width)');
test_cq_condition_known('(min-width: 0px)');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/at-container-serialization.html b/tests/wpt/tests/css/css-conditional/container-queries/at-container-serialization.html
index 7e6e3e99452..dbe9ea023e8 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/at-container-serialization.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/at-container-serialization.html
@@ -27,7 +27,7 @@
@container (calc(1em + 1px) >= width >= max(10em, 10px)) { }
</style>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
let rules = testSheet.sheet.cssRules;
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/at-container-style-parsing.html b/tests/wpt/tests/css/css-conditional/container-queries/at-container-style-parsing.html
index c63cc76560b..2e6722335c2 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/at-container-style-parsing.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/at-container-style-parsing.html
@@ -8,7 +8,7 @@
<main id="cq-main"></main>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_style_container_queries());
test_cq_condition_known('style(--my-prop: foo)');
test_cq_condition_known('style(--my-prop: foo - bar ())');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/at-container-style-serialization.html b/tests/wpt/tests/css/css-conditional/container-queries/at-container-style-serialization.html
index bd9d23a4b70..f128109c678 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/at-container-style-serialization.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/at-container-style-serialization.html
@@ -17,7 +17,7 @@
</style>
<script>
setup(() => {
- assert_implements_container_queries();
+ assert_implements_style_container_queries();
assert_equals(testSheet.sheet.cssRules.length, 8);
});
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/auto-scrollbars.html b/tests/wpt/tests/css/css-conditional/container-queries/auto-scrollbars.html
index 96f082f38aa..a08d694ac57 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/auto-scrollbars.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/auto-scrollbars.html
@@ -32,7 +32,7 @@
</div>
<script>
setup(() => {
- assert_implements_container_queries();
+ assert_implements_size_container_queries();
assert_implements_optional(precondition.clientWidth < 100,
"Tests do not work with overlay scrollbars");
});
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/backdrop-invalidation.html b/tests/wpt/tests/css/css-conditional/container-queries/backdrop-invalidation.html
index 6f7d52cc386..a4a232e9a13 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/backdrop-invalidation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/backdrop-invalidation.html
@@ -29,7 +29,7 @@
<dialog>test</dialog>
</main>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
let dialog = document.querySelector('dialog');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/calc-evaluation.html b/tests/wpt/tests/css/css-conditional/container-queries/calc-evaluation.html
index 60fd59e9cd4..ccdd31a061b 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/calc-evaluation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/calc-evaluation.html
@@ -24,7 +24,7 @@
<div id=target></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(target).color, 'rgb(0, 128, 0)');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/canvas-as-container-005.html b/tests/wpt/tests/css/css-conditional/container-queries/canvas-as-container-005.html
index 3068ce708e6..a96d48411e4 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/canvas-as-container-005.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/canvas-as-container-005.html
@@ -21,7 +21,7 @@
<div id="target" tabIndex="1"></div>
</canvas>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
target.focus();
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/canvas-as-container-006.html b/tests/wpt/tests/css/css-conditional/container-queries/canvas-as-container-006.html
index 0fbb6f6d833..6cee3883ace 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/canvas-as-container-006.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/canvas-as-container-006.html
@@ -22,7 +22,7 @@
<div id="target" tabIndex="1"></div>
</canvas>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
target.focus();
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/column-spanner-in-container.html b/tests/wpt/tests/css/css-conditional/container-queries/column-spanner-in-container.html
index 0f0b5f7850f..912c6304306 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/column-spanner-in-container.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/column-spanner-in-container.html
@@ -23,7 +23,7 @@
<div id="spanner"></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(spanner).width, "600px");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/conditional-container-status.html b/tests/wpt/tests/css/css-conditional/container-queries/conditional-container-status.html
index d0dfb97e9cb..23819c9a281 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/conditional-container-status.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/conditional-container-status.html
@@ -19,7 +19,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(function() {
let s = getComputedStyle(document.querySelector('.grandchild'));
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-computed.html b/tests/wpt/tests/css/css-conditional/container-queries/container-computed.html
index fa56ab77402..7b74dccf7bd 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-computed.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-computed.html
@@ -9,7 +9,7 @@
<script src="support/cq-testcommon.js"></script>
<div id="target"></div>
<script>
-setup(() => assert_implements_container_queries());
+setup(() => assert_implements_size_container_queries());
test_computed_value('container', 'initial', 'none');
test_computed_value('container', 'inherit', 'none');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-for-shadow-dom.html b/tests/wpt/tests/css/css-conditional/container-queries/container-for-shadow-dom.html
index d79b3a9d554..13a2423a822 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-for-shadow-dom.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-for-shadow-dom.html
@@ -343,7 +343,7 @@
<script>
setup(() => {
- assert_implements_container_queries();
+ assert_implements_size_container_queries();
});
const green = "rgb(0, 128, 0)";
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-inheritance.html b/tests/wpt/tests/css/css-conditional/container-queries/container-inheritance.html
index 9fc8cadc3e4..b4efa1d5231 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-inheritance.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-inheritance.html
@@ -11,7 +11,7 @@
<div id="target"></div>
</div>
<script>
-setup(() => assert_implements_container_queries());
+setup(() => assert_implements_size_container_queries());
assert_not_inherited('container-name', 'none', 'foo');
assert_not_inherited('container-type', 'normal', 'inline-size');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-inner-at-rules.html b/tests/wpt/tests/css/css-conditional/container-queries/container-inner-at-rules.html
index 4f0d6e02589..a6f2691d495 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-inner-at-rules.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-inner-at-rules.html
@@ -17,7 +17,7 @@
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
</script>
<style>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-inside-multicol-with-table.html b/tests/wpt/tests/css/css-conditional/container-queries/container-inside-multicol-with-table.html
index 1046d57ef25..af5ca305904 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-inside-multicol-with-table.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-inside-multicol-with-table.html
@@ -27,7 +27,7 @@
</table>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
const green = "rgb(0, 128, 0)";
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-longhand-animation-type.html b/tests/wpt/tests/css/css-conditional/container-queries/container-longhand-animation-type.html
index efc9a817d94..8be0c51332c 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-longhand-animation-type.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-longhand-animation-type.html
@@ -28,7 +28,7 @@
<div id=container>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(container).getPropertyValue('--ref'), 'PASS');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-name-computed.html b/tests/wpt/tests/css/css-conditional/container-queries/container-name-computed.html
index abd2ebe0860..083e604cd5b 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-name-computed.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-name-computed.html
@@ -8,7 +8,7 @@
<script src="support/cq-testcommon.js"></script>
<div id="target"></div>
<script>
-setup(() => assert_implements_container_queries());
+setup(() => assert_implements_size_container_queries());
test_computed_value('container-name', 'initial', 'none');
test_computed_value('container-name', 'unset', 'none');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-name-invalidation.html b/tests/wpt/tests/css/css-conditional/container-queries/container-name-invalidation.html
index e918f182e2c..f9c8267b212 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-name-invalidation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-name-invalidation.html
@@ -38,7 +38,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(function(t) {
t.add_cleanup(() => { outer.style = ''; });
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-name-parsing.html b/tests/wpt/tests/css/css-conditional/container-queries/container-name-parsing.html
index 895b73ee66e..7cf6800b2e0 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-name-parsing.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-name-parsing.html
@@ -8,7 +8,7 @@
<script src="support/cq-testcommon.js"></script>
<div id="target"></div>
<script>
-setup(() => assert_implements_container_queries());
+setup(() => assert_implements_size_container_queries());
test_valid_value('container-name', 'initial');
test_valid_value('container-name', 'inherit');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-name-tree-scoped.html b/tests/wpt/tests/css/css-conditional/container-queries/container-name-tree-scoped.html
index de633282e88..c2962ffa8d8 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-name-tree-scoped.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-name-tree-scoped.html
@@ -88,7 +88,7 @@
<script>
setup(() => {
- assert_implements_container_queries();
+ assert_implements_size_container_queries();
});
const green = "rgb(0, 128, 0)";
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-nested.html b/tests/wpt/tests/css/css-conditional/container-queries/container-nested.html
index dfe30ac0ae1..c39672096ad 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-nested.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-nested.html
@@ -26,7 +26,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
</script>
<!--
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-parsing.html b/tests/wpt/tests/css/css-conditional/container-queries/container-parsing.html
index ab04102b569..185d39e9ccf 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-parsing.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-parsing.html
@@ -9,7 +9,7 @@
<script src="support/cq-testcommon.js"></script>
<div id="target"></div>
<script>
-setup(() => assert_implements_container_queries());
+setup(() => assert_implements_size_container_queries());
test_valid_value('container', 'initial');
test_valid_value('container', 'inherit');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-selection-unknown-features.html b/tests/wpt/tests/css/css-conditional/container-queries/container-selection-unknown-features.html
index 5c2c67caaf1..ef9111ffdee 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-selection-unknown-features.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-selection-unknown-features.html
@@ -30,7 +30,10 @@
<div id="t4">Green</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => {
+ assert_implements_size_container_queries();
+ assert_implements_style_container_queries();
+ });
const green = "rgb(0, 128, 0)";
test(() => { assert_equals(getComputedStyle(t1).color, green); }, "width query with (foo: bar)");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-selection.html b/tests/wpt/tests/css/css-conditional/container-queries/container-selection.html
index d262da9ddfd..780dbd57cb2 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-selection.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-selection.html
@@ -111,7 +111,7 @@
</main>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
function test_query(prelude, selector, expected) {
test(t => {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-size-invalidation-after-load.html b/tests/wpt/tests/css/css-conditional/container-queries/container-size-invalidation-after-load.html
index 2d66b0990fd..ccf169872a7 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-size-invalidation-after-load.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-size-invalidation-after-load.html
@@ -21,7 +21,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
function waitForLoad(w) {
return new Promise(resolve => w.addEventListener('load', resolve));
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-size-invalidation.html b/tests/wpt/tests/css/css-conditional/container-queries/container-size-invalidation.html
index 14433c9c3cf..ae8885e8d62 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-size-invalidation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-size-invalidation.html
@@ -22,7 +22,7 @@
</div>
</main>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(function() {
assert_equals(getComputedStyle(child).color, 'rgb(255, 0, 0)');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-size-nested-invalidation.html b/tests/wpt/tests/css/css-conditional/container-queries/container-size-nested-invalidation.html
index c13c80ed385..0b1bfc0c8a5 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-size-nested-invalidation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-size-nested-invalidation.html
@@ -38,7 +38,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(function() {
assert_equals(getComputedStyle(outer_child).getPropertyValue('--outer'), 'true');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-size-shadow-invalidation.html b/tests/wpt/tests/css/css-conditional/container-queries/container-size-shadow-invalidation.html
index 4d2300701ae..dfcc827981e 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-size-shadow-invalidation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-size-shadow-invalidation.html
@@ -34,7 +34,7 @@
</div>
<script>
setup(() => {
- assert_implements_container_queries();
+ assert_implements_size_container_queries();
});
const green = "rgb(0, 128, 0)";
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-type-computed.html b/tests/wpt/tests/css/css-conditional/container-queries/container-type-computed.html
index 60d5ab5a05a..2612b15d66d 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-type-computed.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-type-computed.html
@@ -8,7 +8,7 @@
<script src="support/cq-testcommon.js"></script>
<div id="target"></div>
<script>
-setup(() => assert_implements_container_queries());
+setup(() => assert_implements_size_container_queries());
test_computed_value('container-type', 'initial', 'normal');
test_computed_value('container-type', 'unset', 'normal');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-type-containment.html b/tests/wpt/tests/css/css-conditional/container-queries/container-type-containment.html
index ba97b385d6c..f71fbde1112 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-type-containment.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-type-containment.html
@@ -5,7 +5,7 @@
<script src="/resources/testharnessreport.js"></script>
<script src="support/cq-testcommon.js"></script>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
</script>
<style>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-type-invalidation.html b/tests/wpt/tests/css/css-conditional/container-queries/container-type-invalidation.html
index e4f02028a74..710292431ba 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-type-invalidation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-type-invalidation.html
@@ -37,7 +37,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(function(t) {
t.add_cleanup(() => {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-type-layout-invalidation.html b/tests/wpt/tests/css/css-conditional/container-queries/container-type-layout-invalidation.html
index 27c7b8a012d..81c3083af3e 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-type-layout-invalidation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-type-layout-invalidation.html
@@ -13,7 +13,7 @@
content
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(function(t) {
t.add_cleanup(() => { div.style = ''; });
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-type-parsing.html b/tests/wpt/tests/css/css-conditional/container-queries/container-type-parsing.html
index 1e106852c5b..711e00b0f93 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-type-parsing.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-type-parsing.html
@@ -8,7 +8,7 @@
<script src="support/cq-testcommon.js"></script>
<div id="target"></div>
<script>
-setup(() => assert_implements_container_queries());
+setup(() => assert_implements_size_container_queries());
test_valid_value('container-type', 'initial');
test_valid_value('container-type', 'inherit');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-units-animation.html b/tests/wpt/tests/css/css-conditional/container-queries/container-units-animation.html
index 79e59dc2a18..984009ebdfe 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-units-animation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-units-animation.html
@@ -42,7 +42,7 @@
<div id=element_cqmax></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
const units = ['cqw', 'cqh', 'cqi', 'cqb', 'cqmin', 'cqmax'];
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-units-basic.html b/tests/wpt/tests/css/css-conditional/container-queries/container-units-basic.html
index 84f55d550ea..2cf5e5c6b1a 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-units-basic.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-units-basic.html
@@ -20,7 +20,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
function assert_unit_equals(element, actual, expected) {
try {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-units-computational-independence.html b/tests/wpt/tests/css/css-conditional/container-queries/container-units-computational-independence.html
index 94d786dfe51..0a6777c3a2d 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-units-computational-independence.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-units-computational-independence.html
@@ -6,7 +6,7 @@
<script src="/resources/testharnessreport.js"></script>
<script src="support/cq-testcommon.js"></script>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
const units = ['cqw', 'cqh', 'cqi', 'cqb', 'cqmin', 'cqmax'];
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-units-content-box.html b/tests/wpt/tests/css/css-conditional/container-queries/container-units-content-box.html
index 0fc18b3175f..b2657a2df06 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-units-content-box.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-units-content-box.html
@@ -24,7 +24,7 @@
<div id=child2></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
function assert_unit_equals(element, actual, expected) {
try {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-units-in-at-container-dynamic.html b/tests/wpt/tests/css/css-conditional/container-queries/container-units-in-at-container-dynamic.html
index 978d5a60051..ba8651d15f5 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-units-in-at-container-dynamic.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-units-in-at-container-dynamic.html
@@ -27,7 +27,7 @@
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(child).getPropertyValue('--cqw'), '');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-units-in-at-container-fallback.html b/tests/wpt/tests/css/css-conditional/container-queries/container-units-in-at-container-fallback.html
index fe7af8e38ea..91ec82a2a59 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-units-in-at-container-fallback.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-units-in-at-container-fallback.html
@@ -44,7 +44,7 @@
</div>
"></iframe>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
function waitForLoad(w) {
return new Promise(resolve => w.addEventListener('load', resolve));
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-units-in-at-container.html b/tests/wpt/tests/css/css-conditional/container-queries/container-units-in-at-container.html
index 9faf62ffc0c..3403ea64061 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-units-in-at-container.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-units-in-at-container.html
@@ -73,7 +73,7 @@
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
let units = [
'cqw',
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-units-ineligible-container.html b/tests/wpt/tests/css/css-conditional/container-queries/container-units-ineligible-container.html
index 61565de6e28..e6a36461da3 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-units-ineligible-container.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-units-ineligible-container.html
@@ -19,7 +19,7 @@
<script src="/resources/testharnessreport.js"></script>
<script src="support/cq-testcommon.js"></script>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
const cases = {
"/* basic */": [20, 15],
"display: table": [30, 25],
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-units-invalidation.html b/tests/wpt/tests/css/css-conditional/container-queries/container-units-invalidation.html
index 602f6b69dc2..b4036875d2b 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-units-invalidation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-units-invalidation.html
@@ -26,7 +26,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
function assert_cqi_equals(element, expected) {
assert_equals(getComputedStyle(element).paddingLeft, expected);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-units-media-queries.html b/tests/wpt/tests/css/css-conditional/container-queries/container-units-media-queries.html
index b46e0cb715a..f9ed6eb8aa5 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-units-media-queries.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-units-media-queries.html
@@ -15,7 +15,7 @@
<iframe id=iframe></iframe>
<script>
-setup(() => assert_implements_container_queries());
+setup(() => assert_implements_size_container_queries());
const doc = iframe.contentDocument;
const win = iframe.contentWindow;
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-units-selection.html b/tests/wpt/tests/css/css-conditional/container-queries/container-units-selection.html
index 66ab3e24580..cb69395b8b0 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-units-selection.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-units-selection.html
@@ -26,7 +26,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
function assert_unit_equals(element, actual, expected) {
try {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-units-shadow.html b/tests/wpt/tests/css/css-conditional/container-queries/container-units-shadow.html
index 3c672ad5426..d860e082585 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-units-shadow.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-units-shadow.html
@@ -46,7 +46,7 @@
</div>
<script>
setup(() => {
- assert_implements_container_queries();
+ assert_implements_size_container_queries();
});
test(() => {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-units-small-viewport-fallback.html b/tests/wpt/tests/css/css-conditional/container-queries/container-units-small-viewport-fallback.html
index d1c95d33b8f..c4761392c81 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-units-small-viewport-fallback.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-units-small-viewport-fallback.html
@@ -32,7 +32,7 @@
"></iframe>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
function waitForLoad(w) {
return new Promise(resolve => w.addEventListener('load', resolve));
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-units-svglength.html b/tests/wpt/tests/css/css-conditional/container-queries/container-units-svglength.html
index e39c21e3461..4b25b79bf54 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-units-svglength.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-units-svglength.html
@@ -27,7 +27,7 @@
</div>
<script>
setup(() => {
- assert_implements_container_queries();
+ assert_implements_size_container_queries();
container.offsetTop;
});
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/container-units-typed-om.html b/tests/wpt/tests/css/css-conditional/container-queries/container-units-typed-om.html
index 4ebb3518ac2..935b5411a36 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/container-units-typed-om.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/container-units-typed-om.html
@@ -7,7 +7,7 @@
<script src="support/cq-testcommon.js"></script>
<div id=element></div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
const units = ['cqw', 'cqh', 'cqi', 'cqb', 'cqmin', 'cqmax'];
const functions = {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/counters-flex-circular.html b/tests/wpt/tests/css/css-conditional/container-queries/counters-flex-circular.html
index 04af2e2dc06..661c9a9b3f6 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/counters-flex-circular.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/counters-flex-circular.html
@@ -49,7 +49,7 @@
<div id="item2"></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
const item1_width = parseInt(getComputedStyle(item1).width);
const item2_width = parseInt(getComputedStyle(item2).width);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/custom-property-style-queries.html b/tests/wpt/tests/css/css-conditional/container-queries/custom-property-style-queries.html
index 17ee5b4184b..2b3dd78fe5e 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/custom-property-style-queries.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/custom-property-style-queries.html
@@ -30,6 +30,11 @@
</div>
</div>
<script>
+ setup(() => {
+ assert_implements_style_container_queries();
+ assert_implements_size_container_queries();
+ });
+
const green = "rgb(0, 128, 0)";
function test_evaluation(name, query, expected) {
@@ -55,7 +60,10 @@
}, `${name} ${query}`);
}
- setup(() => assert_implements_container_queries());
+ setup(() => {
+ assert_implements_style_container_queries();
+ assert_implements_size_container_queries();
+ });
test_evaluation('', 'style(--inner: true)', true);
test_evaluation('', 'style(--inner:true)', true);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/custom-property-style-query-change.html b/tests/wpt/tests/css/css-conditional/container-queries/custom-property-style-query-change.html
index ac15092b4cd..13280e35803 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/custom-property-style-query-change.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/custom-property-style-query-change.html
@@ -21,7 +21,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_style_container_queries());
const green = "rgb(0, 128, 0)";
const red = "rgb(255, 0, 0)";
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/deep-nested-inline-size-containers.html b/tests/wpt/tests/css/css-conditional/container-queries/deep-nested-inline-size-containers.html
index 40012b41f21..6f311401b9c 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/deep-nested-inline-size-containers.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/deep-nested-inline-size-containers.html
@@ -11,7 +11,7 @@
<div id="outer" class="container"></div>
<script>
setup(() => {
- assert_implements_container_queries();
+ assert_implements_size_container_queries();
// Create 50 nested inline-size containers where a child container is 1px
// narrower than its parent
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/display-contents-dynamic-style-queries.html b/tests/wpt/tests/css/css-conditional/container-queries/display-contents-dynamic-style-queries.html
index 466992f628f..ca4879bfc01 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/display-contents-dynamic-style-queries.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/display-contents-dynamic-style-queries.html
@@ -22,7 +22,7 @@
<div id="target">This should be green</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_style_container_queries());
test(() => {
assert_equals(getComputedStyle(target).color, "rgb(255, 0, 0)");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/display-contents.html b/tests/wpt/tests/css/css-conditional/container-queries/display-contents.html
index 3dd50caff38..bcb93171f90 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/display-contents.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/display-contents.html
@@ -6,7 +6,7 @@
<script src="/resources/testharnessreport.js"></script>
<script src="support/cq-testcommon.js"></script>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
</script>
<style>
.container {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/display-none.html b/tests/wpt/tests/css/css-conditional/container-queries/display-none.html
index 4949cbbb715..22b8fbedab5 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/display-none.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/display-none.html
@@ -6,7 +6,7 @@
<script src="/resources/testharnessreport.js"></script>
<script src="support/cq-testcommon.js"></script>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
</script>
<style>
.container {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/font-relative-calc-dynamic.html b/tests/wpt/tests/css/css-conditional/container-queries/font-relative-calc-dynamic.html
index 927dda9ffa1..fd807c2232c 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/font-relative-calc-dynamic.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/font-relative-calc-dynamic.html
@@ -25,7 +25,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(target).color, 'rgb(255, 0, 0)');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/font-relative-units-dynamic.html b/tests/wpt/tests/css/css-conditional/container-queries/font-relative-units-dynamic.html
index 60c668a71c7..a9983d2f028 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/font-relative-units-dynamic.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/font-relative-units-dynamic.html
@@ -6,7 +6,7 @@
<script src="support/cq-testcommon.js"></script>
<script>
-setup(() => assert_implements_container_queries());
+setup(() => assert_implements_size_container_queries());
// Inflate a <template> subtree into #main, run the test function,
// then clean up.
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/font-relative-units.html b/tests/wpt/tests/css/css-conditional/container-queries/font-relative-units.html
index 38d19028255..3d676402e1e 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/font-relative-units.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/font-relative-units.html
@@ -100,7 +100,7 @@
<div id="rlh_test"></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
const green = "rgb(0, 128, 0)";
test(() => assert_equals(getComputedStyle(em_test).color, green), "em relative inline-size");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/fragmented-container-001.html b/tests/wpt/tests/css/css-conditional/container-queries/fragmented-container-001.html
index f5f4d7de7bd..3db0ea22987 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/fragmented-container-001.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/fragmented-container-001.html
@@ -38,7 +38,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
const green = "rgb(0, 128, 0)";
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/get-animations.html b/tests/wpt/tests/css/css-conditional/container-queries/get-animations.html
index 228f52ecf58..1cfa0a7773f 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/get-animations.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/get-animations.html
@@ -22,7 +22,7 @@
<div id=div>Green</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(div).color, 'rgb(255, 0, 0)');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/grid-container.html b/tests/wpt/tests/css/css-conditional/container-queries/grid-container.html
index c7002f696f6..ee9838e6cf4 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/grid-container.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/grid-container.html
@@ -20,7 +20,7 @@
<div id="item2"></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(item1).color, "rgb(0, 128, 0)");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/grid-item-container.html b/tests/wpt/tests/css/css-conditional/container-queries/grid-item-container.html
index f097c18b2ae..70ce6c16a6c 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/grid-item-container.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/grid-item-container.html
@@ -29,7 +29,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(target1).color, "rgb(0, 128, 0)", "First item container should be 200px wide");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/iframe-in-container-invalidation.html b/tests/wpt/tests/css/css-conditional/container-queries/iframe-in-container-invalidation.html
index 4c904d2d4b4..64be52980a2 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/iframe-in-container-invalidation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/iframe-in-container-invalidation.html
@@ -36,7 +36,7 @@
"></iframe>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
function waitForLoad(w) {
return new Promise(resolve => w.addEventListener('load', resolve));
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/iframe-invalidation.html b/tests/wpt/tests/css/css-conditional/container-queries/iframe-invalidation.html
index c68fd4b16a9..58c2cd7330d 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/iframe-invalidation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/iframe-invalidation.html
@@ -26,7 +26,7 @@
</div>
"></iframe>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
function waitForLoad(w) {
return new Promise(resolve => w.addEventListener('load', resolve));
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/ineligible-containment.html b/tests/wpt/tests/css/css-conditional/container-queries/ineligible-containment.html
index 1e1cace51e7..20b49299428 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/ineligible-containment.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/ineligible-containment.html
@@ -29,7 +29,7 @@
</div>
</main>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(function(t) {
// #inner1 is the container, but it does not satisfy the containment
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/inheritance-from-container.html b/tests/wpt/tests/css/css-conditional/container-queries/inheritance-from-container.html
index 4b815d68aa3..8bf69adff1b 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/inheritance-from-container.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/inheritance-from-container.html
@@ -20,7 +20,7 @@
</style>
<div id=outer><div id=container><span id=inner>PASS</span></div></div>
<script>
-setup(() => assert_implements_container_queries());
+setup(() => assert_implements_size_container_queries());
test((t) => {
assert_equals(getComputedStyle(inner).visibility, "hidden");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/inline-size-and-min-width.html b/tests/wpt/tests/css/css-conditional/container-queries/inline-size-and-min-width.html
index 91e8c48a93a..f895f9aadd1 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/inline-size-and-min-width.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/inline-size-and-min-width.html
@@ -18,7 +18,7 @@
<div id="child">Green</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(child).color, "rgb(0, 128, 0)");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/inline-size-containment-vertical-rl.html b/tests/wpt/tests/css/css-conditional/container-queries/inline-size-containment-vertical-rl.html
index 44fa62c7935..794268655ad 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/inline-size-containment-vertical-rl.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/inline-size-containment-vertical-rl.html
@@ -23,7 +23,7 @@
<script src="/resources/testharnessreport.js"></script>
<script src="support/cq-testcommon.js"></script>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(()=> {
ancestry.style.height = "100px";
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/inline-size-containment.html b/tests/wpt/tests/css/css-conditional/container-queries/inline-size-containment.html
index 154a0a47ce1..3c94640bf07 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/inline-size-containment.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/inline-size-containment.html
@@ -22,7 +22,7 @@
<script src="/resources/testharnessreport.js"></script>
<script src="support/cq-testcommon.js"></script>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(()=> {
ancestry.style.width = "100px";
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/layout-dependent-focus.html b/tests/wpt/tests/css/css-conditional/container-queries/layout-dependent-focus.html
index 3e28f4a1da1..bc8b9b8dc0b 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/layout-dependent-focus.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/layout-dependent-focus.html
@@ -22,7 +22,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
let hide_test = async_test("Verify that onblur is called on hidden input");
onload = () => {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/multicol-container-001.html b/tests/wpt/tests/css/css-conditional/container-queries/multicol-container-001.html
index 9785b6b0c62..714c3b95726 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/multicol-container-001.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/multicol-container-001.html
@@ -21,7 +21,7 @@
<div id="second-child">Second</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
const green = "rgb(0, 128, 0)";
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/nested-query-containers.html b/tests/wpt/tests/css/css-conditional/container-queries/nested-query-containers.html
index 348e3d1529e..b45bafc9bef 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/nested-query-containers.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/nested-query-containers.html
@@ -14,7 +14,7 @@
<body>
<script>
promise_setup(() => {
- assert_implements_container_queries();
+ assert_implements_size_container_queries();
return new Promise(resolve => {
addEventListener("load", () => {
requestAnimationFrame(() => {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/nested-size-style-container-invalidation.html b/tests/wpt/tests/css/css-conditional/container-queries/nested-size-style-container-invalidation.html
index 87256703884..c22a1a3068b 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/nested-size-style-container-invalidation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/nested-size-style-container-invalidation.html
@@ -27,7 +27,10 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => {
+ assert_implements_size_container_queries();
+ assert_implements_style_container_queries();
+ });
test(() => {
assert_equals(getComputedStyle(target).color, "rgb(255, 0, 0)");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/never-match-container.html b/tests/wpt/tests/css/css-conditional/container-queries/never-match-container.html
index 5acded7cc5a..d8557aa2cb1 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/never-match-container.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/never-match-container.html
@@ -5,7 +5,7 @@
<script src="/resources/testharnessreport.js"></script>
<script src="support/cq-testcommon.js"></script>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
</script>
<style>
#outer-container {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/orthogonal-wm-container-query.html b/tests/wpt/tests/css/css-conditional/container-queries/orthogonal-wm-container-query.html
index 630226500ef..c3a4026f7d7 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/orthogonal-wm-container-query.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/orthogonal-wm-container-query.html
@@ -24,7 +24,7 @@
<div id="orthogonal">XX</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(orthogonal.offsetWidth, container.offsetWidth);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/percentage-padding-orthogonal.html b/tests/wpt/tests/css/css-conditional/container-queries/percentage-padding-orthogonal.html
index dac71be0bca..e468505e6b0 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/percentage-padding-orthogonal.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/percentage-padding-orthogonal.html
@@ -45,7 +45,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => assert_equals(padded.offsetHeight, 100),
"#container height measured with 500px width. Both container children visible");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-001.html b/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-001.html
index e147da5d9e8..8d66eb0045d 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-001.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-001.html
@@ -30,7 +30,7 @@
</ol>
</main>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(function() {
let div = document.querySelector('#container1 > div');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-003.html b/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-003.html
index d7bec8a6e18..909a3215566 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-003.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-003.html
@@ -34,7 +34,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
const green = "rgb(0, 128, 0)";
const lime = "rgb(0, 255, 0)";
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-004.html b/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-004.html
index 6c0babfae23..0a4ce52b8d1 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-004.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-004.html
@@ -29,7 +29,7 @@
<div id="target"></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
const green = "rgb(0, 128, 0)";
const red = "rgb(255, 0, 0)";
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-005.html b/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-005.html
index 163349adc86..a357a13be9e 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-005.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-005.html
@@ -19,7 +19,7 @@
</style>
<div id="c1"></div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_style_container_queries());
test(() => {
let style = getComputedStyle(c1, "::before");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-006.html b/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-006.html
index 39c00d70dc2..dee9db64667 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-006.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-006.html
@@ -34,7 +34,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(target, "::before").fontSize, "20px");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-007.html b/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-007.html
index 575cb73af65..1bcd4359459 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-007.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-007.html
@@ -29,7 +29,7 @@
<div id="target"></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
const pseudo_elements = ["::before", "::after", "::marker", "::first-line", "::first-letter", "::backdrop"];
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-008.html b/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-008.html
index dfa07922368..6db12a18294 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-008.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-008.html
@@ -31,7 +31,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(target, "::before").fontSize, "20px");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-013.html b/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-013.html
index e41fc7611a4..1036c62ee5d 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-013.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/pseudo-elements-013.html
@@ -25,7 +25,7 @@
<div id="target"></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(target, "::highlight(foo)").textDecorationThickness, "0px");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/query-content-box.html b/tests/wpt/tests/css/css-conditional/container-queries/query-content-box.html
index 5b83944d2f8..1ed98ba1d56 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/query-content-box.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/query-content-box.html
@@ -89,7 +89,7 @@
<div class="target"></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
const green = "rgb(0, 128, 0)";
const blue = "rgb(0, 0, 255)";
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/query-evaluation-style.html b/tests/wpt/tests/css/css-conditional/container-queries/query-evaluation-style.html
index 75876dd1ac3..585d5e7742b 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/query-evaluation-style.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/query-evaluation-style.html
@@ -14,7 +14,7 @@
<div id=inner></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
function test_query(query, expected) {
test((t) => {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/query-evaluation.html b/tests/wpt/tests/css/css-conditional/container-queries/query-evaluation.html
index d5c77c3a7e4..68d803be2c4 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/query-evaluation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/query-evaluation.html
@@ -16,7 +16,7 @@
<div id=inner></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
function test_query(query, expected) {
test((t) => {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/reattach-container-with-dirty-child.html b/tests/wpt/tests/css/css-conditional/container-queries/reattach-container-with-dirty-child.html
index 914155a6602..5a4b9e311bd 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/reattach-container-with-dirty-child.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/reattach-container-with-dirty-child.html
@@ -19,7 +19,7 @@
<div id="child"><span id="inner">XXX</span></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
container.offsetTop;
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/registered-color-style-queries.html b/tests/wpt/tests/css/css-conditional/container-queries/registered-color-style-queries.html
index fd663d2c2d8..dc1393ba05c 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/registered-color-style-queries.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/registered-color-style-queries.html
@@ -29,6 +29,8 @@
<div id="t2"></div>
</div>
<script>
+ setup(() => assert_implements_style_container_queries());
+
const green = "rgb(0, 128, 0)";
test(() => {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-overflowing-parsing.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-overflowing-parsing.html
index 5c15a825853..e45326a2ffe 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-overflowing-parsing.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-overflowing-parsing.html
@@ -9,7 +9,7 @@
<main id="cq-main"></main>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
test_cq_condition_known('scroll-state(overflowing)');
test_cq_condition_known('scroll-state(overflowing: none)');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-overflowing-serialization.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-overflowing-serialization.html
index f55cfeb6343..75a2be3bb78 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-overflowing-serialization.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-overflowing-serialization.html
@@ -14,7 +14,7 @@
</style>
<script>
setup(() => {
- assert_implements_container_queries();
+ assert_implements_scroll_state_container_queries();
assert_equals(testSheet.sheet.cssRules.length, 5);
});
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-snapped-parsing.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-snapped-parsing.html
index 0a8fe50bc38..adeace0a7d4 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-snapped-parsing.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-snapped-parsing.html
@@ -8,7 +8,7 @@
<main id="cq-main"></main>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
test_cq_condition_known('scroll-state(snapped)');
test_cq_condition_known('scroll-state(snapped: x)');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-snapped-serialization.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-snapped-serialization.html
index 59cc3d37f4f..748b5e3d1ac 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-snapped-serialization.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-snapped-serialization.html
@@ -14,7 +14,7 @@
</style>
<script>
setup(() => {
- assert_implements_container_queries();
+ assert_implements_scroll_state_container_queries();
assert_equals(testSheet.sheet.cssRules.length, 5);
});
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-stuck-parsing.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-stuck-parsing.html
index a3a1f01458d..c1e0b0b1807 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-stuck-parsing.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-stuck-parsing.html
@@ -8,7 +8,7 @@
<main id="cq-main"></main>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
test_cq_condition_known('scroll-state(stuck)');
test_cq_condition_known('scroll-state(stuck: none)');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-stuck-serialization.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-stuck-serialization.html
index d5abede45c2..85585130c1e 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-stuck-serialization.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/at-container-stuck-serialization.html
@@ -14,7 +14,7 @@
</style>
<script>
setup(() => {
- assert_implements_container_queries();
+ assert_implements_scroll_state_container_queries();
assert_equals(testSheet.sheet.cssRules.length, 5);
});
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-computed.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-computed.html
index 4e80712beab..4e156db4e8c 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-computed.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-computed.html
@@ -8,8 +8,6 @@
<script src="/css/css-conditional/container-queries/support/cq-testcommon.js"></script>
<div id="target"></div>
<script>
- setup(() => assert_implements_container_queries());
-
test_computed_value('container-type', 'scroll-state');
test_computed_value('container-type', 'scroll-state size', 'size scroll-state');
test_computed_value('container-type', 'inline-size scroll-state');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-parsing.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-parsing.html
index 7f3779bc39d..4a982433536 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-parsing.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/container-type-scroll-state-parsing.html
@@ -8,7 +8,7 @@
<script src="/css/css-conditional/container-queries/support/cq-testcommon.js"></script>
<div id="target"></div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
test_valid_value('container-type', 'scroll-state');
test_valid_value('container-type', 'size scroll-state');
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-initially-overflowing.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-initially-overflowing.html
index 91e45c79403..fe26333e55c 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-initially-overflowing.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-initially-overflowing.html
@@ -65,7 +65,7 @@
<span id="t8"></span>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
promise_test(async t => {
await waitForAnimationFrames(2);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-initially-snapped.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-initially-snapped.html
index 64a171c361e..c427e2dd569 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-initially-snapped.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-initially-snapped.html
@@ -37,7 +37,7 @@
</div>
<div id="filler-after"></div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
promise_test(async t => {
await waitForAnimationFrames(2);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-initially-stuck.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-initially-stuck.html
index c0d59b61e76..9319e8ce1d9 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-initially-stuck.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-initially-stuck.html
@@ -25,7 +25,7 @@
<span id="target">My container is stuck</span>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
promise_test(async t => {
await waitForAnimationFrames(2);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-change.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-change.html
index ae0fd155f4c..15cdc96421f 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-change.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-change.html
@@ -32,7 +32,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
promise_test(async t => {
await waitForAnimationFrames(2);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-container-type-change.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-container-type-change.html
index a011da4039d..ecb12141603 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-container-type-change.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-container-type-change.html
@@ -25,7 +25,7 @@
<div id="target"></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
promise_test(async t => {
await waitForAnimationFrames(2);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-layout-change.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-layout-change.html
index 39181292ff7..72344e2943d 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-layout-change.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-layout-change.html
@@ -29,7 +29,7 @@
<div id="target"></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
promise_test(async t => {
await waitForAnimationFrames(2);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-pseudo.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-pseudo.html
new file mode 100644
index 00000000000..cb2638c5c12
--- /dev/null
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-pseudo.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<title>@container: scroll-state(overflowing) for pseudo element</title>
+<link rel="help" href="https://drafts.csswg.org/css-conditional-5/#overflowing">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/css-conditional/container-queries/support/cq-testcommon.js"></script>
+<script src="/css/css-transitions/support/helper.js"></script>
+<style>
+ #scroller {
+ container-type: scroll-state;
+ overflow: auto;
+ width: 100px;
+ height: 100px;
+ }
+ #wrapper {
+ width: 10px;
+ height: 10px;
+ }
+ #wrapper.large {
+ width: 75px;
+ height: 75px;
+ }
+ #target {
+ width: 200%;
+ height: 200%;
+ --before: no;
+ --after: no;
+ @container scroll-state(overflowing) {
+ &::before {
+ --before: yes;
+ content: " ";
+ }
+ &::after {
+ --after: yes;
+ }
+ }
+ }
+</style>
+<div id="scroller">
+ <div id="wrapper">
+ <div id="target"></div>
+ </div>
+</div>
+<script>
+ setup(() => assert_implements_scroll_state_container_queries());
+
+ promise_test(async t => {
+ await waitForAnimationFrames(2);
+ assert_equals(getComputedStyle(target, "::before").getPropertyValue("--before"), "no");
+ assert_equals(getComputedStyle(target, "::after").getPropertyValue("--after"), "no");
+ }, "::before/::after initially not matching");
+
+ promise_test(async t => {
+ wrapper.className = "large";
+ await waitForAnimationFrames(2);
+ assert_equals(getComputedStyle(target, "::before").getPropertyValue("--before"), "yes");
+ assert_equals(getComputedStyle(target, "::after").getPropertyValue("--after"), "yes");
+ }, "::before/::after matching after content starts overflowing #scroller");
+
+</script>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-wm.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-wm.html
index 46b2a590782..137808db805 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-wm.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-overflowing-wm.html
@@ -53,7 +53,7 @@
<div class="overflowing v vrl ltr"><span class="target"></span></div>
<div class="overflowing v vrl rtl"><span class="target"></span></div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
function match_overflowing(container_selector, expected_matches) {
let scroller = document.querySelector(container_selector + " .target");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-change.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-change.html
index 6e9843b8b75..5dfea29404f 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-change.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-change.html
@@ -36,7 +36,7 @@
</div>
<div id="filler"></div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
promise_test(async t => {
await waitForAnimationFrames(2);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-container-type-change.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-container-type-change.html
index 4eb5de2679e..81ed4998011 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-container-type-change.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-container-type-change.html
@@ -38,7 +38,7 @@
</div>
<div id="filler-after"></div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
promise_test(async t => {
await waitForAnimationFrames(2);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-layout-change.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-layout-change.html
index 26392239cde..e1f2f687a8e 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-layout-change.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-layout-change.html
@@ -39,7 +39,7 @@
</div>
<div id="filler-after"></div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
promise_test(async t => {
await waitForAnimationFrames(2);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-none.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-none.html
index 8c7aae56beb..60efb78082d 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-none.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-none.html
@@ -17,7 +17,7 @@
<div id="target"></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
test(() => {
assert_equals(getComputedStyle(target).getPropertyValue("--snapped-none"), "true");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-pseudo.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-pseudo.html
new file mode 100644
index 00000000000..1d7aaafcf30
--- /dev/null
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-pseudo.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<title>@container: scroll-state(snapped) layout change</title>
+<link rel="help" href="https://drafts.csswg.org/css-conditional-5/#snapped">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/css-conditional/container-queries/support/cq-testcommon.js"></script>
+<script src="/css/css-transitions/support/helper.js"></script>
+<style>
+ :root {
+ scroll-snap-type: block proximity;
+ }
+ body {
+ margin: 0;
+ }
+ #filler-before {
+ height: 10px;
+ }
+ #filler-after {
+ height: 10000px;
+ }
+ #snapped {
+ position: relative;
+ top: 3000px; /* Should be enough to not snap for proximity */
+ container-type: scroll-state inline-size;
+ scroll-snap-align: start;
+ --before: no;
+ --after: no;
+ @container scroll-state(snapped) {
+ &::before {
+ --before: yes;
+ content: " ";
+ }
+ &::after {
+ --after: yes;
+ }
+ }
+ }
+</style>
+<div id="filler-before"></div>
+<div id="snapped"></div>
+<div id="filler-after"></div>
+<script>
+ setup(() => {
+ assert_implements_scroll_state_container_queries();
+ assert_implements_size_container_queries();
+ });
+
+ promise_test(async t => {
+ await waitForAnimationFrames(2);
+ assert_equals(getComputedStyle(snapped, "::before").getPropertyValue("--before"), "no");
+ assert_equals(getComputedStyle(snapped, "::after").getPropertyValue("--after"), "no");
+ }, "Initially, snapped query does not match and ::before/::after do not apply");
+
+ promise_test(async t => {
+ snapped.style.top = "auto";
+ await waitForAnimationFrames(2);
+ assert_equals(getComputedStyle(snapped, "::before").getPropertyValue("--before"), "yes");
+ assert_equals(getComputedStyle(snapped, "::after").getPropertyValue("--after"), "yes");
+ }, "::before/::after depending on snapped query");
+
+</script>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-snap-changing.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-snap-changing.html
index 161c2e1368d..85f678f07e1 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-snap-changing.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-snap-changing.html
@@ -31,7 +31,7 @@
</div>
<div id="filler"></div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
let changeTarget;
let changingTarget;
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-wm.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-wm.html
index b6703e81142..10bfd83b3ab 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-wm.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-snapped-wm.html
@@ -47,7 +47,7 @@
</div>
<div id="filler-after"></div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
promise_test(async t => {
await waitForAnimationFrames(2);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-container-type-change.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-container-type-change.html
index 9c6df648322..f29b46e90f7 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-container-type-change.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-container-type-change.html
@@ -28,7 +28,7 @@
<span id="target">My container is stuck</span>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
promise_test(async t => {
await waitForAnimationFrames(2);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-layout-change.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-layout-change.html
index 9d5b8195eed..a2297c8122e 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-layout-change.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-layout-change.html
@@ -34,7 +34,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
promise_test(async t => {
await waitForAnimationFrames(2);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-pseudo.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-pseudo.html
new file mode 100644
index 00000000000..f6a89e12000
--- /dev/null
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-pseudo.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<title>@container: scroll-state(stuck) for pseudo element</title>
+<link rel="help" href="https://drafts.csswg.org/css-conditional-5/#stuck">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/css-conditional/container-queries/support/cq-testcommon.js"></script>
+<script src="/css/css-transitions/support/helper.js"></script>
+<style>
+ #scroller {
+ overflow-y: scroll;
+ height: 200px;
+ }
+ #filler {
+ height: 100px;
+ }
+ #stuck {
+ #inner {
+ height: 50px;
+ }
+ container-type: scroll-state;
+ position: sticky;
+ bottom: 0;
+ --before: no;
+ --after: no;
+ @container scroll-state(stuck: bottom) {
+ &::before {
+ --before: yes;
+ content: " ";
+ }
+ &::after {
+ --after: yes;
+ }
+ }
+ }
+</style>
+<div id="scroller">
+ <div id="filler"></div>
+ <div id="stuck">
+ <div id="inner"></div>
+ </div>
+</div>
+<script>
+ setup(() => assert_implements_scroll_state_container_queries());
+
+ promise_test(async t => {
+ await waitForAnimationFrames(2);
+ assert_equals(getComputedStyle(stuck, "::before").getPropertyValue("--before"), "no");
+ assert_equals(getComputedStyle(stuck, "::after").getPropertyValue("--after"), "no");
+ }, "Initially, stuck query does not match and ::before/::after do not apply");
+
+ promise_test(async t => {
+ inner.style.height = "150px";
+ await waitForAnimationFrames(2);
+ assert_equals(getComputedStyle(stuck, "::before").getPropertyValue("--before"), "yes");
+ assert_equals(getComputedStyle(stuck, "::after").getPropertyValue("--after"), "yes");
+ }, "::before/::after depending on stuck query");
+</script>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-writing-direction.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-writing-direction.html
index eb0c1c4a84e..a082207aca7 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-writing-direction.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-stuck-writing-direction.html
@@ -42,7 +42,7 @@
<div id="target"></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
promise_test(async t => {
await waitForAnimationFrames(2);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-target-query-change.html b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-target-query-change.html
index 33459f470b9..605b398b7a9 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-target-query-change.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scroll-state/scroll-state-target-query-change.html
@@ -25,7 +25,7 @@
</div>
<div id="filler"></div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_scroll_state_container_queries());
promise_test(async t => {
await waitForAnimationFrames(2);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/sibling-layout-dependency.html b/tests/wpt/tests/css/css-conditional/container-queries/sibling-layout-dependency.html
index eb3df2ba410..1cef872d60f 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/sibling-layout-dependency.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/sibling-layout-dependency.html
@@ -7,7 +7,7 @@
<script src="/resources/testharnessreport.js"></script>
<script src="support/cq-testcommon.js"></script>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
</script>
<style>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/size-container-no-principal-box.html b/tests/wpt/tests/css/css-conditional/container-queries/size-container-no-principal-box.html
index 730bb1d7361..cca59a434cd 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/size-container-no-principal-box.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/size-container-no-principal-box.html
@@ -35,7 +35,7 @@
<div id="inner_contents"><span></span></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(ref).color, "rgb(0, 128, 0)");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/size-container-writing-mode-change.html b/tests/wpt/tests/css/css-conditional/container-queries/size-container-writing-mode-change.html
index dd709388b7d..33047dbb758 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/size-container-writing-mode-change.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/size-container-writing-mode-change.html
@@ -23,7 +23,7 @@
<div id="target">Should be green</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(target).color, "rgb(255, 0, 0)");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/size-feature-evaluation.html b/tests/wpt/tests/css/css-conditional/container-queries/size-feature-evaluation.html
index 282233dec9d..4ea81271fd2 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/size-feature-evaluation.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/size-feature-evaluation.html
@@ -12,7 +12,7 @@
</div>
<script>
-setup(() => assert_implements_container_queries());
+setup(() => assert_implements_size_container_queries());
function test_evaluation(container_class, query, expected) {
test(function(t) {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/style-change-in-container.html b/tests/wpt/tests/css/css-conditional/container-queries/style-change-in-container.html
index abbb1266e69..612c387a6d3 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/style-change-in-container.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/style-change-in-container.html
@@ -14,7 +14,7 @@
<div id="content"></div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
let content = document.getElementById("content");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/style-container-for-shadow-dom.html b/tests/wpt/tests/css/css-conditional/container-queries/style-container-for-shadow-dom.html
index 22ab9b9c3e8..5ff49d37909 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/style-container-for-shadow-dom.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/style-container-for-shadow-dom.html
@@ -190,7 +190,7 @@
<script>
setup(() => {
- assert_implements_container_queries();
+ assert_implements_style_container_queries();
});
const green = "rgb(0, 128, 0)";
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/style-container-invalidation-inheritance.html b/tests/wpt/tests/css/css-conditional/container-queries/style-container-invalidation-inheritance.html
index 9d2ab561101..2986b8461b9 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/style-container-invalidation-inheritance.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/style-container-invalidation-inheritance.html
@@ -26,7 +26,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_style_container_queries());
test(() => {
assert_equals(getComputedStyle(inner).color, "rgb(255, 0, 0)");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/style-not-sharing-float.html b/tests/wpt/tests/css/css-conditional/container-queries/style-not-sharing-float.html
index c3633949113..2931113726f 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/style-not-sharing-float.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/style-not-sharing-float.html
@@ -31,7 +31,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(target1).color, "rgb(0, 255, 0)", "Second item container should be 100px wide");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/style-query-document-element.html b/tests/wpt/tests/css/css-conditional/container-queries/style-query-document-element.html
index ff370a9b26d..8ea959487b7 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/style-query-document-element.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/style-query-document-element.html
@@ -14,10 +14,7 @@
</style>
<body id="body">
<script>
- setup(() => assert_implements_container_queries());
-
test(() => {
assert_equals(getComputedStyle(body).color, "rgb(0, 128, 0)");
}, "style query should evaluate to true");
</script>
-
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/style-query-no-cycle.html b/tests/wpt/tests/css/css-conditional/container-queries/style-query-no-cycle.html
index 5a179d38976..fc7d658759e 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/style-query-no-cycle.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/style-query-no-cycle.html
@@ -14,7 +14,7 @@
<div id="target">Should be green</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_style_container_queries());
test(() => {
assert_equals(getComputedStyle(target).color, "rgb(0, 128, 0)");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/style-query-with-unknown-width.html b/tests/wpt/tests/css/css-conditional/container-queries/style-query-with-unknown-width.html
index 52f250c2d0d..3791369436f 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/style-query-with-unknown-width.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/style-query-with-unknown-width.html
@@ -18,7 +18,10 @@
<div id="target">Should be green</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => {
+ assert_implements_style_container_queries();
+ assert_implements_size_container_queries();
+ });
test(() => {
assert_equals(getComputedStyle(target).color, "rgb(0, 128, 0)");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/support/cq-testcommon.js b/tests/wpt/tests/css/css-conditional/container-queries/support/cq-testcommon.js
index 672a7e9646e..a9b7b92ae52 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/support/cq-testcommon.js
+++ b/tests/wpt/tests/css/css-conditional/container-queries/support/cq-testcommon.js
@@ -1,5 +1,25 @@
-function assert_implements_container_queries() {
- assert_implements(CSS.supports("container-type:size"), "Basic support for container queries required");
+function assert_implements_size_container_queries() {
+ assert_implements(CSS.supports("container-type:size"),
+ "Basic support for size container queries required");
+}
+
+function assert_implements_scroll_state_container_queries() {
+ assert_implements(CSS.supports("container-type:scroll-state"),
+ "Basic support for scroll-state container queries required");
+}
+
+function assert_implements_style_container_queries() {
+ // TODO: Replace with CSS.supports() when/if this can be expressed with at-rule().
+ const sheet = new CSSStyleSheet();
+ // No support means the style() function is <general-enclosed> which should
+ // affect serialization. Although serialization for <general-enclosed> is not
+ // specified[1], unknown function names are unlikely to be resolved to be
+ // serialized lower-case. Also, keeping the case is currently interoperable.
+ //
+ // [1] https://github.com/w3c/csswg-drafts/issues/7266
+ sheet.replaceSync('@container STYLE(--foo: bar){}');
+ assert_implements(sheet.cssRules[0].containerQuery === "style(--foo: bar)",
+ "Basic support for style container queries required");
}
function cleanup_container_query_main() {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/svg-foreignobject-child-container.html b/tests/wpt/tests/css/css-conditional/container-queries/svg-foreignobject-child-container.html
index 8dc98a6321c..95dde8d3a02 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/svg-foreignobject-child-container.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/svg-foreignobject-child-container.html
@@ -28,7 +28,7 @@
</foreignObject>
</svg>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
const green = "rgb(0, 128, 0)";
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/svg-root-size-container.html b/tests/wpt/tests/css/css-conditional/container-queries/svg-root-size-container.html
index ccdcf557d51..68b34fb2125 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/svg-root-size-container.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/svg-root-size-container.html
@@ -22,7 +22,7 @@
</foreignObject>
</svg>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
const green = "rgb(0, 128, 0)";
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/top-layer-dialog-container.html b/tests/wpt/tests/css/css-conditional/container-queries/top-layer-dialog-container.html
index 40a611bc918..9920f1957be 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/top-layer-dialog-container.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/top-layer-dialog-container.html
@@ -20,7 +20,7 @@
<dialog id="dialog"><span id="child"></span></dialog>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(child).color, "rgb(255, 0, 0)");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/top-layer-dialog.html b/tests/wpt/tests/css/css-conditional/container-queries/top-layer-dialog.html
index 255b42acff6..6a9a297896a 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/top-layer-dialog.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/top-layer-dialog.html
@@ -22,7 +22,7 @@
<dialog id="dialog"></dialog>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(dialog).color, "rgb(255, 0, 0)");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/top-layer-nested-dialog.html b/tests/wpt/tests/css/css-conditional/container-queries/top-layer-nested-dialog.html
index a988efe02f6..b70ee7c29bd 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/top-layer-nested-dialog.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/top-layer-nested-dialog.html
@@ -21,7 +21,7 @@
</dialog>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
assert_equals(getComputedStyle(outer).color, "rgb(255, 0, 0)");
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/transition-scrollbars.html b/tests/wpt/tests/css/css-conditional/container-queries/transition-scrollbars.html
index 9d3f3a1c6c6..45ef9f7c7a4 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/transition-scrollbars.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/transition-scrollbars.html
@@ -46,7 +46,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
// Whether or not a scrollbar appeared is out of scope for this test.
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/transition-style-change-event-002.html b/tests/wpt/tests/css/css-conditional/container-queries/transition-style-change-event-002.html
index f5b32c6fa0e..64b3521d534 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/transition-style-change-event-002.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/transition-style-change-event-002.html
@@ -35,7 +35,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
test(() => {
outer.offsetTop;
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/transition-style-change-event.html b/tests/wpt/tests/css/css-conditional/container-queries/transition-style-change-event.html
index 8940284f990..1034c554686 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/transition-style-change-event.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/transition-style-change-event.html
@@ -29,7 +29,7 @@
</div>
</div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
const t = async_test("");
const event_handler = t.step_func_done((e) => {
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/unsupported-axis.html b/tests/wpt/tests/css/css-conditional/container-queries/unsupported-axis.html
index 80bbf9776df..02c6f22c3c3 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/unsupported-axis.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/unsupported-axis.html
@@ -5,7 +5,7 @@
<script src="/resources/testharnessreport.js"></script>
<script src="support/cq-testcommon.js"></script>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
</script>
<style>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/viewport-units-dynamic.html b/tests/wpt/tests/css/css-conditional/container-queries/viewport-units-dynamic.html
index 10f65efc0ae..3acef812adf 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/viewport-units-dynamic.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/viewport-units-dynamic.html
@@ -34,7 +34,7 @@
<div id=vh><span>Green</span></div>
"></iframe>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
function waitForLoad(w) {
return new Promise(resolve => w.addEventListener('load', resolve));
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/viewport-units.html b/tests/wpt/tests/css/css-conditional/container-queries/viewport-units.html
index 498a9c7eb2d..9be28fec894 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/viewport-units.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/viewport-units.html
@@ -24,7 +24,7 @@
<div id="vw"><span>Green</span></div>
<div id="vh"><span>Green</span></div>
<script>
- setup(() => assert_implements_container_queries());
+ setup(() => assert_implements_size_container_queries());
const green = "rgb(0, 128, 0)";
diff --git a/tests/wpt/tests/css/css-conditional/js/supports-at-rule.tentative.html b/tests/wpt/tests/css/css-conditional/js/supports-at-rule.tentative.html
new file mode 100644
index 00000000000..84214c385cd
--- /dev/null
+++ b/tests/wpt/tests/css/css-conditional/js/supports-at-rule.tentative.html
@@ -0,0 +1,80 @@
+<!doctype html>
+<title>@supports at-rule</title>
+<link rel="help" href="https://www.w3.org/TR/css-conditional-4/#the-css-namespace">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+ function test_supports(rule, expected, desc) {
+ test(() => {
+ assert_equals(CSS.supports(rule), expected, 'CSS.supports(' + rule + ')');
+ }, desc);
+ }
+
+ // Basic at-rule support.
+ test_supports("at-rule(@supports)", true);
+ test_supports("at-rule( @supports)", true);
+ test_supports("at-rule(@supports )", true);
+ test_supports("at-rule(@media)", true);
+ test_supports("at-rule(@counter-style)", true);
+ test_supports("at-rule(@doesnotexist)", false);
+
+ // With descriptors.
+ test_supports("at-rule(@counter-style; system: fixed)", true);
+ test_supports("at-rule(@counter-style;system: fixed )", true);
+ test_supports("at-rule(@counter-style;system: fixed )", true);
+ test_supports("at-rule(@counter-style; system:)", false, "missing value 1");
+ test_supports("at-rule(@counter-style; system: )", false, "missing value 2");
+ test_supports("at-rule(@counter-style; system: doesnotexist)", false, "invalid value");
+ test_supports("at-rule(@counter-style; system: fixed junk)", false, "junk after value");
+ test_supports("at-rule(@counter-style; system)", false, "missing value 3");
+ test_supports("at-rule(@counter-style! system: fixed)", false, "invalid separator");
+ test_supports("at-rule(@counter-style; suffix: \"abc\")", true, "quoted value is OK");
+ test_supports("at-rule(@counter-style; suffix: \"abc\";)", false, "semicolon after value");
+ test_supports("at-rule(@counter-style; suffix: \"abc\"", true, "implicit end parenthesis");
+ test_supports("at-rule(@counter-style; system: fixed; system: fixed)", false, "multiple descriptors");
+ test_supports("at-rule(@supports; system: fixed)", false, "descriptor invalid in context");
+
+ // Properties are not descriptors.
+ test_supports("at-rule(@supports; color: red)", false);
+ test_supports("at-rule(@media; color: red)", false);
+ test_supports("at-rule(@counter-style; color: red)", false);
+ test_supports("at-rule(@font-fact; color: red)", false);
+ test_supports("at-rule(@property; color: red)", false);
+ test_supports("at-rule(@font-palette-values; color: red)", false);
+ test_supports("at-rule(@view-transition; color: red)", false);
+
+ // More descriptors.
+ test_supports("at-rule(@font-face; font-family: 'Ariana Grande')", true);
+ test_supports("at-rule(@font-face; font-style: italic)", true);
+ test_supports("at-rule(@font-face; font-weight: normal)", true);
+ test_supports("at-rule(@font-face; font-feature-settings: \"kern\" 1)", true);
+ test_supports("at-rule(@font-face; font-display: swap)", true);
+ test_supports("at-rule(@font-face; font-variant: small-caps)", true);
+ test_supports("at-rule(@font-face; src: url(/foo.ttf))", true);
+ test_supports("at-rule(@font-face; unicode-range: U+41-5A)", true);
+ test_supports("at-rule(@font-face; ascent-override: 80%)", true);
+ test_supports("at-rule(@font-face; descent-override: 20%)", true);
+ test_supports("at-rule(@font-face; line-gap-override: normal)", true);
+ test_supports("at-rule(@font-face; size-adjust: 150%)", true);
+ test_supports("at-rule(@property; syntax: \"*\")", true);
+ test_supports("at-rule(@property; syntax: \"<unknown>\")", false);
+ test_supports("at-rule(@property; initial-value: #fff)", true);
+ test_supports("at-rule(@property; inherits: true)", true);
+ test_supports("at-rule(@counter-style; system: extends upper-roman)", true);
+ test_supports("at-rule(@counter-style; negative: '(' ')'", true);
+ test_supports("at-rule(@counter-style; prefix: \"a\")", true);
+ test_supports("at-rule(@counter-style; suffix: \"b\")", true);
+ test_supports("at-rule(@counter-style; range: infinite infinite", true);
+ test_supports("at-rule(@counter-style; pad: 3 '0')", true);
+ test_supports("at-rule(@counter-style; fallback: foo)", true);
+ test_supports("at-rule(@counter-style; symbols: 'X')", true);
+ test_supports("at-rule(@counter-style; additive-symbols: 1 'I', calc(-1) 'X')", true);
+ test_supports("at-rule(@counter-style; speak-as: words)", true);
+ test_supports("at-rule(@font-palette-values; font-family: 'Fontfontfont')", true);
+ test_supports("at-rule(@font-palette-values; base-palette: 7)", true);
+ test_supports("at-rule(@font-palette-values; override-colors: 3 blue, 1 brown)", true);
+ test_supports("at-rule(@view-transition; navigation: auto)", true);
+ test_supports("at-rule(@view-transition; types: check)", true);
+
+ // TODO: Should we include e.g. @page; page-orientation?
+</script>
diff --git a/tests/wpt/tests/css/css-grid/layout-algorithm/grid-fit-content-percentage.html b/tests/wpt/tests/css/css-grid/layout-algorithm/grid-fit-content-percentage.html
index 892dbe40b46..22683fef14f 100644
--- a/tests/wpt/tests/css/css-grid/layout-algorithm/grid-fit-content-percentage.html
+++ b/tests/wpt/tests/css/css-grid/layout-algorithm/grid-fit-content-percentage.html
@@ -36,30 +36,34 @@ function clamp(value, min, max) {
}
const minContent = 50;
const maxContent = 100;
-for (const use_calc of [false, true]) {
- for (const percentage of [0, 50, 75, 100, 150]) {
- const value = use_calc ? `fit-content(calc(0px + ${percentage}%))`
- : `fit-content(${percentage}%)`;
- const container = document.createElement("div");
- container.className = "container";
- document.body.appendChild(container);
- const grid = document.createElement("div");
- grid.className = "grid";
- grid.style.gridTemplateColumns = value;
- container.appendChild(grid);
- const item = document.createElement("div");
- item.className = "item";
- grid.appendChild(item);
- test(function() {
- const colSize = clamp(percentage * maxContent / 100, minContent, maxContent);
- const height = colSize < maxContent ? maxContent : minContent;
- assert_equals(item.offsetWidth, colSize, "Grid item width");
- assert_equals(item.offsetHeight, height, "Grid item height");
- assert_equals(grid.offsetWidth, maxContent, "Grid container width");
- assert_equals(grid.offsetHeight, height, "Grid container height");
- assert_equals(getComputedStyle(grid).gridTemplateColumns, colSize + "px",
- "Grid column size");
- }, value);
+for (const use_min_width of [false, true]) {
+ for (const use_calc of [false, true]) {
+ for (const percentage of [0, 50, 75, 100, 150]) {
+ const value = use_calc ? `fit-content(calc(0px + ${percentage}%))`
+ : `fit-content(${percentage}%)`;
+ const container = document.createElement("div");
+ container.className = "container";
+ document.body.appendChild(container);
+ const grid = document.createElement("div");
+ grid.className = "grid";
+ grid.style.gridTemplateColumns = value;
+ container.appendChild(grid);
+ const item = document.createElement("div");
+ item.className = "item";
+ item.style.minWidth = use_min_width ? "auto" : "0px";
+ grid.appendChild(item);
+ test(function() {
+ const minWidth = use_min_width ? minContent : 0;
+ const colSize = clamp(percentage * maxContent / 100, minWidth, maxContent);
+ const height = colSize < maxContent ? maxContent : minContent;
+ assert_equals(item.offsetWidth, colSize, "Grid item width");
+ assert_equals(item.offsetHeight, height, "Grid item height");
+ assert_equals(grid.offsetWidth, maxContent, "Grid container width");
+ assert_equals(grid.offsetHeight, height, "Grid container height");
+ assert_equals(getComputedStyle(grid).gridTemplateColumns, colSize + "px",
+ "Grid column size");
+ }, value + "; min-width: " + item.style.minWidth);
+ }
}
}
</script>
diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/border-padding-001.html b/tests/wpt/tests/css/css-inline/text-box-trim/border-padding-001.html
new file mode 100644
index 00000000000..9c25c42a1de
--- /dev/null
+++ b/tests/wpt/tests/css/css-inline/text-box-trim/border-padding-001.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<title>Border/padding on the trim-establishing container itself isn't considered to be "intervening"</title>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-inline-3/#text-box-trim">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="position:absolute; margin-top:30px; width:100px; height:40px; background:green;"></div>
+<div style="text-box-trim:trim-both; border:10px solid green; width:80px; font:20px/60px Ahem; color:green; background:red;">
+ xxxx<br>
+ xxxx<br>
+</div>
diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/border-padding-002.html b/tests/wpt/tests/css/css-inline/text-box-trim/border-padding-002.html
new file mode 100644
index 00000000000..59a071771ae
--- /dev/null
+++ b/tests/wpt/tests/css/css-inline/text-box-trim/border-padding-002.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<title>Border/padding on the trim-establishing container itself isn't considered to be "intervening"</title>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-inline-3/#text-box-trim">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="position:absolute; margin-top:30px; width:100px; height:40px; background:green;"></div>
+<div style="text-box-trim:trim-both; width:100px; font:20px/60px Ahem; color:green; background:red;">
+ <div style="text-box-trim:trim-both; border:10px solid green;">
+ xxxx<br>
+ xxxx<br>
+ </div>
+</div>
diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/border-padding-003.html b/tests/wpt/tests/css/css-inline/text-box-trim/border-padding-003.html
new file mode 100644
index 00000000000..a114612906d
--- /dev/null
+++ b/tests/wpt/tests/css/css-inline/text-box-trim/border-padding-003.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<title>Border/padding on the trim-establishing container itself isn't considered to be "intervening"</title>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-inline-3/#text-box-trim">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="position:absolute; margin-top:35px; width:100px; height:20px; background:green;"></div>
+<div style="position:absolute; margin-top:75px; width:100px; height:10px; background:green;"></div>
+<div style="text-box-trim:trim-both; width:100px; font:20px/40px Ahem; color:green; background:red;">
+ <div style="text-box-trim:trim-start; border:10px solid green; border-block-width:15px;">
+ xxxx<br>
+ xxxx<br>
+ </div>
+</div>
diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/border-padding-004.html b/tests/wpt/tests/css/css-inline/text-box-trim/border-padding-004.html
new file mode 100644
index 00000000000..dc9513b54df
--- /dev/null
+++ b/tests/wpt/tests/css/css-inline/text-box-trim/border-padding-004.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<title>Border/padding on the trim-establishing container itself isn't considered to be "intervening"</title>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-inline-3/#text-box-trim">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="position:absolute; margin-top:15px; width:100px; height:10px; background:green;"></div>
+<div style="position:absolute; margin-top:45px; width:100px; height:20px; background:green;"></div>
+<div style="text-box-trim:trim-both; width:100px; font:20px/40px Ahem; color:green; background:red;">
+ <div style="text-box-trim:trim-end; border:10px solid green; border-block-width:15px;">
+ xxxx<br>
+ xxxx<br>
+ </div>
+</div>
diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/out-of-flow-001.html b/tests/wpt/tests/css/css-inline/text-box-trim/out-of-flow-001.html
new file mode 100644
index 00000000000..b81eb775d64
--- /dev/null
+++ b/tests/wpt/tests/css/css-inline/text-box-trim/out-of-flow-001.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-inline-3/#text-box-trim">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="position:absolute; width:100px; text-box-trim:trim-both; font:20px/80px Ahem; color:green; background:red;">
+ xxxxx<br>
+ xxxxx<br>
+</div>
+<div style="position:absolute; margin-top:20px; width:100px; height:60px; background:green;"></div>
diff --git a/tests/wpt/tests/css/css-inline/text-box-trim/out-of-flow-002.html b/tests/wpt/tests/css/css-inline/text-box-trim/out-of-flow-002.html
new file mode 100644
index 00000000000..6bcd38cd686
--- /dev/null
+++ b/tests/wpt/tests/css/css-inline/text-box-trim/out-of-flow-002.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-inline-3/#text-box-trim">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="position:absolute; width:100px; text-box-trim:trim-both; font:20px/80px Ahem; color:green; background:red;">
+ <div style="float:left; width:20px; height:20px; margin-top:30px; background:green;"></div>
+ xxxx<br>
+ xxxx<br>
+ <div style="float:right; width:20px; height:20px; margin-top:-20px; background:green;"></div>
+</div>
+<div style="position:absolute; margin-top:20px; width:100px; height:60px; background:green;"></div>
diff --git a/tests/wpt/tests/css/css-lists/container-list-items-crash.html b/tests/wpt/tests/css/css-lists/container-list-items-crash.html
new file mode 100644
index 00000000000..dcb4273accc
--- /dev/null
+++ b/tests/wpt/tests/css/css-lists/container-list-items-crash.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<link rel="help" href="http://crbug.com/374683348">
+<style>
+ #container {
+ container-type: inline-size;
+ width: 500px;
+ position: absolute;
+ }
+</style>
+<ol>
+ <div id="container">
+ <li id="item"></li>
+ </div>
+ <li></li>
+</ol>
+<script>
+ container.offsetTop;
+ item.style = "counter-reset: list-item 1";
+ container.style.width = "300px";
+ container.offsetTop;
+</script>
diff --git a/tests/wpt/tests/css/css-lists/style-containment-counter-crash.html b/tests/wpt/tests/css/css-lists/style-containment-counter-crash.html
new file mode 100644
index 00000000000..c9d642bd383
--- /dev/null
+++ b/tests/wpt/tests/css/css-lists/style-containment-counter-crash.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<link rel="help" href="http://crbug.com/374064162">
+<style>
+ #test::before {
+ content: counters(counter0, '');
+ }
+</style>
+<div style="contain:style;">
+ <div style="counter-set:counter0;"></div>
+</div>
+<div id="test" style="contain:style;"></div>
+
diff --git a/tests/wpt/tests/css/css-logical/WEB_FEATURES.yml b/tests/wpt/tests/css/css-logical/WEB_FEATURES.yml
new file mode 100644
index 00000000000..76b76d0572b
--- /dev/null
+++ b/tests/wpt/tests/css/css-logical/WEB_FEATURES.yml
@@ -0,0 +1,3 @@
+features:
+- name: logical-properties
+ files: "**"
diff --git a/tests/wpt/tests/css/css-nesting/top-level-parent-pseudo-specificity.html b/tests/wpt/tests/css/css-nesting/top-level-parent-pseudo-specificity.html
new file mode 100644
index 00000000000..40ac2459831
--- /dev/null
+++ b/tests/wpt/tests/css/css-nesting/top-level-parent-pseudo-specificity.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<title>CSS Nesting: Specificity of top-level '&'</title>
+<link rel="help" href="https://drafts.csswg.org/css-nesting-1">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/10196">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ /* Note: at the top level, '&' matches like ':root'. */
+
+ /* Should have zero specificity: */
+ & { color: red; }
+ /* Should also have zero specificity: */
+ :where(&) { color: green; }
+</style>
+<script>
+ test(() => {
+ assert_equals(getComputedStyle(document.documentElement).color, 'rgb(0, 128, 0)');
+ });
+</script>
diff --git a/tests/wpt/tests/css/css-properties-values-api/WEB_FEATURES.yml b/tests/wpt/tests/css/css-properties-values-api/WEB_FEATURES.yml
new file mode 100644
index 00000000000..25d7b8fde4d
--- /dev/null
+++ b/tests/wpt/tests/css/css-properties-values-api/WEB_FEATURES.yml
@@ -0,0 +1,3 @@
+features:
+- name: registered-custom-properties
+ files: "**"
diff --git a/tests/wpt/tests/css/css-pseudo/parsing/the-select-arrow-pseudo-element.tentative.html b/tests/wpt/tests/css/css-pseudo/parsing/the-select-arrow-pseudo-element.tentative.html
new file mode 100644
index 00000000000..b71bfe23634
--- /dev/null
+++ b/tests/wpt/tests/css/css-pseudo/parsing/the-select-arrow-pseudo-element.tentative.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS ::select-arrow Pseudo-Element Test</title>
+<link rel="help" href="https://github.com/w3c/csswg-drafts/pull/10986">
+<meta name="assert" content="This test checks the validity of the ::select-arrow pseudo element selector." />
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+<script>
+test_valid_selector("::select-arrow");
+test_valid_selector("*::select-arrow", "::select-arrow");
+test_valid_selector("foo.bar[baz]::select-arrow");
+test_invalid_selector("::select-arrow *");
+
+// Combinations
+test_invalid_selector("::select-arrow::select-arrow");
+
+test_invalid_selector("::before::select-arrow");
+test_invalid_selector("::after::select-arrow");
+test_invalid_selector("::marker::select-arrow");
+test_invalid_selector("::placeholder::select-arrow");
+
+test_invalid_selector("::select-arrow::before");
+test_invalid_selector("::select-arrow::after");
+test_valid_selector("::select-arrow::marker");
+test_invalid_selector("::select-arrow::placeholder");
+
+test_invalid_selector("::slotted(*)::select-arrow::slotted(*)");
+test_valid_selector("::slotted(*)::select-arrow");
+
+test_valid_selector("::part(foo)::select-arrow");
+</script>
diff --git a/tests/wpt/tests/css/css-scoping/shadow-reassign-dynamic-005-crash.html b/tests/wpt/tests/css/css-scoping/shadow-reassign-dynamic-005-crash.html
new file mode 100644
index 00000000000..9e4f002cfec
--- /dev/null
+++ b/tests/wpt/tests/css/css-scoping/shadow-reassign-dynamic-005-crash.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<div id="host">
+ <template shadowrootmode="open">
+ <slot></slot>
+ <slot></slot>
+ </template>
+ <div id="child1">Child1</div>
+ <div id="child2" slot="named-slot">Child2</div>
+</div>
+<script>
+ host.getBoundingClientRect();
+ host.shadowRoot.querySelectorAll("slot")[1].name = "named-slot";
+ host.style.display = "flex";
+ host.getBoundingClientRect();
+</script>
diff --git a/tests/wpt/tests/css/css-scoping/shadow-reassign-dynamic-006-ref.html b/tests/wpt/tests/css/css-scoping/shadow-reassign-dynamic-006-ref.html
new file mode 100644
index 00000000000..60a6282457f
--- /dev/null
+++ b/tests/wpt/tests/css/css-scoping/shadow-reassign-dynamic-006-ref.html
@@ -0,0 +1,6 @@
+<!doctype html>
+<title>CSS Test Reference</title>
+<div id="host">
+ <div>Child1</div>
+ <div>Child2</div>
+</div>
diff --git a/tests/wpt/tests/css/css-scoping/shadow-reassign-dynamic-006.html b/tests/wpt/tests/css/css-scoping/shadow-reassign-dynamic-006.html
new file mode 100644
index 00000000000..ace701eea93
--- /dev/null
+++ b/tests/wpt/tests/css/css-scoping/shadow-reassign-dynamic-006.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Scoping: Dynamic reassignment of a named slot child.</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="help" href="https://drafts.csswg.org/css-scoping/#selectors-data-model">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1927714">
+<link rel="match" href="shadow-reassign-dynamic-006-ref.html">
+<div id="host">
+ <template shadowrootmode="open">
+ <slot></slot>
+ <slot></slot>
+ </template>
+ <div id="child1">Child1</div>
+ <div id="child2" slot="named-slot">Child2</div>
+</div>
+<script>
+ host.getBoundingClientRect();
+ host.shadowRoot.querySelectorAll("slot")[1].name = "named-slot";
+ host.getBoundingClientRect();
+</script>
diff --git a/tests/wpt/tests/css/css-scroll-snap/unrelated-gesture-scroll-during-snap.html b/tests/wpt/tests/css/css-scroll-snap/unrelated-gesture-scroll-during-snap.html
new file mode 100644
index 00000000000..0390bdad257
--- /dev/null
+++ b/tests/wpt/tests/css/css-scroll-snap/unrelated-gesture-scroll-during-snap.html
@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1" />
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/resources/testdriver.js"></script>
+ <script src="/resources/testdriver-actions.js"></script>
+ <script src="/resources/testdriver-vendor.js"></script>
+ <script src="/dom/events/scrolling/scroll_support.js"></script>
+ <script src="support/common.js"></script>
+ </head>
+ <body>
+ <style>
+ .scroller {
+ border: solid 1px black;
+ overflow-y: scroll;
+ height: 200px;
+ width: 200px;
+ display: inline-block;
+ background-color: yellow;
+ position: relative;
+ }
+ .snapcontainer {
+ scroll-snap-type: y mandatory;
+ }
+ .snaparea {
+ scroll-snap-align: start;
+ margin-bottom: 120%;
+ height: 40px;
+ width: 50px;
+ background-color: green;
+ }
+ .space {
+ height: 500vh;
+ width: 500vw;
+ position: absolute;
+ }
+ </style>
+ <div>
+ <div id="plaincontainer" class="scroller">
+ <div class="snaparea"></div>
+ <div class="snaparea"></div>
+ <div class="snaparea"></div>
+ <div class="snaparea"></div>
+ <div class="snaparea"></div>
+ </div>
+ <div id="snapcontainer1" class="scroller snapcontainer">
+ <div class="snaparea"></div>
+ <div class="snaparea"></div>
+ <div class="snaparea"></div>
+ <div class="snaparea"></div>
+ <div class="snaparea"></div>
+ </div>
+ <div id="snapcontainer2" class="scroller snapcontainer">
+ <div class="snaparea"></div>
+ <div class="snaparea"></div>
+ <div class="snaparea"></div>
+ <div class="snaparea"></div>
+ <div class="snaparea"></div>
+ </div>
+ </div>
+ <script>
+ const plaincontainer = document.getElementById("plaincontainer");
+ const snapcontainer1 = document.getElementById("snapcontainer1");
+ const snapcontainer2 = document.getElementById("snapcontainer2");
+
+ async function test_unrelated_gesture_during_snap(t,
+ snapcontainer,
+ other_container,
+ inputs,
+ expectations) {
+ await waitForScrollReset(t, snapcontainer);
+ await waitForScrollReset(t, other_container);
+ await waitForCompositorCommit();
+
+ assert_equals(snapcontainer.scrollTop, 0, "snapcontainer is reset.");
+ assert_equals(other_container.scrollTop, 0, `${other_container.id} is ` +
+ `reset.`);
+ const scrollend_promises = [
+ waitForScrollendEventNoTimeout(snapcontainer),
+ waitForScrollendEventNoTimeout(other_container)
+ ];
+ let last_scroll_top = snapcontainer.scrollTop;
+ async function scroll_listener() {
+ // If we are scrolling back to 0, we are snapping.
+ if (snapcontainer.scrollTop < last_scroll_top) {
+ snapcontainer.removeEventListener("scroll", scroll_listener);
+ await new test_driver.Actions().scroll(0, 0, 0, inputs.scroll_amt,
+ { origin: other_container }).send();
+ }
+ last_scroll_top = snapcontainer.scrollTop;
+ }
+ snapcontainer.addEventListener("scroll", scroll_listener);
+
+ // The snap areas are separated by margin-bottom: 120%. Scrolling to
+ // almost halfway should snap back to 0.
+ const snap_scroll_amt = snapcontainer.clientHeight / 2;
+ await new test_driver.Actions().scroll(0, 0, 0, snap_scroll_amt,
+ { origin: snapcontainer })
+ .send();
+
+ await Promise.all(scrollend_promises);
+ assert_equals(snapcontainer.scrollTop, 0,
+ "snapcontainer snaps back to 0");
+ assert_equals(other_container.scrollTop, expectations.expectedScrollTop,
+ `${other_container.id} is at expected scroll offset.`);
+ }
+
+ promise_test(async (t) => {
+ await test_unrelated_gesture_during_snap(t, snapcontainer1,
+ plaincontainer,
+ { scroll_amt: 100 },
+ { expectedScrollTop: 100 });
+ }, "gesture on separate scroll container works while another container "+
+ "snaps");
+
+ promise_test(async (t) => {
+ // scrolling the full clientHeight of snapcontainer2 should result in
+ // snapping to its second snap area.
+ const scroll_amt = snapcontainer2.clientHeight;
+ const expectedScrollTop = snapcontainer2.querySelectorAll(".snaparea")[1].offsetTop;
+ await test_unrelated_gesture_during_snap(t, snapcontainer1,
+ snapcontainer2,
+ { scroll_amt: scroll_amt },
+ { expectedScrollTop: expectedScrollTop});
+ }, "gesture on separate snap container works while another container "+
+ "snaps");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/tests/css/css-sizing/replaced-fractional-height-from-aspect-ratio.html b/tests/wpt/tests/css/css-sizing/replaced-fractional-height-from-aspect-ratio.html
index d97c3f133eb..0aece7f95ac 100644
--- a/tests/wpt/tests/css/css-sizing/replaced-fractional-height-from-aspect-ratio.html
+++ b/tests/wpt/tests/css/css-sizing/replaced-fractional-height-from-aspect-ratio.html
@@ -1,7 +1,9 @@
<!DOCTYPE html>
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1052370" >
<meta name="assert" content="When determining the size of a replaced element, if it has an aspect ratio of 1/1 then the final height should be exactly equal to its width." />
-<script src="../../resources/check-layout.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
<style>
canvas {
float: left;
diff --git a/tests/wpt/tests/css/css-sizing/stretch/auto-margins-1.html b/tests/wpt/tests/css/css-sizing/stretch/auto-margins-1.html
new file mode 100644
index 00000000000..658c3e30d71
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/stretch/auto-margins-1.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<link rel="help"
+ href="https://drafts.csswg.org/css-sizing-4/#stretch-fit-sizing">
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src="/resources/check-layout-th.js"></script>
+<meta name="assert"
+ content="auto margins are treated as 0 in basic horizontal centering cases">
+
+<body onload="checkLayout('[data-expected-width]')">
+
+ <div style="width: 100px; position: relative; border: solid">
+ <div style="margin: 0 auto; width: stretch; background: lime;"
+ data-expected-width="100" data-offset-x="0">lorem</div>
+ </div>
+
+ <div style="width: 100px; position: relative; border: solid">
+ <div
+ style="margin: 0 auto; min-width: stretch; width: 25px; background: lime;"
+ data-expected-width="100" data-offset-x="0">lorem</div>
+ </div>
diff --git a/tests/wpt/tests/css/css-sizing/stretch/auto-margins-2.html b/tests/wpt/tests/css/css-sizing/stretch/auto-margins-2.html
new file mode 100644
index 00000000000..fcd2f12dfae
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/stretch/auto-margins-2.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<link rel="help"
+ href="https://drafts.csswg.org/css-sizing-4/#stretch-fit-sizing">
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src="/resources/check-layout-th.js"></script>
+<meta name="assert"
+ content="auto margins are treated as 0 in stretched abspos boxes">
+
+<style>
+ .outer {
+ width: 200px;
+ height: 200px;
+ position: relative;
+ border: solid;
+ }
+
+ .outer>div {
+ position: absolute;
+ margin: auto;
+ background: lime;
+ }
+</style>
+
+<body onload="checkLayout('.outer>div')">
+
+ <div class="outer">
+ <div style="inset: 0; width: stretch; height: 100px;"
+ data-expected-width="200" data-offset-x="0"></div>
+ </div>
+
+ <div class="outer">
+ <div style="inset: 0; max-width: stretch; height: 100px;"
+ data-expected-width="200" data-offset-x="0"></div>
+ </div>
+
+ <div class="outer">
+ <div style="inset: 0; height: stretch; width: 100px;"
+ data-expected-height="200" data-offset-y="0"></div>
+ </div>
+
+ <div class="outer">
+ <div style="inset: 0; max-height: stretch; width: 100px;"
+ data-expected-height="200" data-offset-y="0"></div>
+ </div>
+
+ <div class="outer">
+ <div style="top: 0; bottom: 0; left: 25px; right: 25px; width: stretch;"
+ data-expected-width="150" data-offset-x="25"></div>
+ </div>
+
+ <div class="outer">
+ <div
+ style="top: 25px; bottom: 25px; left: 0px; right: 0px; height: stretch;"
+ data-expected-height="150" data-offset-y="25"></div>
+ </div>
diff --git a/tests/wpt/tests/css/css-sizing/stretch/indefinite-1.html b/tests/wpt/tests/css/css-sizing/stretch/indefinite-1.html
new file mode 100644
index 00000000000..e69689c939f
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/stretch/indefinite-1.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<link rel="help"
+ href="https://drafts.csswg.org/css-sizing-4/#stretch-fit-sizing">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/11006">
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src="/resources/check-layout-th.js"></script>
+<meta name="assert"
+ content="with indefinite available space, a preferred size property value of stretch behaves as auto">
+
+<body
+ onload="checkLayout('[data-expected-client-height]')">
+
+ <div style="block-size: stretch; inline-size: 100px; border: solid"
+ data-expected-client-height="0"></div>
+
+ <div style="block-size: stretch; inline-size: 100px; border: solid"
+ data-expected-client-height="20">
+ <div style="height: 20px;"></div>
+ </div>
diff --git a/tests/wpt/tests/css/css-sizing/stretch/indefinite-2.html b/tests/wpt/tests/css/css-sizing/stretch/indefinite-2.html
new file mode 100644
index 00000000000..e8df12ccaa3
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/stretch/indefinite-2.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="help"
+ href="https://drafts.csswg.org/css-sizing-4/#stretch-fit-sizing">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/11006">
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src="/resources/check-layout-th.js"></script>
+<meta name="assert"
+ content="with indefinite available space, min-height:stretch resolves to 0">
+
+<body
+ onload="checkLayout('[data-expected-client-height]')">
+
+ <div style="min-height: stretch; height: 0; width: 200px; border: solid"
+ data-expected-client-height="0">lorem ipsum</div>
diff --git a/tests/wpt/tests/css/css-sizing/stretch/indefinite-3.html b/tests/wpt/tests/css/css-sizing/stretch/indefinite-3.html
new file mode 100644
index 00000000000..67fbd50d4f7
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/stretch/indefinite-3.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<link rel="help"
+ href="https://drafts.csswg.org/css-sizing-4/#stretch-fit-sizing">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/11006">
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src="/resources/check-layout-th.js"></script>
+<meta name="assert"
+ content="with indefinite available space, max-height: stretch resolves to infinity">
+
+<body
+ onload="checkLayout('[data-expected-client-height]')">
+
+ <div style="max-height: stretch; height: 4000px; width: 200px; border: solid;"
+ data-expected-client-height="4000">
+ lorem ipsum</div>
diff --git a/tests/wpt/tests/css/css-sizing/stretch/indefinite-4.html b/tests/wpt/tests/css/css-sizing/stretch/indefinite-4.html
new file mode 100644
index 00000000000..e08af30f6e4
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/stretch/indefinite-4.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<link rel="help"
+ href="https://drafts.csswg.org/css-sizing-4/#stretch-fit-sizing">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/11006">
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src="/resources/check-layout-th.js"></script>
+<meta name="assert"
+ content="with indefinite available space, flex-item's min-height:stretch in the main axis resolves as 0, and does not invoke automatic minimum sizing">
+
+<body
+ onload="checkLayout('[data-expected-client-height]')">
+
+ <p>If indefinite <code>min-height: stretch</code> behaves as automatic size
+ then black border will encompass lorem ipsum due to flex automatic minimum
+ sizing.</p>
+
+ <p>If indefinite <code>min-height: stretch</code> behaves as 0px
+ then black border will not encompass lorem ipsum.</p>
+
+ <div
+ style="display: flex; flex-direction: column; border: solid cyan; min-height: 100px; width: 200px;">
+ <div style="min-height: stretch; flex-basis: 0; border: solid"
+ data-expected-client-height="0">lorem ipsum
+ </div>
+ </div>
diff --git a/tests/wpt/tests/css/css-text-decor/text-shadow/text-shadow-emoji-transparent-ref.html b/tests/wpt/tests/css/css-text-decor/text-shadow/text-shadow-emoji-transparent-ref.html
new file mode 100644
index 00000000000..cb4d0f57b08
--- /dev/null
+++ b/tests/wpt/tests/css/css-text-decor/text-shadow/text-shadow-emoji-transparent-ref.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<head>
+<meta charset="utf-8">
+<link rel="author" title="Vitor Roriz" href="https://github.com/vitorroriz">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#text-shadow-property">
+<style>
+.test {
+ font-size: 100px;
+ text-shadow: 300px 300px 0 green;
+}
+.hide-text {
+ background-color: white;
+ position: absolute;
+ width: 300px;
+ height: 200px;
+ z-index: 1;
+ left: 0;
+}
+</style>
+</head>
+<body>
+ <span class="test">A&#x1F44D;B</span>
+ <span class="hide-text"></span>
+</body>
diff --git a/tests/wpt/tests/css/css-text-decor/text-shadow/text-shadow-emoji-transparent.html b/tests/wpt/tests/css/css-text-decor/text-shadow/text-shadow-emoji-transparent.html
new file mode 100644
index 00000000000..8ea04ab5933
--- /dev/null
+++ b/tests/wpt/tests/css/css-text-decor/text-shadow/text-shadow-emoji-transparent.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<head>
+<meta charset="utf-8">
+<link rel="author" title="Vitor Roriz" href="https://github.com/vitorroriz">
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#text-shadow-property">
+<link rel="match" href="text-shadow-emoji-transparent-ref.html">
+<style>
+.test {
+ font-size: 100px;
+ text-shadow: 300px 300px 0 green;
+ color: transparent
+}
+</style>
+</head>
+<body>
+ <span class="test">A&#x1F44D;B</span>
+</body>
diff --git a/tests/wpt/tests/css/css-text/line-breaking/segment-break-transformation-ignorable-1-ref.html b/tests/wpt/tests/css/css-text/line-breaking/segment-break-transformation-ignorable-1-ref.html
new file mode 100644
index 00000000000..bd348fa5099
--- /dev/null
+++ b/tests/wpt/tests/css/css-text/line-breaking/segment-break-transformation-ignorable-1-ref.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Reftest Reference: Segment Break Transformation Rules</title>
+<div>Pass if the two lines match, with no spaces between the characters:</div>
+<div lang="zh" style="font: 24px serif">
+<p>
+ &#x793E;&#xFE00;&#x798F;&#xFE00;&#x845B;&#xE0100;&#x79B0;&#xE0100;葛葛葛葛
+</p>
+<p>
+ &#x793E;&#xFE00;&#x798F;&#xFE00;&#x845B;&#xE0100;&#x79B0;&#xE0100;葛葛葛葛
+</p>
+</div>
diff --git a/tests/wpt/tests/css/css-text/line-breaking/segment-break-transformation-ignorable-1.html b/tests/wpt/tests/css/css-text/line-breaking/segment-break-transformation-ignorable-1.html
new file mode 100644
index 00000000000..a62d4b396a8
--- /dev/null
+++ b/tests/wpt/tests/css/css-text/line-breaking/segment-break-transformation-ignorable-1.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Reftest Test: Segment Break Transformation Rules</title>
+<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#line-break-transform">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1927458">
+<meta name="assert" content="default-ignorable characters should not interfere with segment break transformation">
+<link rel="match" href="segment-break-transformation-ignorable-1-ref.html">
+<div>Pass if the two lines match, with no spaces between the characters:</div>
+<div lang="zh" style="font: 24px serif">
+<p>
+ &#x793E;&#xFE00;
+ &#x798F;&#xFE00;
+ &#x845B;&#xE0100;
+ &#x79B0;&#xE0100;
+ 葛&shy;
+ 葛&#x200E;
+ 葛
+ &#x200E;葛
+</p>
+<p>
+ &#x793E;&#xFE00;&#x798F;&#xFE00;&#x845B;&#xE0100;&#x79B0;&#xE0100;葛葛葛葛
+</p>
+</div>
diff --git a/tests/wpt/tests/css/css-transitions/properties-value-001.html b/tests/wpt/tests/css/css-transitions/properties-value-001.html
index 54e84be2b09..314ae42a5b0 100644
--- a/tests/wpt/tests/css/css-transitions/properties-value-001.html
+++ b/tests/wpt/tests/css/css-transitions/properties-value-001.html
@@ -89,6 +89,8 @@
teardown: generalParallelTest.teardown,
// invoked prior to running a slice of tests
sliceStart: generalParallelTest.sliceStart,
+ // invoked after transitions have started
+ transitionsStarted: generalParallelTest.transitionsStarted,
// invoked after running a slice of tests
sliceDone: generalParallelTest.sliceDone,
// test cases, make them as granular as possible
diff --git a/tests/wpt/tests/css/css-transitions/properties-value-002.html b/tests/wpt/tests/css/css-transitions/properties-value-002.html
index ed85b007d2c..14c8f907dfb 100644
--- a/tests/wpt/tests/css/css-transitions/properties-value-002.html
+++ b/tests/wpt/tests/css/css-transitions/properties-value-002.html
@@ -91,6 +91,8 @@
teardown: generalParallelTest.teardown,
// invoked prior to running a slice of tests
sliceStart: generalParallelTest.sliceStart,
+ // invoked after transitions have started
+ transitionsStarted: generalParallelTest.transitionsStarted,
// invoked after running a slice of tests
sliceDone: generalParallelTest.sliceDone,
// test cases, make them as granular as possible
diff --git a/tests/wpt/tests/css/css-transitions/properties-value-003.html b/tests/wpt/tests/css/css-transitions/properties-value-003.html
index faf0258a60b..d90aea54c31 100644
--- a/tests/wpt/tests/css/css-transitions/properties-value-003.html
+++ b/tests/wpt/tests/css/css-transitions/properties-value-003.html
@@ -93,6 +93,8 @@
teardown: generalParallelTest.teardown,
// invoked prior to running a slice of tests
sliceStart: generalParallelTest.sliceStart,
+ // invoked after transitions have started
+ transitionsStarted: generalParallelTest.transitionsStarted,
// invoked after running a slice of tests
sliceDone: generalParallelTest.sliceDone,
// test cases, make them as granular as possible
diff --git a/tests/wpt/tests/css/css-transitions/properties-value-implicit-001.html b/tests/wpt/tests/css/css-transitions/properties-value-implicit-001.html
index 8500436c529..d49505ef126 100644
--- a/tests/wpt/tests/css/css-transitions/properties-value-implicit-001.html
+++ b/tests/wpt/tests/css/css-transitions/properties-value-implicit-001.html
@@ -98,6 +98,8 @@
teardown: generalParallelTest.teardown,
// invoked prior to running a slice of tests
sliceStart: generalParallelTest.sliceStart,
+ // invoked after transitions have started.
+ transitionsStarted: generalParallelTest.transitionsStarted,
// invoked after running a slice of tests
sliceDone: generalParallelTest.sliceDone,
// test cases, make them as granular as possible
diff --git a/tests/wpt/tests/css/css-transitions/properties-value-inherit-001.html b/tests/wpt/tests/css/css-transitions/properties-value-inherit-001.html
index abbdecdfae9..8088ddfad1a 100644
--- a/tests/wpt/tests/css/css-transitions/properties-value-inherit-001.html
+++ b/tests/wpt/tests/css/css-transitions/properties-value-inherit-001.html
@@ -99,6 +99,8 @@
teardown: generalParallelTest.teardown,
// invoked prior to running a slice of tests
sliceStart: generalParallelTest.sliceStart,
+ // invoked after transitions have started
+ transitionsStarted: generalParallelTest.transitionsStarted,
// invoked after running a slice of tests
sliceDone: generalParallelTest.sliceDone,
// test cases, make them as granular as possible
diff --git a/tests/wpt/tests/css/css-transitions/properties-value-inherit-002.html b/tests/wpt/tests/css/css-transitions/properties-value-inherit-002.html
index 9556cf7e23a..01990561438 100644
--- a/tests/wpt/tests/css/css-transitions/properties-value-inherit-002.html
+++ b/tests/wpt/tests/css/css-transitions/properties-value-inherit-002.html
@@ -100,6 +100,8 @@
teardown: generalParallelTest.teardown,
// invoked prior to running a slice of tests
sliceStart: generalParallelTest.sliceStart,
+ // invoked after transitions have started
+ transitionsStarted: generalParallelTest.transitionsStarted,
// invoked after running a slice of tests
sliceDone: generalParallelTest.sliceDone,
// test cases, make them as granular as possible
diff --git a/tests/wpt/tests/css/css-transitions/properties-value-inherit-003.html b/tests/wpt/tests/css/css-transitions/properties-value-inherit-003.html
index 13a16132134..60f498c53f6 100644
--- a/tests/wpt/tests/css/css-transitions/properties-value-inherit-003.html
+++ b/tests/wpt/tests/css/css-transitions/properties-value-inherit-003.html
@@ -99,6 +99,8 @@
teardown: generalParallelTest.teardown,
// invoked prior to running a slice of tests
sliceStart: generalParallelTest.sliceStart,
+ // invoked after transitions have started
+ transitionsStarted: generalParallelTest.transitionsStarted,
// invoked after running a slice of tests
sliceDone: generalParallelTest.sliceDone,
// test cases, make them as granular as possible
@@ -128,7 +130,7 @@
// test TransitionEnd events
'events': {
done: function(test, data, options) {
- // make sure there were no events on parent
+ // font-size explicitly transitioned on the parent.
test.step(generalParallelTest.assertExpectedEventsFunc(data, 'container', "font-size:" + duration));
// make sure we got the event for the tested property only
test.step(generalParallelTest.assertExpectedEventsFunc(data, 'transition', ""));
diff --git a/tests/wpt/tests/css/css-transitions/pseudo-elements-001.html b/tests/wpt/tests/css/css-transitions/pseudo-elements-001.html
index 146c533e235..5fb8fb6c070 100644
--- a/tests/wpt/tests/css/css-transitions/pseudo-elements-001.html
+++ b/tests/wpt/tests/css/css-transitions/pseudo-elements-001.html
@@ -113,6 +113,8 @@
teardown: generalParallelTest.teardown,
// invoked prior to running a slice of tests
sliceStart: generalParallelTest.sliceStart,
+ // Invoked after transitions have started.
+ transitionsStarted: generalParallelTest.transitionsStarted,
// invoked after running a slice of tests
sliceDone: generalParallelTest.sliceDone,
// test cases, make them as granular as possible
diff --git a/tests/wpt/tests/css/css-transitions/support/generalParallelTest.js b/tests/wpt/tests/css/css-transitions/support/generalParallelTest.js
index f6e14128fc0..f8ad77ecde5 100644
--- a/tests/wpt/tests/css/css-transitions/support/generalParallelTest.js
+++ b/tests/wpt/tests/css/css-transitions/support/generalParallelTest.js
@@ -1,6 +1,6 @@
(function(root) {
'use strict';
-//
+
var index = 0;
var suite = root.generalParallelTest = {
// prepare individual test
@@ -71,6 +71,8 @@ var suite = root.generalParallelTest = {
sliceStart: function(options, tests) {
// inject styles into document
setStyle(options.styles);
+ },
+ transitionsStarted: function(options, tests) {
// kick off value collection loop
generalParallelTest.startValueCollection(options);
},
@@ -154,20 +156,40 @@ var suite = root.generalParallelTest = {
},
// requestAnimationFrame runLoop to collect computed values
startValueCollection: function(options) {
- var raf = window.requestAnimationFrame || function(callback){
- setTimeout(callback, 20);
- };
-
- // flag denoting if the runLoop should continue (true) or exit (false)
- options._collectValues = true;
-
- function runLoop() {
- if (!options._collectValues) {
- // test's are done, stop annoying the CPU
- return;
- }
+ const promises = [];
+ const animations = document.getAnimations();
+ animations.forEach(a => {
+ promises.push(new Promise(resolve => {
+ const listener = (event) => {
+ let found = false;
+ if (event.pseudoElement != '') {
+ if (event.pseudoElement == a.effect.pseudoElement) {
+ found = true;
+ }
+ } else if (!a.effect.pseudoElement) {
+ found = true;
+ }
+ if (found) {
+ a.effect.target.removeEventListener(
+ 'transitionend', listener);
+ resolve();
+ }
+ };
+ a.effect.target.addEventListener('transitionend', listener);
+ }));
+ });
+ Promise.all(promises).then(() => {
+ options.allTransitionsCompleted();
+ });
- // collect current style for test's elements
+ // Sample at these values expressed as relative progress.
+ // The last sample being the end of the transition ensure that the
+ // completion events are received in short order.
+ const sample_at = [0.2, 0.4, 0.6, 0.8, 1.0];
+ sample_at.forEach(at => {
+ const time = options.duration * at;
+ animations.forEach(a => { a.currentTime = time; });
+ // Collect current style for test's elements.
options.tests.forEach(function(data) {
if (!data.property) {
return;
@@ -187,12 +209,7 @@ var suite = root.generalParallelTest = {
}
});
});
-
- // rinse and repeat
- raf(runLoop);
- }
-
- runLoop();
+ });
},
// stop requestAnimationFrame runLoop collecting computed values
stopValueCollection: function(options) {
diff --git a/tests/wpt/tests/css/css-transitions/support/properties.js b/tests/wpt/tests/css/css-transitions/support/properties.js
index 0c0057b39e8..81cf9d46d5f 100644
--- a/tests/wpt/tests/css/css-transitions/support/properties.js
+++ b/tests/wpt/tests/css/css-transitions/support/properties.js
@@ -168,7 +168,7 @@ var values = {
*/
var properties = {
'background-color': ['color'],
- 'background-position': ['length', 'percentage'],
+ 'background-position-x': ['length', 'percentage'],
'border-top-width': ['length'],
'border-right-width': ['length'],
diff --git a/tests/wpt/tests/css/css-transitions/support/runParallelAsyncHarness.js b/tests/wpt/tests/css/css-transitions/support/runParallelAsyncHarness.js
index de9b7837900..7293bf92d06 100644
--- a/tests/wpt/tests/css/css-transitions/support/runParallelAsyncHarness.js
+++ b/tests/wpt/tests/css/css-transitions/support/runParallelAsyncHarness.js
@@ -56,16 +56,24 @@
done: function(options){}
})
*/
-root.runParallelAsyncHarness = function(options) {
+
+function DomContentLoadedPromise() {
+ return new Promise(resolve => {
+ document.addEventListener("DOMContentLoaded", (event) => {
+ resolve();
+ });
+ });
+}
+
+root.runParallelAsyncHarness = async function(options) {
+ const ready = DomContentLoadedPromise();
+
if (!options.cases) {
throw new Error("Options don't contain test cases!");
}
var noop = function(){};
- // add a 100ms buffer to the test timeout, just in case
- var duration = Math.ceil(options.duration + 100);
-
// names of individual tests
var cases = Object.keys(options.cases);
@@ -98,7 +106,6 @@ root.runParallelAsyncHarness = function(options) {
var tests = options.tests.slice(offset, offset + testPerSlice);
tests.forEach(function(data) {
(options.setup || noop)(data, options);
-
});
// kick off the current slice of tests
@@ -113,6 +120,9 @@ root.runParallelAsyncHarness = function(options) {
});
});
+ // Start sampling.
+ (options.transitionsStarted || noop)(options, tests);
+
// conclude slice (possibly abort)
var concludeSlice = function() {
tests.forEach(function(data) {
@@ -133,16 +143,14 @@ root.runParallelAsyncHarness = function(options) {
// finish the test for current slice of tests
(options.sliceDone || noop)(options, tests);
- // next test please, give the browser 50ms to do catch its breath
- setTimeout(runLoop, 50);
+ requestAnimationFrame(runLoop);
}
- // wait on RAF before cleanup to make sure all queued event handlers have run
- setTimeout(function() {requestAnimationFrame(concludeSlice)},duration);
+ options.allTransitionsCompleted = concludeSlice;
}
// allow DOMContentLoaded before actually doing something
- setTimeout(runLoop, 100);
+ ready.then(runLoop);
};
})(window);
diff --git a/tests/wpt/tests/css/css-values/attr-IACVT.html b/tests/wpt/tests/css/css-values/attr-IACVT.html
new file mode 100644
index 00000000000..22c5b4e84ab
--- /dev/null
+++ b/tests/wpt/tests/css/css-values/attr-IACVT.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<title>CSS Values Test: attr() IACVT</title>
+<meta name="assert" content="Fail to substitute attr() should be IACVT.">
+<link rel="help" href="https://drafts.csswg.org/css-values-5/#attr-notation">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ #expected {
+ background-color: red;
+ }
+ #test {
+ background-color: red;
+ background-color: attr(data-color <color>);
+ }
+</style>
+<div id="test" data-color=333></div>
+<div id="expected"></div>
+
+<script>
+ var elem = document.getElementById("test");
+ var value = window.getComputedStyle(elem).getPropertyValue("background-color");
+
+ var expected_elem = document.getElementById("expected");
+ var expected_value = window.getComputedStyle(expected_elem).getPropertyValue("background-color");
+ test(() => {
+ assert_not_equals(value, expected_value);
+ });
+</script> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-values/attr-all-types.html b/tests/wpt/tests/css/css-values/attr-all-types.html
index 1e1f7d015cc..c48e476b6d9 100644
--- a/tests/wpt/tests/css/css-values/attr-all-types.html
+++ b/tests/wpt/tests/css/css-values/attr-all-types.html
@@ -22,20 +22,6 @@
<div id="expected"></div>
<script>
- const dimensionTypeToUnits = {
- "length": ["em", "ex", "cap", "ch", "ic", "rem", "lh", "rlh", "vw", "vh ", "vi", "vb", "vmin", "vmax"],
- "angle": ["deg", "grad", "rad", "turn"],
- "time": ["ms", "ms"],
- "frequency": ["Hz", "kHz"],
- "flex": ["fr"]
- };
- const dimensionTypeToProperty = {
- "length": ["width"],
- "angle": ["font-style"],
- "time": ["transition-duration"],
- "flex": ["grid-template-columns"]
- }
-
function test_valid_attr(property, attrString, attrValue, expectedValue) {
var elem = document.getElementById("attr");
elem.setAttribute("data-foo", attrValue);
@@ -70,112 +56,91 @@
elem.style.setProperty(property, null);
}
- function test_dimension_types_and_units() {
- for(const [type, units] of Object.entries(dimensionTypeToUnits)) {
- const property = dimensionTypeToProperty[type];
- const val = "3";
- units.forEach(unit => {
- const expectedValue = val + unit;
-
- const dimensionTypeAttrString = 'attr(data-foo ' + type + ')';
- test_valid_attr(property, dimensionTypeAttrString, expectedValue, expectedValue);
-
- const dimensionUnitAttrString = 'attr(data-foo ' + unit + ')';
- test_valid_attr(property, dimensionUnitAttrString, val, expectedValue);
- });
- }
- }
-
test_valid_attr('content', 'attr(data-foo)', 'abc', '"abc"');
test_valid_attr('content', 'attr(data-foo,)', 'abc', '"abc"');
- test_valid_attr('content', 'attr(data-foo string)', 'abc', '"abc"');
- test_valid_attr('content', 'attr(data-foo string,)', 'abc', '"abc"');
- test_valid_attr('content', 'attr(data-foo string)', 'attr(data-foo)', '"attr(data-foo)"');
-
- test_valid_attr('animation-name', 'attr(data-foo ident)', 'anim', 'anim');
- test_valid_attr('animation-name', 'attr(data-foo ident, anim-fallback)', '"anim"', 'anim-fallback');
- test_valid_attr('animation-name', 'attr(data-foo ident, anim-fallback)', 'initial', 'anim-fallback');
-
- test_valid_attr('background-color', 'attr(data-foo color)', 'red', 'red');
- test_valid_attr('background-color', 'attr(data-foo color)', '#ff0099aa', '#ff0099aa');
- test_valid_attr('background-color', 'attr(data-foo color, red)', '10', 'red');
- test_valid_attr('background-color', 'attr(data-foo color, green)', '1000px', 'green');
- test_valid_attr('background-color', 'attr(data-foo color, green)', 'rgb(255, 0, 0)', 'green');
-
- test_valid_attr('font-weight', 'attr(data-foo number)', '10', '10');
- test_valid_attr('font-weight', 'attr(data-foo number, 30)', '10px', '30');
- test_valid_attr('font-weight', 'attr(data-foo number, calc(10 + 20))', '10px', '30');
-
- test_valid_attr('font-size', 'attr(data-foo percentage)', '10%', '10%');
- test_valid_attr('font-size', 'attr(data-foo percentage, 10px)', 'abc', '10px');
- test_valid_attr('--x', 'attr(data-foo percentage, abc)', '10', 'abc');
-
- test_valid_attr('width', 'attr(data-foo length)', '10px', '10px');
- test_valid_attr('width', 'attr(data-foo length, red)', '10px', '10px');
- test_valid_attr('width', 'attr(data-foo length, 42px)', 'calc(1px + 3px)', '42px');
-
- test_valid_attr('font-style', 'attr(data-foo angle)', '10deg', '10deg');
- test_valid_attr('font-style', 'attr(data-foo angle, 10deg)', '30', '10deg');
- test_valid_attr('font-style', 'attr(data-foo angle, italic)', '30', 'italic');
-
- test_valid_attr('transition-duration', 'attr(data-foo time)', '10ms', '10ms');
- test_valid_attr('transition-duration', 'attr(data-foo time, 30s)', '10m', '30s');
- test_valid_attr('transition-duration', 'attr(data-foo time, calc(10s + 20s))', '10m', '30s');
-
- test_valid_attr('grid-template-columns', '30px attr(data-foo flex)', '1fr', '30px 1fr');
- test_valid_attr('grid-template-columns', 'attr(data-foo flex, 3fr)', '1fr 1fr', '3fr');
- test_valid_attr('grid-template-columns', 'attr(data-foo flex, calc(1px + 2px))', '10px', '3px');
-
- test_valid_attr('height', 'attr(data-foo px)', '10', '10px');
- test_valid_attr('width', 'calc(attr(data-foo px) + 1px)', '10', '11px');
- test_valid_attr('--x', 'attr(data-foo px) 11px', '10', '10px 11px');
- test_valid_attr('grid-template-columns', 'attr(data-foo fr)', '10', '10fr');
- test_valid_attr('grid-template-columns', 'attr(data-foo fr, 3fr)', '10fr', '3fr');
-
- test_valid_attr('--string', 'attr(data-foo string)', 'hello', '"hello"');
- test_valid_attr('--string-list', 'attr(data-foo string)', 'hello', '"hello"');
-
- test_dimension_types_and_units();
-
- test_invalid_attr('animation-name', 'attr(data-foo ident)', 'initial');
- test_invalid_attr('animation-name', 'attr(data-foo ident)', '"anim"');
- test_invalid_attr('animation-name', 'attr(data-foo ident)', '"none"');
-
- test_invalid_attr('background-color', 'attr(data-foo color)', 'rgb(0 255 0)');
- test_invalid_attr('background-color', 'attr(data-foo color)', 'color-mix(in lch, red, pink)');
- test_invalid_attr('background-color', 'attr(data-foo color)', 'light-dark(#333b3c, #efefec)');
- test_invalid_attr('background-color', 'attr(data-foo red)', 'abc');
- test_invalid_attr('background-color', 'attr(data-foo, red)', 'abc');
-
- test_invalid_attr('font-size', 'attr(data-foo number)', '10');
- test_invalid_attr('font-weight', 'attr(data-foo number),', '10');
- test_invalid_attr('font-weight', 'attr(data-foo number)', 'calc(1 + 3)');
-
- test_invalid_attr('font-size', 'attr(data-foo percentage)', 'abc');
- test_invalid_attr('font-size', 'attr(data-foo percentage)', '10% a');
- test_invalid_attr('font-size', 'attr(data-foo percentage, 10rad)', 'abc');
-
- test_invalid_attr('width', 'attr(data-foo length)', '10');
- test_invalid_attr('width', 'attr(data-foo length, 30)', 'calc(10 + 20)');
- test_invalid_attr('width', 'attr(data-foo length, calc(10 + 20))', 'abc');
-
- test_invalid_attr('font-style', 'attr(data-foo angle)', '10%');
- test_invalid_attr('font-style', 'attr(data-foo angle)', 'calc(10px + 20px)');
- test_invalid_attr('font-style', 'attr(data-foo angle, calc(10 + 20))', 'calc(10px + 20px)');
-
- test_invalid_attr('transition-duration', 'attr(data-foo time)', '10');
- test_invalid_attr('transition-duration', 'attr(data-foo time)', '10 ms');
- test_invalid_attr('transition-duration', 'attr(data-foo time)', 'calc(1ms + 2ms)s');
-
- test_invalid_attr('grid-template-columns', 'attr(data-foo flex)', '10px');
- test_invalid_attr('grid-template-columns', 'attr(data-foo flex)', '"30fr"');
- test_invalid_attr('grid-template-columns', 'attr(data-foo flex, calc(1deg + 2deg))', '10px');
-
- test_invalid_attr('width', 'attr(data-foo px)', '10px');
- test_invalid_attr('height', 'attr(data-foo fr)', '10');
- test_invalid_attr('transition-duration', 'attr(data-foo ms)', '10px');
- test_invalid_attr('transition-duration', 'attr(data-foo ms)', '10px foo');
+ test_valid_attr('content', 'attr(data-foo <string>)', '"abc"', '"abc"');
+ test_valid_attr('content', 'attr(data-foo <string>,)', '"abc"', '"abc"');
+ test_valid_attr('content', 'attr(data-foo <string>)', '"attr(data-foo)"', '"attr(data-foo)"');
+
+ test_valid_attr('animation-name', 'attr(data-foo <custom-ident>)', 'anim', 'anim');
+ test_valid_attr('animation-name', 'attr(data-foo <custom-ident>, anim-fallback)', '"anim"', 'anim-fallback');
+ test_valid_attr('animation-name', 'attr(data-foo <custom-ident>, anim-fallback)', 'initial', 'anim-fallback');
+
+ test_valid_attr('background-color', 'attr(data-foo <color>)', 'red', 'red');
+ test_valid_attr('background-color', 'attr(data-foo <color>)', '#ff0099aa', '#ff0099aa');
+ test_valid_attr('background-color', 'attr(data-foo <color>, red)', '10', 'red');
+ test_valid_attr('background-color', 'attr(data-foo <color>, green)', '1000px', 'green');
+ test_valid_attr('background-color', 'attr(data-foo <color>, green)', 'rgb(255, 0, 0)', 'rgb(255, 0, 0)');
+ test_valid_attr('background-color', 'attr(data-foo <color>)', 'color-mix(in lch, red, pink)', 'color-mix(in lch, red, pink)');
+ test_valid_attr('background-color', 'attr(data-foo <color>)', 'light-dark(#333b3c, #efefec)', 'light-dark(#333b3c, #efefec)');
+
+ test_valid_attr('font-weight', 'attr(data-foo <number>)', '10', '10');
+ test_valid_attr('font-weight', 'attr(data-foo <number>, 30)', '10px', '30');
+ test_valid_attr('font-weight', 'attr(data-foo <number> | lighter | bold, bold)', 'lighter', 'lighter');
+ test_valid_attr('font-weight', 'attr(data-foo <number> | lighter | bold, lighter)', '10px', 'lighter');
+ test_valid_attr('font-weight', 'attr(data-foo <number>)', 'calc(3 + 3)', '6');
+ test_valid_attr('font-weight', 'attr(data-foo <number>, calc(10 + 20))', '10px', '30');
+
+ test_valid_attr('font-size', 'attr(data-foo <percentage>)', '10%', '10%');
+ test_valid_attr('font-size', 'attr(data-foo <percentage>, 10px)', 'abc', '10px');
+ test_valid_attr('font-size', 'attr(data-foo <percentage> | <length>, 10)', '10px', '10px');
+ test_valid_attr('--x', 'attr(data-foo <percentage>, abc)', '10', 'abc');
+
+ test_valid_attr('width', 'attr(data-foo <length>)', '10px', '10px');
+ test_valid_attr('width', 'attr(data-foo <length>, red)', '10px', '10px');
+ test_valid_attr('width', 'attr(data-foo <length>, 42px)', 'calc(1px + 3px)', '4px');
+
+ test_valid_attr('font-style', 'attr(data-foo <angle>)', '10deg', '10deg');
+ test_valid_attr('font-style', 'attr(data-foo <angle>, 10deg)', '30', '10deg');
+ test_valid_attr('font-style', 'attr(data-foo <angle>, italic)', '30', 'italic');
+ test_valid_attr('font-style', 'attr(data-foo <angle>, 3deg)', 'italic', '3deg');
+ test_valid_attr('font-style', 'attr(data-foo <angle> | italic, 3deg)', 'italic', 'italic');
+
+ test_valid_attr('transition-duration', 'attr(data-foo <time>)', '10ms', '10ms');
+ test_valid_attr('transition-duration', 'attr(data-foo <time>, 30s)', '10m', '30s');
+ test_valid_attr('transition-duration', 'attr(data-foo <time>, calc(10s + 20s))', '10m', '30s');
+
+ test_valid_attr('--x', 'attr(data-foo <number>) 11', '10', '10 11');
+ test_valid_attr('--string', 'attr(data-foo <string>)', '"hello"', '"hello"');
+ test_valid_attr('--string-list', 'attr(data-foo <string>+)', '"hello" "hi"', '"hello" "hi"');
+
+ test_invalid_attr('animation-name', 'attr(data-foo string)', 'abc');
+ test_invalid_attr('animation-name', 'attr(data-foo < string>)', 'abc');
+ test_invalid_attr('animation-name', 'attr(data-foo <string >)', 'abc');
+
+ test_invalid_attr('animation-name', 'attr(data-foo <custom-ident>)', 'initial');
+ test_invalid_attr('animation-name', 'attr(data-foo <custom-ident>)', '"anim"');
+ test_invalid_attr('animation-name', 'attr(data-foo <custom-ident>)', '"none"');
+ test_invalid_attr('animation-name', 'attr(data-foo <custom-ident> <ident>)', '"none"');
+
+ test_invalid_attr('background-color', 'attr(data-foo <color>)', 'rgb(0)');
+ test_invalid_attr('background-color', 'attr(data-foo <red>)', 'abc');
+ test_invalid_attr('background-color', 'attr(data-foo <color> | <red>)', 'abc');
+ test_invalid_attr('background-color', 'attr(data-foo <color> |)', 'abc');
+ test_invalid_attr('background-color', 'attr(data-foo, <red>)', 'abc');
+
+ test_invalid_attr('font-size', 'attr(data-foo <number>)', '10');
+ test_invalid_attr('font-size', 'attr(data-foo <number> !)', '10');
+ test_invalid_attr('font-weight', 'attr(data-foo <number>),', '10');
+ test_invalid_attr('width', 'attr(data-foo <number>, 30px)', '10');
+
+ test_invalid_attr('font-size', 'attr(data-foo <percentage>)', 'abc');
+ test_invalid_attr('font-size', 'attr(data-foo <percentage>)', '10% a');
+ test_invalid_attr('font-size', 'attr(data-foo <percentage>, 10rad)', 'abc');
+ test_invalid_attr('font-size', 'attr(data-foo <number> | <length>, 30px)', '10');
+
+ test_invalid_attr('width', 'attr(data-foo <length>)', '10');
+ test_invalid_attr('width', 'attr(data-foo <length>, 30)', 'calc(10 + 20)');
+ test_invalid_attr('width', 'attr(data-foo <length>, calc(10 + 20))', 'abc');
+
+ test_invalid_attr('font-style', 'attr(data-foo <angle>)', '10%');
+ test_invalid_attr('font-style', 'attr(data-foo <angle>)', 'calc(10px + 20px)');
+ test_invalid_attr('font-style', 'attr(data-foo <angle>, calc(10 + 20))', 'calc(10px + 20px)');
+
+ test_invalid_attr('transition-duration', 'attr(data-foo <time>)', '10');
+ test_invalid_attr('transition-duration', 'attr(data-foo <time>)', '10 ms');
+ test_invalid_attr('transition-duration', 'attr(data-foo <time>)', 'calc(1ms + 2ms)s');
test_invalid_attr('width', 'attr(())', '10px');
</script> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-values/attr-color-invalid-cast.html b/tests/wpt/tests/css/css-values/attr-color-invalid-cast.html
index d538eebdd99..970535b0037 100644
--- a/tests/wpt/tests/css/css-values/attr-color-invalid-cast.html
+++ b/tests/wpt/tests/css/css-values/attr-color-invalid-cast.html
@@ -30,7 +30,7 @@
html { background: white; overflow: hidden; }
#outer { position: relative; background: red; width: 200px; height: 200px; }
- #outer { background: attr(data-test color, green); }
+ #outer { background: attr(data-test <color>, green); }
</style>
diff --git a/tests/wpt/tests/css/css-values/attr-color-invalid-fallback.html b/tests/wpt/tests/css/css-values/attr-color-invalid-fallback.html
deleted file mode 100644
index 9e016d1630d..00000000000
--- a/tests/wpt/tests/css/css-values/attr-color-invalid-fallback.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <meta charset="utf-8">
- <title>
- CSS Values and Units Test:
- Attribute references (colors)
- </title>
- <meta name="assert" content="
- When the fallback value of an attr() function is invalid, the delcaration is ignored.
- " />
- <meta name="flags" content="invalid">
- <link
- rel="author"
- title="François REMY"
- href="mailto:fremycompany.developer@yahoo.fr"
- / >
-
- <link rel="help" href="http://www.w3.org/TR/css3-values/#attr-notation"/>
-
- <link
- rel="match"
- href="reference/200-200-green.html"
- />
-
- <style type="text/css">
-
- html, body { margin: 0px; padding: 0px; }
-
- html { background: white; overflow: hidden; }
- #outer { position: relative; background: green; width: 200px; height: 200px; }
-
- #outer { background: attr(data-test color, qqffuutt); }
-
- </style>
-
-</head>
-<body>
-
- <div id="outer" data-test="red"></div>
-
-</body>
-</html>
diff --git a/tests/wpt/tests/css/css-values/attr-color-valid.html b/tests/wpt/tests/css/css-values/attr-color-valid.html
index 8817e6b94c8..5a4608989c9 100644
--- a/tests/wpt/tests/css/css-values/attr-color-valid.html
+++ b/tests/wpt/tests/css/css-values/attr-color-valid.html
@@ -30,7 +30,7 @@
html { background: white; overflow: hidden; }
#outer { position: relative; background: red; width: 200px; height: 200px; }
- #outer { background: attr(data-test color); }
+ #outer { background: attr(data-test <color>); }
</style>
diff --git a/tests/wpt/tests/css/css-values/attr-container-style-query.html b/tests/wpt/tests/css/css-values/attr-container-style-query.html
index 2cc872509c0..9afa95f81ef 100644
--- a/tests/wpt/tests/css/css-values/attr-container-style-query.html
+++ b/tests/wpt/tests/css/css-values/attr-container-style-query.html
@@ -7,7 +7,7 @@
#container {
--foo: bar;
}
- @container style(--foo: attr(data-foo ident)) {
+ @container style(--foo: attr(data-foo <custom-ident>)) {
#target { color: green; }
}
</style>
diff --git a/tests/wpt/tests/css/css-values/attr-crash.html b/tests/wpt/tests/css/css-values/attr-crash.html
index 012dad91cf8..8ca828faab4 100644
--- a/tests/wpt/tests/css/css-values/attr-crash.html
+++ b/tests/wpt/tests/css/css-values/attr-crash.html
@@ -5,7 +5,7 @@
<head>
<style>
#div {
- --prop: attr(data-foo ident);
+ --prop: attr(data-foo <ident>);
}
</style>
</head>
diff --git a/tests/wpt/tests/css/css-values/attr-in-max.html b/tests/wpt/tests/css/css-values/attr-in-max.html
index 314ed630b78..f34f5017e76 100644
--- a/tests/wpt/tests/css/css-values/attr-in-max.html
+++ b/tests/wpt/tests/css/css-values/attr-in-max.html
@@ -16,7 +16,7 @@
html { background: white; overflow: hidden; }
#outer { position: relative; background: green; }
- #outer { width: max(attr(data-test length)); height: 200px; }
+ #outer { width: max(attr(data-test <length>)); height: 200px; }
</style>
</head>
diff --git a/tests/wpt/tests/css/css-values/attr-in-slotted-ref.html b/tests/wpt/tests/css/css-values/attr-in-slotted-ref.html
new file mode 100644
index 00000000000..401641606ac
--- /dev/null
+++ b/tests/wpt/tests/css/css-values/attr-in-slotted-ref.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<title>CSS Values Test: attr() in pseudo element ::slotted</title>
+<div class=host>
+ <template shadowrootmode=open>
+ <style>
+ ::slotted(div) {
+ color: green;
+ }
+ </style>
+ <slot></slot>
+ </template>
+ <div>PASS if green</div>
+</div> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-values/attr-in-slotted.html b/tests/wpt/tests/css/css-values/attr-in-slotted.html
new file mode 100644
index 00000000000..54c792092a6
--- /dev/null
+++ b/tests/wpt/tests/css/css-values/attr-in-slotted.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<title>CSS Values Test: attr() in pseudo element ::slotted</title>
+<link rel="help" href="https://drafts.csswg.org/css-values/#attr-notation">
+<link rel="match" href="attr-in-slotted-ref.html">
+<div class=host>
+ <template shadowrootmode=open>
+ <style>
+ ::slotted(div) {
+ color: red;
+ color: attr(data-color <color>, yellow);
+ }
+ </style>
+ <slot data-color=blue></slot>
+ </template>
+ <div data-color=green>PASS if green</div>
+</div> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-values/attr-invalid-type-001.html b/tests/wpt/tests/css/css-values/attr-invalid-type-001.html
deleted file mode 100644
index 1f88c37c640..00000000000
--- a/tests/wpt/tests/css/css-values/attr-invalid-type-001.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <meta charset="utf-8">
- <title>
- CSS Values and Units Test:
- Attribute references (types)
- </title>
- <meta name="assert" content="
- When the type of an attr() function is known and unexpected, the declaration is ignored
- " />
- <meta name="flags" content="invalid">
- <link
- rel="author"
- title="François REMY"
- href="mailto:fremycompany.developer@yahoo.fr"
- / >
-
- <link rel="help" href="http://www.w3.org/TR/css3-values/#attr-notation"/>
-
- <link
- rel="match"
- href="reference/200-200-green.html"
- />
-
- <style type="text/css">
-
- html, body { margin: 0px; padding: 0px; }
-
- html { background: white; overflow: hidden; }
- #outer { position: relative; background: green; }
-
- #outer { width: 200px; width: attr(data-test color); height: 200px; }
-
- </style>
-
-</head>
-<body>
-
- <div id="outer" data-test="green"></div>
-
-</body>
-</html>
diff --git a/tests/wpt/tests/css/css-values/attr-invalid-type-002.html b/tests/wpt/tests/css/css-values/attr-invalid-type-002.html
deleted file mode 100644
index dbdac8a4ba1..00000000000
--- a/tests/wpt/tests/css/css-values/attr-invalid-type-002.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <meta charset="utf-8">
- <title>
- CSS Values and Units Test:
- Attribute references (types)
- </title>
- <meta name="assert" content="
- When the type of an attr() function is known and unexpected, the declaration is ignored
- " />
- <meta name="flags" content="invalid">
- <link
- rel="author"
- title="François REMY"
- href="mailto:fremycompany.developer@yahoo.fr"
- / >
-
- <link rel="help" href="http://www.w3.org/TR/css3-values/#attr-notation"/>
-
- <link
- rel="match"
- href="reference/200-200-green.html"
- />
-
- <style type="text/css">
-
- html, body { margin: 0px; padding: 0px; }
-
- html { background: white; overflow: hidden; }
- #outer { position: relative; background: green; }
-
- #outer { width: 200px; width: attr(data-test number); height: 200px; }
- /* NOTE: while '0' is a valid length AND a valid number, the number type isn't a valid representation of a length. */
- /* The reason for this is that most numbers aren't valid length */
- /* ! Spec need some updates to make those assumptions clearly valid (see Tab Atkins for details) */
-
- </style>
-
-</head>
-<body>
-
- <div id="outer" data-test="0"></div>
-
-</body>
-</html>
diff --git a/tests/wpt/tests/css/css-values/attr-invalidation.html b/tests/wpt/tests/css/css-values/attr-invalidation.html
index a48556e5ff7..47d617010c5 100644
--- a/tests/wpt/tests/css/css-values/attr-invalidation.html
+++ b/tests/wpt/tests/css/css-values/attr-invalidation.html
@@ -6,7 +6,7 @@
<script src="/resources/testharnessreport.js"></script>
<style>
div {
- width: attr(data-foo length);
+ width: attr(data-foo <length>);
}
</style>
diff --git a/tests/wpt/tests/css/css-values/attr-length-invalid-cast.html b/tests/wpt/tests/css/css-values/attr-length-invalid-cast.html
index 93083236360..04910df05b8 100644
--- a/tests/wpt/tests/css/css-values/attr-length-invalid-cast.html
+++ b/tests/wpt/tests/css/css-values/attr-length-invalid-cast.html
@@ -30,7 +30,7 @@
html { background: white; overflow: hidden; }
#outer { position: relative; background: green; }
- #outer { width: attr(data-test length, 200px); height: 200px; }
+ #outer { width: attr(data-test <length>, 200px); height: 200px; }
</style>
diff --git a/tests/wpt/tests/css/css-values/attr-length-invalid-fallback.html b/tests/wpt/tests/css/css-values/attr-length-invalid-fallback.html
deleted file mode 100644
index e68fe7a4701..00000000000
--- a/tests/wpt/tests/css/css-values/attr-length-invalid-fallback.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <meta charset="utf-8">
- <title>
- CSS Values and Units Test:
- Attribute references (length)
- </title>
- <meta name="assert" content="
- When the attr() fallback is an invalid length, the delcaration is correctly ignored.
- " />
- <meta name="flags" content="invalid">
- <link
- rel="author"
- title="François REMY"
- href="mailto:fremycompany.developer@yahoo.fr"
- / >
-
- <link rel="help" href="http://www.w3.org/TR/css3-values/#attr-notation"/>
-
- <link
- rel="match"
- href="reference/200-200-green.html"
- />
-
- <style type="text/css">
-
- html, body { margin: 0px; padding: 0px; }
-
- html { background: white; overflow: hidden; }
- #outer { position: relative; background: green; }
-
- #outer { width: 200px; width: attr(data-test length, invalid); height: 200px; }
-
- </style>
-
-</head>
-<body>
-
- <div id="outer" data-test="300px"></div>
-
-</body>
-</html>
diff --git a/tests/wpt/tests/css/css-values/attr-length-valid-zero-nofallback.html b/tests/wpt/tests/css/css-values/attr-length-valid-zero-nofallback.html
index b8a042fd403..f91121c0700 100644
--- a/tests/wpt/tests/css/css-values/attr-length-valid-zero-nofallback.html
+++ b/tests/wpt/tests/css/css-values/attr-length-valid-zero-nofallback.html
@@ -32,7 +32,7 @@
#outer2 { background: red; }
#outer { width: 200px; height: 200px; }
- #outer2 { width: 200px; width: attr(data-test length); height: 200px; }
+ #outer2 { width: 200px; width: attr(data-test <length>); height: 200px; }
</style>
diff --git a/tests/wpt/tests/css/css-values/attr-length-valid-zero.html b/tests/wpt/tests/css/css-values/attr-length-valid-zero.html
index fcdebc6fad7..19ece66a9dc 100644
--- a/tests/wpt/tests/css/css-values/attr-length-valid-zero.html
+++ b/tests/wpt/tests/css/css-values/attr-length-valid-zero.html
@@ -32,7 +32,7 @@
#outer2 { background: red; }
#outer { width: 200px; height: 200px; }
- #outer2 { width: 200px; width: attr(data-test length, 0); height: 200px; }
+ #outer2 { width: 200px; width: attr(data-test <length>, 0); height: 200px; }
</style>
diff --git a/tests/wpt/tests/css/css-values/attr-length-valid.html b/tests/wpt/tests/css/css-values/attr-length-valid.html
index c78258ffe60..f61c9aa4bef 100644
--- a/tests/wpt/tests/css/css-values/attr-length-valid.html
+++ b/tests/wpt/tests/css/css-values/attr-length-valid.html
@@ -30,7 +30,7 @@
html { background: white; overflow: hidden; }
#outer { position: relative; background: green; }
- #outer { width: attr(data-test length); height: 200px; }
+ #outer { width: attr(data-test <length>); height: 200px; }
</style>
diff --git a/tests/wpt/tests/css/css-values/attr-notype-fallback-ref.html b/tests/wpt/tests/css/css-values/attr-notype-fallback-ref.html
index efb9b969f3a..21f7362dbaf 100644
--- a/tests/wpt/tests/css/css-values/attr-notype-fallback-ref.html
+++ b/tests/wpt/tests/css/css-values/attr-notype-fallback-ref.html
@@ -13,7 +13,7 @@
}
#four::after {
- content: "";
+ content: "Not fallback value";
}
#five::after {
diff --git a/tests/wpt/tests/css/css-values/attr-pseudo-elem-invalidation.html b/tests/wpt/tests/css/css-values/attr-pseudo-elem-invalidation.html
index 1ef912bf75d..c17704f009c 100644
--- a/tests/wpt/tests/css/css-values/attr-pseudo-elem-invalidation.html
+++ b/tests/wpt/tests/css/css-values/attr-pseudo-elem-invalidation.html
@@ -23,7 +23,7 @@
function test_pseudo_element_invalidation(pseudoSelector) {
let elem = document.getElementById("div");
elem.setAttribute("data-foo", "150%");
- elem.style["font-size"]= "attr(data-foo percentage)";
+ elem.style["font-size"]= "attr(data-foo <percentage>)";
let old_font_size = window.getComputedStyle(elem, pseudoSelector).getPropertyValue("font-size");
elem.setAttribute("data-foo", "300%");
let new_font_size = window.getComputedStyle(elem, pseudoSelector).getPropertyValue("font-size");
diff --git a/tests/wpt/tests/css/css-values/attr-px-invalid-cast.html b/tests/wpt/tests/css/css-values/attr-px-invalid-cast.html
deleted file mode 100644
index 54b43b4076d..00000000000
--- a/tests/wpt/tests/css/css-values/attr-px-invalid-cast.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <meta charset="utf-8">
- <title>
- CSS Values and Units Test:
- Attributes references (pixels)
- </title>
- <meta name="assert" content="
- When the value of the referenced attribute is not a pixel value, the fallback value is used instead.
- " />
-
- <link
- rel="author"
- title="François REMY"
- href="mailto:fremycompany.developer@yahoo.fr"
- / >
-
- <link rel="help" href="http://www.w3.org/TR/css3-values/#attr-notation"/>
-
- <link
- rel="match"
- href="reference/200-200-green.html"
- />
-
- <style type="text/css">
-
- html, body { margin: 0px; padding: 0px; }
-
- html { background: white; overflow: hidden; }
- #outer { position: relative; background: green; }
-
- #outer { width: attr(data-test px, 200px); height: 200px; }
-
- </style>
-
-</head>
-<body>
-
- <div id="outer" data-test="300px"></div>
-
-</body>
-</html>
diff --git a/tests/wpt/tests/css/css-values/attr-px-invalid-fallback.html b/tests/wpt/tests/css/css-values/attr-px-invalid-fallback.html
deleted file mode 100644
index 27dfc102403..00000000000
--- a/tests/wpt/tests/css/css-values/attr-px-invalid-fallback.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <meta charset="utf-8">
- <title>
- CSS Values and Units Test:
- Attribute references (pixels)
- </title>
- <meta name="assert" content="
- When the fallback of a pixel attribute reference is invalid, the declaration is ignored.
- " />
- <meta name="flags" content="invalid">
- <link
- rel="author"
- title="François REMY"
- href="mailto:fremycompany.developer@yahoo.fr"
- / >
-
- <link rel="help" href="http://www.w3.org/TR/css3-values/#attr-notation"/>
-
- <link
- rel="match"
- href="reference/200-200-green.html"
- />
-
- <style type="text/css">
-
- html, body { margin: 0px; padding: 0px; }
-
- html { background: white; overflow: hidden; }
- #outer { position: relative; background: green; }
-
- #outer { width: 200px; width: attr(data-test px, 300); height: 200px; }
-
- </style>
-
-</head>
-<body>
-
- <div id="outer" data-test="300"></div>
-
-</body>
-</html>
diff --git a/tests/wpt/tests/css/css-values/attr-px-valid.html b/tests/wpt/tests/css/css-values/attr-px-valid.html
deleted file mode 100644
index ec96924a680..00000000000
--- a/tests/wpt/tests/css/css-values/attr-px-valid.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <meta charset="utf-8">
- <title>
- CSS Values and Units Test:
- Attribute references (pixels)
- </title>
- <meta name="assert" content="
- Attribute references for pixel values are replaced correctly at computed time.
- " />
-
- <link
- rel="author"
- title="François REMY"
- href="mailto:fremycompany.developer@yahoo.fr"
- / >
-
- <link rel="help" href="http://www.w3.org/TR/css3-values/#attr-notation"/>
-
- <link
- rel="match"
- href="reference/200-200-green.html"
- />
-
- <style type="text/css">
-
- html, body { margin: 0px; padding: 0px; }
-
- html { background: white; overflow: hidden; }
- #outer { position: relative; background: green; }
-
- #outer { width: attr(data-test px); height: 200px; }
-
- </style>
-
-</head>
-<body>
-
- <div id="outer" data-test="200"></div>
-
-</body>
-</html>
diff --git a/tests/wpt/tests/css/css-values/signs-abs-computed.html b/tests/wpt/tests/css/css-values/signs-abs-computed.html
index 8bad89e557b..fe4b938c5b4 100644
--- a/tests/wpt/tests/css/css-values/signs-abs-computed.html
+++ b/tests/wpt/tests/css/css-values/signs-abs-computed.html
@@ -206,4 +206,35 @@ document.getElementById('container').style.fontSize = '20px';
test_math_used('calc(sign(10%) * 100px)', '100px');
+// Basic tests (just px and em) for sign() interaction with units not
+// otherwise used by the property.
+test_math_used('calc(2.5 - sign(41px - 2em) / 2)', '2', {type:'number'});
+test_math_used('calc(2.5 - sign(40px - 2em) / 2)', '2.5', {type:'number'});
+test_math_used('calc(2.5 - sign(39px - 2em) / 2)', '3', {type:'number'});
+test_math_used('calc(3 + sign(42px - 2em))', '4', {type:'integer'});
+test_math_used('calc(3 + sign(40px - 2em))', '3', {type:'integer'});
+test_math_used('calc(3 + sign(38px - 2em))', '2', {type:'integer'});
+test_math_used('calc(50px + 100px * sign(42px - 2em))', '150px', {type:'length'});
+test_math_used('calc(50px + 100px * sign(40px - 2em))', '50px', {type:'length'});
+test_math_used('calc(50px + 100px * sign(38px - 2em))', '-50px', {type:'length'});
+test_math_used('calc(90deg + 30deg * sign(42px - 2em))', '120deg', {type:'angle'});
+test_math_used('calc(90deg + 30deg * sign(40px - 2em))', '90deg', {type:'angle'});
+test_math_used('calc(90deg + 30deg * sign(38px - 2em))', '60deg', {type:'angle'});
+test_math_used('calc(5s + 15s * sign(42px - 2em))', '20s', {type:'time'});
+test_math_used('calc(5s + 15s * sign(40px - 2em))', '5s', {type:'time'});
+test_math_used('calc(5s + 15s * sign(38px - 2em))', '-10s', {type:'time'});
+test_math_used('calc(100dpi + 20dpi * sign(42px - 2em))', '120dpi', {type:'resolution'});
+test_math_used('calc(100dpi + 20dpi * sign(40px - 2em))', '100dpi', {type:'resolution'});
+test_math_used('calc(100dpi + 20dpi * sign(38px - 2em))', '80dpi', {type:'resolution'});
+test_math_used('calc(3fr + 1fr * sign(42px - 2em))', '4fr', {type:'flex'});
+test_math_used('calc(3fr + 1fr * sign(40px - 2em))', '3fr', {type:'flex'});
+test_math_used('calc(3fr + 1fr * sign(38px - 2em))', '2fr', {type:'flex'});
+// repeat a few with px and rem
+test_math_used('calc(2.5 - sign(33px - 2rem) / 2)', '2', {type:'number'});
+test_math_used('calc(2.5 - sign(32px - 2rem) / 2)', '2.5', {type:'number'});
+test_math_used('calc(2.5 - sign(31px - 2rem) / 2)', '3', {type:'number'});
+test_math_used('calc(50px + 100px * sign(34px - 2rem))', '150px', {type:'length'});
+test_math_used('calc(50px + 100px * sign(32px - 2rem))', '50px', {type:'length'});
+test_math_used('calc(50px + 100px * sign(30px - 2rem))', '-50px', {type:'length'});
+
</script>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes-ref.html b/tests/wpt/tests/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes-ref.html
new file mode 100644
index 00000000000..2ddb130e05f
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes-ref.html
@@ -0,0 +1,8 @@
+<!doctype html>
+<meta charset="utf-8">
+<style>
+div {
+ color: green;
+}
+</style>
+<div>Shown</div>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes.html b/tests/wpt/tests/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes.html
new file mode 100644
index 00000000000..33b65e6fb67
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-always-matches-negated-first-of-type-when-ancestor-changes.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<meta charset="utf-8">
+<html class="reftest-wait">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1926164">
+<link rel="author" title="Zach Hoffman" href="mailto:zach@zrhoffman.net">
+<link rel="match" href="negated-always-matches-negated-first-of-type-when-ancestor-changes-ref.html">
+<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-first-of-type-pseudo">
+<style>
+.some-hidden > :not(.always-matches:not(:first-of-type)) {
+ display: none;
+}
+.to-show {
+ color: green;
+}
+.to-hide {
+ color: red;
+}
+</style>
+<div id="ancestor">
+ <div class="to-hide always-matches">Hidden</div>
+ <div class="to-show always-matches">Shown</div>
+</div>
+<script>
+document.documentElement.offsetTop;
+(async () => {
+ for (let i = 0; i < 10; i++) {
+ await new Promise(r => requestAnimationFrame(r));
+ }
+ ancestor.classList.add("some-hidden");
+ document.documentElement.classList.remove('reftest-wait');
+})();
+</script>
+</html>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes-ref.html b/tests/wpt/tests/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes-ref.html
new file mode 100644
index 00000000000..2ddb130e05f
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes-ref.html
@@ -0,0 +1,8 @@
+<!doctype html>
+<meta charset="utf-8">
+<style>
+div {
+ color: green;
+}
+</style>
+<div>Shown</div>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes.html b/tests/wpt/tests/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes.html
new file mode 100644
index 00000000000..99c39827590
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-always-matches-negated-last-of-type-when-ancestor-changes.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<meta charset="utf-8">
+<html class="reftest-wait">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1926164">
+<link rel="author" title="Zach Hoffman" href="mailto:zach@zrhoffman.net">
+<link rel="match" href="negated-always-matches-negated-last-of-type-when-ancestor-changes-ref.html">
+<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-last-of-type-pseudo">
+<style>
+.some-hidden > :not(.always-matches:not(:last-of-type)) {
+ display: none;
+}
+.to-show {
+ color: green;
+}
+.to-hide {
+ color: red;
+}
+</style>
+<div id="ancestor">
+ <div class="to-show always-matches">Shown</div>
+ <div class="to-hide always-matches">Hidden</div>
+</div>
+<script>
+document.documentElement.offsetTop;
+(async () => {
+ for (let i = 0; i < 10; i++) {
+ await new Promise(r => requestAnimationFrame(r));
+ }
+ ancestor.classList.add("some-hidden");
+ document.documentElement.classList.remove('reftest-wait');
+})();
+</script>
+</html>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-is-always-matches-negated-first-of-type-when-ancestor-changes-ref.html b/tests/wpt/tests/css/selectors/invalidation/negated-is-always-matches-negated-first-of-type-when-ancestor-changes-ref.html
new file mode 100644
index 00000000000..a3b59899853
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-is-always-matches-negated-first-of-type-when-ancestor-changes-ref.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<meta charset="utf-8">
+<style>
+div {
+ color: green;
+}
+</style>
+<div>Shown</div>
+<div>Shown</div>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-is-always-matches-negated-first-of-type-when-ancestor-changes.html b/tests/wpt/tests/css/selectors/invalidation/negated-is-always-matches-negated-first-of-type-when-ancestor-changes.html
new file mode 100644
index 00000000000..6ed1f8c0e04
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-is-always-matches-negated-first-of-type-when-ancestor-changes.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset="utf-8">
+<html class="reftest-wait">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1926164">
+<link rel="author" title="Zach Hoffman" href="mailto:zach@zrhoffman.net">
+<link rel="match" href="negated-is-always-matches-negated-first-of-type-when-ancestor-changes-ref.html">
+<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-first-of-type-pseudo">
+<style>
+.some-hidden > :not(:is(.always-matches, :not(:first-of-type))) {
+ display: none;
+}
+.to-show {
+ color: green;
+}
+</style>
+<div id="ancestor">
+ <div class="to-show always-matches">Shown</div>
+ <div class="to-show always-matches">Shown</div>
+</div>
+<script>
+document.documentElement.offsetTop;
+(async () => {
+ for (let i = 0; i < 10; i++) {
+ await new Promise(r => requestAnimationFrame(r));
+ }
+ ancestor.classList.add("some-hidden");
+ document.documentElement.classList.remove('reftest-wait');
+})();
+</script>
+</html>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-is-always-matches-negated-last-of-type-when-ancestor-changes-ref.html b/tests/wpt/tests/css/selectors/invalidation/negated-is-always-matches-negated-last-of-type-when-ancestor-changes-ref.html
new file mode 100644
index 00000000000..a3b59899853
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-is-always-matches-negated-last-of-type-when-ancestor-changes-ref.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<meta charset="utf-8">
+<style>
+div {
+ color: green;
+}
+</style>
+<div>Shown</div>
+<div>Shown</div>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-is-always-matches-negated-last-of-type-when-ancestor-changes.html b/tests/wpt/tests/css/selectors/invalidation/negated-is-always-matches-negated-last-of-type-when-ancestor-changes.html
new file mode 100644
index 00000000000..500fd3aa4ee
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-is-always-matches-negated-last-of-type-when-ancestor-changes.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset="utf-8">
+<html class="reftest-wait">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1926164">
+<link rel="author" title="Zach Hoffman" href="mailto:zach@zrhoffman.net">
+<link rel="match" href="negated-is-always-matches-negated-last-of-type-when-ancestor-changes-ref.html">
+<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-last-of-type-pseudo">
+<style>
+.some-hidden > :not(:is(.always-matches, :not(:last-of-type))) {
+ display: none;
+}
+.to-show {
+ color: green;
+}
+</style>
+<div id="ancestor">
+ <div class="to-show always-matches">Shown</div>
+ <div class="to-show always-matches">Shown</div>
+</div>
+<script>
+document.documentElement.offsetTop;
+(async () => {
+ for (let i = 0; i < 10; i++) {
+ await new Promise(r => requestAnimationFrame(r));
+ }
+ ancestor.classList.add("some-hidden");
+ document.documentElement.classList.remove('reftest-wait');
+})();
+</script>
+</html>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes-ref.html b/tests/wpt/tests/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes-ref.html
new file mode 100644
index 00000000000..2ddb130e05f
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes-ref.html
@@ -0,0 +1,8 @@
+<!doctype html>
+<meta charset="utf-8">
+<style>
+div {
+ color: green;
+}
+</style>
+<div>Shown</div>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes.html b/tests/wpt/tests/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes.html
new file mode 100644
index 00000000000..e9d66755c77
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-is-never-matches-negated-first-of-type-when-ancestor-changes.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<meta charset="utf-8">
+<html class="reftest-wait">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1926164">
+<link rel="author" title="Zach Hoffman" href="mailto:zach@zrhoffman.net">
+<link rel="match" href="negated-is-never-matches-negated-first-of-type-when-ancestor-changes-ref.html">
+<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-first-of-type-pseudo">
+<style>
+.some-hidden > :not(:is(.never-matches, :not(:first-of-type))) {
+ display: none;
+}
+.to-show {
+ color: green;
+}
+.to-hide {
+ color: red;
+}
+</style>
+<div id="ancestor">
+ <div class="to-hide">Hidden</div>
+ <div class="to-show">Shown</div>
+</div>
+<script>
+document.documentElement.offsetTop;
+(async () => {
+ for (let i = 0; i < 10; i++) {
+ await new Promise(r => requestAnimationFrame(r));
+ }
+ ancestor.classList.add("some-hidden");
+ document.documentElement.classList.remove('reftest-wait');
+})();
+</script>
+</html>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes-ref.html b/tests/wpt/tests/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes-ref.html
new file mode 100644
index 00000000000..2ddb130e05f
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes-ref.html
@@ -0,0 +1,8 @@
+<!doctype html>
+<meta charset="utf-8">
+<style>
+div {
+ color: green;
+}
+</style>
+<div>Shown</div>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes.html b/tests/wpt/tests/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes.html
new file mode 100644
index 00000000000..7a2c0f20222
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-is-never-matches-negated-last-of-type-when-ancestor-changes.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<meta charset="utf-8">
+<html class="reftest-wait">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1926164">
+<link rel="author" title="Zach Hoffman" href="mailto:zach@zrhoffman.net">
+<link rel="match" href="negated-is-never-matches-negated-last-of-type-when-ancestor-changes-ref.html">
+<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-last-of-type-pseudo">
+<style>
+.some-hidden > :not(:is(.never-matches, :not(:last-of-type))) {
+ display: none;
+}
+.to-show {
+ color: green;
+}
+.to-hide {
+ color: red;
+}
+</style>
+<div id="ancestor">
+ <div class="to-show">Shown</div>
+ <div class="to-hide">Hidden</div>
+</div>
+<script>
+document.documentElement.offsetTop;
+(async () => {
+ for (let i = 0; i < 10; i++) {
+ await new Promise(r => requestAnimationFrame(r));
+ }
+ ancestor.classList.add("some-hidden");
+ document.documentElement.classList.remove('reftest-wait');
+})();
+</script>
+</html>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes-ref.html b/tests/wpt/tests/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes-ref.html
new file mode 100644
index 00000000000..2ddb130e05f
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes-ref.html
@@ -0,0 +1,8 @@
+<!doctype html>
+<meta charset="utf-8">
+<style>
+div {
+ color: green;
+}
+</style>
+<div>Shown</div>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes.html b/tests/wpt/tests/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes.html
new file mode 100644
index 00000000000..7e5376fc31f
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-negated-first-of-type-when-ancestor-changes.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<meta charset="utf-8">
+<html class="reftest-wait">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1926164">
+<link rel="author" title="Zach Hoffman" href="mailto:zach@zrhoffman.net">
+<link rel="author" title="David Shin" href="mailto:dshin@mozilla.com">
+<link rel="match" href="negated-negated-first-of-type-when-ancestor-changes-ref.html">
+<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-first-of-type-pseudo">
+<style>
+.some-hidden > :not(:not(:first-of-type)) {
+ display: none;
+}
+.to-show {
+ color: green;
+}
+.to-hide {
+ color: red;
+}
+</style>
+<div id="ancestor">
+ <div class="to-hide">Hidden</div>
+ <div class="to-show">Shown</div>
+</div>
+<script>
+document.documentElement.offsetTop;
+(async () => {
+ for (let i = 0; i < 10; i++) {
+ await new Promise(r => requestAnimationFrame(r));
+ }
+ ancestor.classList.add("some-hidden");
+ document.documentElement.classList.remove('reftest-wait');
+})();
+</script>
+</html>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes-ref.html b/tests/wpt/tests/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes-ref.html
new file mode 100644
index 00000000000..2ddb130e05f
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes-ref.html
@@ -0,0 +1,8 @@
+<!doctype html>
+<meta charset="utf-8">
+<style>
+div {
+ color: green;
+}
+</style>
+<div>Shown</div>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes.html b/tests/wpt/tests/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes.html
new file mode 100644
index 00000000000..67d35f94dfd
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-negated-last-of-type-when-ancestor-changes.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<meta charset="utf-8">
+<html class="reftest-wait">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1926164">
+<link rel="author" title="Zach Hoffman" href="mailto:zach@zrhoffman.net">
+<link rel="author" title="David Shin" href="mailto:dshin@mozilla.com">
+<link rel="match" href="negated-negated-last-of-type-when-ancestor-changes-ref.html">
+<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-last-of-type-pseudo">
+<style>
+.some-hidden > :not(:not(:last-of-type)) {
+ display: none;
+}
+.to-show {
+ color: green;
+}
+.to-hide {
+ color: red;
+}
+</style>
+<div id="ancestor">
+ <div class="to-show">Shown</div>
+ <div class="to-hide">Hidden</div>
+</div>
+<script>
+document.documentElement.offsetTop;
+(async () => {
+ for (let i = 0; i < 10; i++) {
+ await new Promise(r => requestAnimationFrame(r));
+ }
+ ancestor.classList.add("some-hidden");
+ document.documentElement.classList.remove('reftest-wait');
+})();
+</script>
+</html>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-never-matches-negated-first-of-type-when-ancestor-changes-ref.html b/tests/wpt/tests/css/selectors/invalidation/negated-never-matches-negated-first-of-type-when-ancestor-changes-ref.html
new file mode 100644
index 00000000000..cadbabc7c5a
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-never-matches-negated-first-of-type-when-ancestor-changes-ref.html
@@ -0,0 +1,2 @@
+<!doctype html>
+<meta charset="utf-8">
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-never-matches-negated-first-of-type-when-ancestor-changes.html b/tests/wpt/tests/css/selectors/invalidation/negated-never-matches-negated-first-of-type-when-ancestor-changes.html
new file mode 100644
index 00000000000..c3064f6726d
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-never-matches-negated-first-of-type-when-ancestor-changes.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset="utf-8">
+<html class="reftest-wait">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1926164">
+<link rel="author" title="Zach Hoffman" href="mailto:zach@zrhoffman.net">
+<link rel="match" href="negated-never-matches-negated-first-of-type-when-ancestor-changes-ref.html">
+<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-first-of-type-pseudo">
+<style>
+.some-hidden > :not(.never-matches:not(:first-of-type)) {
+ display: none;
+}
+.to-hide {
+ color: red;
+}
+</style>
+<div id="ancestor">
+ <div class="to-hide">Hidden</div>
+ <div class="to-hide">Hidden</div>
+</div>
+<script>
+document.documentElement.offsetTop;
+(async () => {
+ for (let i = 0; i < 10; i++) {
+ await new Promise(r => requestAnimationFrame(r));
+ }
+ ancestor.classList.add("some-hidden");
+ document.documentElement.classList.remove('reftest-wait');
+})();
+</script>
+</html>
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-never-matches-negated-last-of-type-when-ancestor-changes-ref.html b/tests/wpt/tests/css/selectors/invalidation/negated-never-matches-negated-last-of-type-when-ancestor-changes-ref.html
new file mode 100644
index 00000000000..cadbabc7c5a
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-never-matches-negated-last-of-type-when-ancestor-changes-ref.html
@@ -0,0 +1,2 @@
+<!doctype html>
+<meta charset="utf-8">
diff --git a/tests/wpt/tests/css/selectors/invalidation/negated-never-matches-negated-last-of-type-when-ancestor-changes.html b/tests/wpt/tests/css/selectors/invalidation/negated-never-matches-negated-last-of-type-when-ancestor-changes.html
new file mode 100644
index 00000000000..9cdd0e4f407
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/negated-never-matches-negated-last-of-type-when-ancestor-changes.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset="utf-8">
+<html class="reftest-wait">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1926164">
+<link rel="author" title="Zach Hoffman" href="mailto:zach@zrhoffman.net">
+<link rel="match" href="negated-never-matches-negated-last-of-type-when-ancestor-changes-ref.html">
+<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-last-of-type-pseudo">
+<style>
+.some-hidden > :not(.never-matches:not(:last-of-type)) {
+ display: none;
+}
+.to-hide {
+ color: red;
+}
+</style>
+<div id="ancestor">
+ <div class="to-hide">Hidden</div>
+ <div class="to-hide">Hidden</div>
+</div>
+<script>
+document.documentElement.offsetTop;
+(async () => {
+ for (let i = 0; i < 10; i++) {
+ await new Promise(r => requestAnimationFrame(r));
+ }
+ ancestor.classList.add("some-hidden");
+ document.documentElement.classList.remove('reftest-wait');
+})();
+</script>
+</html>
diff --git a/tests/wpt/tests/custom-elements/ElementInternals-accessibility.html b/tests/wpt/tests/custom-elements/ElementInternals-accessibility.html
index 3b04f257dea..20861e5cfd1 100644
--- a/tests/wpt/tests/custom-elements/ElementInternals-accessibility.html
+++ b/tests/wpt/tests/custom-elements/ElementInternals-accessibility.html
@@ -34,12 +34,12 @@ const properties = [
"ariaChecked",
"ariaColCount",
"ariaColIndex",
- "ariaColIndexText",
+ // "ariaColIndexText", // tentative -> ElementInternals-accessibility.tentative.html
"ariaColSpan",
"ariaControlsElements",
"ariaCurrent",
"ariaDescribedByElements",
- "ariaDescription",
+ // "ariaDescription", // tentative -> ElementInternals-accessibility.tentative.html
"ariaDetailsElements",
"ariaDisabled",
"ariaErrorMessageElements",
@@ -67,7 +67,7 @@ const properties = [
"ariaRoleDescription",
"ariaRowCount",
"ariaRowIndex",
- "ariaRowIndexText",
+ // "ariaRowIndexText", // tentative -> ElementInternals-accessibility.tentative.html
"ariaRowSpan",
"ariaSelected",
"ariaSetSize",
diff --git a/tests/wpt/tests/custom-elements/ElementInternals-accessibility.tentative.html b/tests/wpt/tests/custom-elements/ElementInternals-accessibility.tentative.html
new file mode 100644
index 00000000000..2bab6bedfd2
--- /dev/null
+++ b/tests/wpt/tests/custom-elements/ElementInternals-accessibility.tentative.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+class TestElement extends HTMLElement {
+ constructor() {
+ super();
+ this._internals = this.attachInternals();
+ }
+
+ get internals() {
+ return this._internals;
+ }
+
+ set internals(val) {
+ throw "Can't set internals!";
+ }
+}
+customElements.define("test-element", TestElement);
+</script>
+
+<test-element id= "testElement"></test-element>
+
+<script>
+const element = document.getElementById("testElement");
+
+
+// tentative properties
+const properties = [
+ "ariaColIndexText",
+ "ariaDescription",
+ "ariaRowIndexText",
+];
+
+for (const property of properties) {
+ test(() => {
+ assert_inherits(element.internals, property);
+ }, property + " is defined in ElementInternals");
+}
+
+</script>
diff --git a/tests/wpt/tests/custom-elements/reactions/AriaMixin-string-attributes.html b/tests/wpt/tests/custom-elements/reactions/AriaMixin-string-attributes.html
index c058084ab28..0b32326f5a4 100644
--- a/tests/wpt/tests/custom-elements/reactions/AriaMixin-string-attributes.html
+++ b/tests/wpt/tests/custom-elements/reactions/AriaMixin-string-attributes.html
@@ -15,7 +15,10 @@
<div id="log"></div>
<div id="container"></div>
<script>
-testReflectAttribute('role', 'role', 'foo', 'bar', 'role on Element');
+
+// tentative -> AriaMixin-string-attributes.tentative.html
+// testReflectAttribute('role', 'role', 'foo', 'bar', 'role on Element');
+
testReflectAttribute('ariaAtomic', 'aria-atomic', 'foo', 'bar', 'ariaAtomic on Element');
testReflectAttribute('ariaAutoComplete', 'aria-autocomplete', 'foo', 'bar', 'ariaAutoComplete on Element');
testReflectAttribute('ariaBrailleLabel', 'aria-braillelabel', 'foo', 'bar', 'ariaBrailleLabel on Element');
@@ -24,10 +27,16 @@ testReflectAttribute('ariaBusy', 'aria-busy', 'foo', 'bar', 'ariaBusy on Element
testReflectAttribute('ariaChecked', 'aria-checked', 'foo', 'bar', 'ariaChecked on Element');
testReflectAttribute('ariaColCount', 'aria-colcount', 'foo', 'bar', 'ariaColCount on Element');
testReflectAttribute('ariaColIndex', 'aria-colindex', 'foo', 'bar', 'ariaColIndex on Element');
-testReflectAttribute('ariaColIndexText', 'aria-colindextext', 'foo', 'bar', 'ariaColIndexText on Element');
+
+// tentative -> AriaMixin-string-attributes.tentative.html
+// testReflectAttribute('ariaColIndexText', 'aria-colindextext', 'foo', 'bar', 'ariaColIndexText on Element');
+
testReflectAttribute('ariaColSpan', 'aria-colspan', 'foo', 'bar', 'ariaColSpan on Element');
testReflectAttribute('ariaCurrent', 'aria-current', 'foo', 'bar', 'ariaCurrent on Element');
-testReflectAttribute('ariaDescription', 'aria-description', 'foo', 'bar', 'ariaDescription on Element');
+
+// tentative -> AriaMixin-string-attributes.tentative.html
+// testReflectAttribute('ariaDescription', 'aria-description', 'foo', 'bar', 'ariaDescription on Element');
+
testReflectAttribute('ariaDisabled', 'aria-disabled', 'foo', 'bar', 'ariaDisabled on Element');
testReflectAttribute('ariaExpanded', 'aria-expanded', 'foo', 'bar', 'ariaExpanded on Element');
testReflectAttribute('ariaHasPopup', 'aria-haspopup', 'foo', 'bar', 'ariaHasPopup on Element');
@@ -50,7 +59,10 @@ testReflectAttribute('ariaRequired', 'aria-required', 'foo', 'bar', 'ariaRequire
testReflectAttribute('ariaRoleDescription', 'aria-roledescription', 'foo', 'bar', 'ariaRoleDescription on Element');
testReflectAttribute('ariaRowCount', 'aria-rowcount', 'foo', 'bar', 'ariaRowCount on Element');
testReflectAttribute('ariaRowIndex', 'aria-rowindex', 'foo', 'bar', 'ariaRowIndex on Element');
-testReflectAttribute('ariaRowIndexText', 'aria-rowindextext', 'foo', 'bar', 'ariaRowIndexText on Element');
+
+// tentative -> AriaMixin-string-attributes.tentative.html
+// testReflectAttribute('ariaRowIndexText', 'aria-rowindextext', 'foo', 'bar', 'ariaRowIndexText on Element');
+
testReflectAttribute('ariaRowSpan', 'aria-rowspan', 'foo', 'bar', 'ariaRowSpan on Element');
testReflectAttribute('ariaSelected', 'aria-selected', 'foo', 'bar', 'ariaSelected on Element');
testReflectAttribute('ariaSetSize', 'aria-setsize', 'foo', 'bar', 'ariaSetSize on Element');
diff --git a/tests/wpt/tests/custom-elements/reactions/AriaMixin-string-attributes.tentative.html b/tests/wpt/tests/custom-elements/reactions/AriaMixin-string-attributes.tentative.html
new file mode 100644
index 00000000000..8c81adb30c6
--- /dev/null
+++ b/tests/wpt/tests/custom-elements/reactions/AriaMixin-string-attributes.tentative.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Custom Elements: CEReactions on Element interface</title>
+<meta name="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org">
+<meta name="assert" content="String attributes of AriaAttributes interface must have CEReactions">
+<meta name="help" content="https://dom.spec.whatwg.org/#element">
+<meta name="help" content="https://w3c.github.io/DOM-Parsing/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../resources/custom-elements-helpers.js"></script>
+<script src="./resources/reactions.js"></script>
+</head>
+<body>
+<div id="log"></div>
+<div id="container"></div>
+
+// tentative properties that were added mid-year... merge back in after Interop 2024 completes
+<script>
+testReflectAttribute('role', 'role', 'foo', 'bar', 'role on Element');
+testReflectAttribute('ariaColIndexText', 'aria-colindextext', 'foo', 'bar', 'ariaColIndexText on Element');
+testReflectAttribute('ariaDescription', 'aria-description', 'foo', 'bar', 'ariaDescription on Element');
+testReflectAttribute('ariaRowIndexText', 'aria-rowindextext', 'foo', 'bar', 'ariaRowIndexText on Element');
+</script>
+
+</body>
+</html>
diff --git a/tests/wpt/tests/docs/running-tests/webkitgtk_minibrowser.md b/tests/wpt/tests/docs/running-tests/webkitgtk_minibrowser.md
index 7aac81e5fce..5dd047536ed 100644
--- a/tests/wpt/tests/docs/running-tests/webkitgtk_minibrowser.md
+++ b/tests/wpt/tests/docs/running-tests/webkitgtk_minibrowser.md
@@ -12,9 +12,11 @@ The WebKitGTK MiniBrowser is not installed on the default binary path.
The `wpt` script will try to automatically locate it, but if you need
to run it manually you can find it on any of this paths:
-* Fedora: `/usr/libexec/webkit2gtk-4.0/MiniBrowser`
-* Debian or Ubuntu: `/usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/MiniBrowser`
- * Note: if the machine architecture is not `x86_64`, then it will be located
- inside:
- `/usr/lib/${TRIPLET}/webkit2gtk-4.0/MiniBrowser`
- where `TRIPLET=$(gcc -dumpmachine)`
+* Fedora: `/usr/libexec/webkit2gtk-${VERSION}/MiniBrowser`
+* Debian or Ubuntu: `/usr/lib/x86_64-linux-gnu/webkit2gtk-${VERSION}/MiniBrowser`
+* Note:
+ * `VERSION` is `4.0` or `4.1`.
+ * If not Fedora and the machine architecture is not `x86_64`, then it will
+ be located inside:
+ `/usr/lib/${TRIPLET}/webkit2gtk-${VERSION}/MiniBrowser`
+ where `TRIPLET=$(gcc -dumpmachine)`
diff --git a/tests/wpt/tests/dom/abort/AbortSignal.any.js b/tests/wpt/tests/dom/abort/AbortSignal.any.js
index 3bbdc11a92f..c2fc88d3b4f 100644
--- a/tests/wpt/tests/dom/abort/AbortSignal.any.js
+++ b/tests/wpt/tests/dom/abort/AbortSignal.any.js
@@ -1,3 +1,5 @@
+// META: global=window,dedicatedworker,shadowrealm
+
test(t => {
const signal = AbortSignal.abort();
assert_true(signal instanceof AbortSignal, "returned object is an AbortSignal");
@@ -10,31 +12,3 @@ async_test(t => {
s.onabort = t.unreached_func("abort event handler called");
t.step_timeout(() => { t.done(); }, 2000);
}, "signal returned by AbortSignal.abort() should not fire abort event");
-
-test(t => {
- const signal = AbortSignal.timeout(0);
- assert_true(signal instanceof AbortSignal, "returned object is an AbortSignal");
- assert_false(signal.aborted, "returned signal is not already aborted");
-}, "AbortSignal.timeout() returns a non-aborted signal");
-
-async_test(t => {
- const signal = AbortSignal.timeout(5);
- signal.onabort = t.step_func_done(() => {
- assert_true(signal.aborted, "signal is aborted");
- assert_true(signal.reason instanceof DOMException, "signal.reason is a DOMException");
- assert_equals(signal.reason.name, "TimeoutError", "signal.reason is a TimeoutError");
- });
-}, "Signal returned by AbortSignal.timeout() times out");
-
-async_test(t => {
- let result = "";
- for (const value of ["1", "2", "3"]) {
- const signal = AbortSignal.timeout(5);
- signal.onabort = t.step_func(() => { result += value; });
- }
-
- const signal = AbortSignal.timeout(5);
- signal.onabort = t.step_func_done(() => {
- assert_equals(result, "123", "Timeout order should be 123");
- });
-}, "AbortSignal timeouts fire in order");
diff --git a/tests/wpt/tests/dom/abort/event.any.js b/tests/wpt/tests/dom/abort/event.any.js
index 34af8ee5c56..afc003b94e6 100644
--- a/tests/wpt/tests/dom/abort/event.any.js
+++ b/tests/wpt/tests/dom/abort/event.any.js
@@ -1,3 +1,5 @@
+// META: global=window,dedicatedworker,shadowrealm
+
test(t => {
const c = new AbortController(),
s = c.signal;
diff --git a/tests/wpt/tests/dom/abort/timeout-shadowrealm.any.js b/tests/wpt/tests/dom/abort/timeout-shadowrealm.any.js
new file mode 100644
index 00000000000..c87b047c221
--- /dev/null
+++ b/tests/wpt/tests/dom/abort/timeout-shadowrealm.any.js
@@ -0,0 +1,5 @@
+// META: global=shadowrealm
+
+test(t => {
+ assert_not_own_property(AbortSignal, "timeout", "AbortSignal does not have a 'timeout' property");
+}, "AbortSignal.timeout() is not exposed in ShadowRealm");
diff --git a/tests/wpt/tests/dom/abort/timeout.any.js b/tests/wpt/tests/dom/abort/timeout.any.js
new file mode 100644
index 00000000000..61b595e717c
--- /dev/null
+++ b/tests/wpt/tests/dom/abort/timeout.any.js
@@ -0,0 +1,29 @@
+// META: global=window,dedicatedworker
+
+test(t => {
+ const signal = AbortSignal.timeout(0);
+ assert_true(signal instanceof AbortSignal, "returned object is an AbortSignal");
+ assert_false(signal.aborted, "returned signal is not already aborted");
+}, "AbortSignal.timeout() returns a non-aborted signal");
+
+async_test(t => {
+ const signal = AbortSignal.timeout(5);
+ signal.onabort = t.step_func_done(() => {
+ assert_true(signal.aborted, "signal is aborted");
+ assert_true(signal.reason instanceof DOMException, "signal.reason is a DOMException");
+ assert_equals(signal.reason.name, "TimeoutError", "signal.reason is a TimeoutError");
+ });
+}, "Signal returned by AbortSignal.timeout() times out");
+
+async_test(t => {
+ let result = "";
+ for (const value of ["1", "2", "3"]) {
+ const signal = AbortSignal.timeout(5);
+ signal.onabort = t.step_func(() => { result += value; });
+ }
+
+ const signal = AbortSignal.timeout(5);
+ signal.onabort = t.step_func_done(() => {
+ assert_equals(result, "123", "Timeout order should be 123");
+ });
+}, "AbortSignal timeouts fire in order");
diff --git a/tests/wpt/tests/dom/nodes/ParentNode-append.html b/tests/wpt/tests/dom/nodes/ParentNode-append.html
index 4e101f73a25..928c184b8d5 100644
--- a/tests/wpt/tests/dom/nodes/ParentNode-append.html
+++ b/tests/wpt/tests/dom/nodes/ParentNode-append.html
@@ -59,6 +59,16 @@ function test_append(node, nodeName) {
assert_equals(parent.childNodes[1], x);
assert_equals(parent.childNodes[2].textContent, 'text');
}, nodeName + '.append() with one element and text as argument, on a parent having a child.');
+
+ test(function() {
+ const parent = node.cloneNode();
+ const x = document.createElement('x');
+ const y = document.createElement('y');
+ parent.append(x, y, x);
+ assert_equals(parent.childNodes.length, 2);
+ assert_equals(parent.childNodes[0], y);
+ assert_equals(parent.childNodes[1], x);
+ }, nodeName + '.append() with the same element twice.');
}
test_append(document.createElement('div'), 'Element');
diff --git a/tests/wpt/tests/dom/nodes/moveBefore/tentative/focus-within.html b/tests/wpt/tests/dom/nodes/moveBefore/tentative/focus-within.html
new file mode 100644
index 00000000000..18d8c93b998
--- /dev/null
+++ b/tests/wpt/tests/dom/nodes/moveBefore/tentative/focus-within.html
@@ -0,0 +1,81 @@
+<!DOCTYPE html>
+<title>moveBefore should handle focus bubbling correctly</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+<section id="old_parent">
+<button id="button" tabindex="1">Button</button>
+</section>
+<section id="new_parent">
+</section>
+<section id="inert_parent" inert>
+</section>
+<section id="inert_when_not_empty_parent">
+</section>
+
+<style>
+ #inert_when_not_empty_parent:has(button) {
+ display: none;
+ }
+</style>
+
+<script>
+function assert_focus_within(expected) {
+ const element_to_string = e => e.id || e.nodeName;
+ assert_array_equals(
+ Array.from(document.querySelectorAll(":focus-within"), element_to_string),
+ expected.map(element_to_string));
+}
+
+test(t => {
+ const old_parent = document.querySelector("#old_parent");
+ const button = document.querySelector("#button");
+ t.add_cleanup(() => old_parent.append(button));
+ button.focus();
+ assert_focus_within([document.documentElement, document.body, old_parent, button]);
+ new_parent.moveBefore(button, null);
+ assert_focus_within([document.documentElement, document.body, new_parent, button]);
+}, "focus-within should be updated when reparenting focused element directly");
+
+test(t => {
+ const old_parent = document.querySelector("#old_parent");
+ const button = document.querySelector("#button");
+ t.add_cleanup(() => document.body.append(old_parent));
+ button.focus();
+ new_parent.moveBefore(old_parent, null);
+ assert_focus_within([document.documentElement, document.body, new_parent, old_parent, button]);
+}, "focus-within should be updated when reparenting an element that has focus within");
+
+test(t => {
+ const old_parent = document.querySelector("#old_parent");
+ const button = document.querySelector("#button");
+ t.add_cleanup(() => old_parent.append(button));
+ button.focus();
+ old_parent.moveBefore(button, null);
+ assert_focus_within([document.documentElement, document.body, old_parent, button]);
+}, "focus-within should remain the same when moving to the same parent");
+
+promise_test(async t => {
+ const old_parent = document.querySelector("#old_parent");
+ const inert_parent= document.querySelector("#inert_parent");
+ const button = document.querySelector("#button");
+ t.add_cleanup(() => old_parent.append(button));
+ button.focus();
+ inert_parent.moveBefore(button, null);
+ assert_focus_within([document.documentElement, document.body, inert_parent, button]);
+ await new Promise(resolve => requestAnimationFrame(() => requestAnimationFrame(() => resolve())));
+ assert_focus_within([]);
+}, ":focus-within should be eventually up to date when moving to an inert subtree");
+
+promise_test(async t => {
+ const old_parent = document.querySelector("#old_parent");
+ const inert_when_not_empty_parent = document.querySelector("#inert_when_not_empty_parent");
+ const button = document.querySelector("#button");
+ t.add_cleanup(() => old_parent.append(button));
+ button.focus();
+ inert_when_not_empty_parent.moveBefore(button, null);
+ assert_focus_within([document.documentElement, document.body, inert_when_not_empty_parent, button]);
+ await new Promise(resolve => requestAnimationFrame(() => requestAnimationFrame(() => resolve())));
+ assert_focus_within([]);
+}, ":focus-within should be eventually up to date when moving to a subtree that would become inert via style");
+</script>
diff --git a/tests/wpt/tests/dom/nodes/moveBefore/tentative/selection-preserve.html b/tests/wpt/tests/dom/nodes/moveBefore/tentative/selection-preserve.html
index 04b81c9a056..8739209b620 100644
--- a/tests/wpt/tests/dom/nodes/moveBefore/tentative/selection-preserve.html
+++ b/tests/wpt/tests/dom/nodes/moveBefore/tentative/selection-preserve.html
@@ -7,28 +7,155 @@
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
</head>
+
<body>
-<div id=old_parent><span id=text>Text</span></div>
-<div id="new_parent"></div>
</body>
+
<script>
- 'use strict';
-
- promise_test(async t => {
- const text = document.querySelector("#text");
- const old_parent = document.querySelector("#old_parent");
- const new_parent = document.querySelector("#new_parent");
- const event_watcher = new EventWatcher(t, text, ["mouseup"]);
- const actions_promise = new test_driver.Actions()
- .pointerMove(0, 0, {origin: text})
- .pointerDown()
- .pointerMove(text.clientWidth, text.clientHeight, {origin: text})
- .pointerUp()
- .send();
- await event_watcher.wait_for(["mouseup"]);
- assert_equals(getSelection().anchorNode.textContent, "Text");
- new_parent.moveBefore(text, null);
- assert_equals(getSelection().anchorNode.textContent, "Text");
- }, "moveBefore should not reset text selection");
+'use strict';
+
+async function select_range(t, anchorNode, focusNode) {
+ await new test_driver.Actions()
+ .pointerMove(0, 0, {origin: anchorNode})
+ .pointerDown()
+ .pointerMove(focusNode.clientWidth, focusNode.clientHeight, {origin: focusNode})
+ .pointerUp()
+ .send();
+}
+
+promise_test(async t => {
+ document.body.innerHTML = `
+ <div id=old_parent>
+ <span>This text does not move</span>
+ <span id=text>Text</span>
+ </div>
+ <div id=new_parent></div>`;
+ getSelection().removeAllRanges();
+
+ await select_range(t, text, text);
+
+ // Don't first verify that `getSelection().anchorNode` is the expected
+ // `<span id=text>` node that was selected above. If we did that, then at
+ // least in Chromium browsers, this would generate a new Range capturing the
+ // visual selection, which would be cached to the internal `DOMSelection`
+ // object. Then the move would have two effects:
+ //
+ // 1. The internal visual selection would change as a result of
+ // `moveBefore()`
+ // 2. But the Range representing the visual selection would remain
+ // unchanged, since it was cached to the `DOMSelection` object and not
+ // updated during `moveBefore()`. This means if (a) the visual selection,
+ // and (b) the "API-returned" selection Range are out of sync after
+ // `moveBefore()`, it would be impossible to detect the discrepancy
+ // without a reftest.
+ //
+ // So instead, we will just dive right into `moveBefore()`, and then compute
+ // the selection range *after*, which will accurately represent the internal
+ // visual selection that the user sees, and we can run our assertions on it.
+ new_parent.moveBefore(text, null);
+ assert_equals(getSelection().anchorNode, text.firstChild);
+}, "moveBefore should not reset selection with preceding text");
+
+promise_test(async t => {
+ document.body.innerHTML = `
+ <div id=old_parent>
+ <span>This text does not move</span>
+ <span id=text>Text</span>
+ <span>This text ALSO does not move</span>
+ </div>
+ <div id=new_parent></div>`;
+ getSelection().removeAllRanges();
+
+ await select_range(t, text, text);
+
+ new_parent.moveBefore(text, null);
+ assert_equals(getSelection().anchorNode, text.firstChild);
+}, "moveBefore should not reset selection with preceding and following text");
+
+const kHTML = `
+ <div id=grandparentDiv>
+ <span id=grandparentParagraph>Grandparent paragraph</span>
+ <div id=parentDiv>
+ <span id=parentParagraph>Parent paragraph</span>
+ <div id=childDiv>
+ <span id=childParagraph1>Child paragraph one</span>
+ <span id=childParagraph2>Paragraph two</span>
+ </div>
+ </div>
+ </div>
+`;
+
+// Selection spans parent->child.
+promise_test(async t => {
+ document.body.innerHTML = kHTML;
+ getSelection().removeAllRanges();
+ await select_range(t, parentParagraph, childParagraph1);
+
+ grandparentDiv.moveBefore(parentDiv, grandparentParagraph);
+ assert_equals(getSelection().anchorNode, parentParagraph.firstChild);
+ assert_equals(getSelection().focusNode, childParagraph1.firstChild);
+}, "moveBefore should not reset selection that enters a subtree, when the " +
+ "whole selection is moved");
+
+// Selection anchor node is moved upwards in the DOM, to suddenly intersect more
+// nodes.
+promise_test(async t => {
+ document.body.innerHTML = kHTML;
+ getSelection().removeAllRanges();
+ await select_range(t, parentParagraph, childParagraph1);
+
+ grandparentDiv.moveBefore(parentParagraph, grandparentParagraph);
+ assert_equals(getSelection().anchorNode, parentParagraph.firstChild);
+ assert_equals(getSelection().focusNode, childParagraph1.firstChild);
+ assert_true(getSelection().getRangeAt(0).intersectsNode(grandparentParagraph));
+}, "moveBefore anchor node moved up to expand selection and absorb nodes");
+
+// Intersecting nodes are moved *out* of the selection.
+promise_test(async t => {
+ document.body.innerHTML = kHTML;
+ getSelection().removeAllRanges();
+ await select_range(t, grandparentParagraph, childParagraph2);
+
+ grandparentDiv.moveBefore(childParagraph1, grandparentParagraph);
+ assert_equals(getSelection().anchorNode, grandparentParagraph.firstChild);
+ assert_equals(getSelection().focusNode, childParagraph2.firstChild);
+ assert_false(getSelection().getRangeAt(0).intersectsNode(childParagraph1));
+}, "moveBefore move intersecting nodes out of a selection");
+
+// Selection focus node is moved upwards in the DOM, shrinking the selection and
+// excluding once-intersecting nodes.
+promise_test(async t => {
+ document.body.innerHTML = kHTML;
+ getSelection().removeAllRanges();
+ await select_range(t, grandparentParagraph, childParagraph2);
+
+ parentDiv.moveBefore(childDiv, parentParagraph);
+ assert_equals(getSelection().anchorNode, grandparentParagraph.firstChild);
+ assert_equals(getSelection().focusNode, childParagraph2.firstChild);
+ assert_false(getSelection().getRangeAt(0).intersectsNode(parentParagraph));
+}, "moveBefore focus node moved up to shrink selection and exclude nodes");
+
+// Selection focus node is moved upwards in the DOM, shrinking the selection and
+// excluding once-intersecting nodes.
+promise_test(async t => {
+ document.body.innerHTML = `
+ <ul id=list>
+ <li id=i1>One</li>
+ <li id=i2>Two</li>
+ <li id=i3>Three</li>
+ <li id=i4>Four</li>
+ </ul>
+ `;
+ getSelection().removeAllRanges();
+ await select_range(t, i3, i4);
+
+ // Move the last list item to the position before the first. This pulls the
+ // range upwards, suddenly intersecting both `i2` and `i3`.
+ list.moveBefore(i4, i1);
+ assert_equals(getSelection().focusNode, i4.firstChild);
+ assert_equals(getSelection().anchorNode, i3.firstChild);
+ assert_true(getSelection().getRangeAt(0).intersectsNode(i2));
+ assert_true(getSelection().getRangeAt(0).intersectsNode(i3));
+}, "moveBefore selection is preserved when directionality changes");
</script>
-</html> \ No newline at end of file
+</html>
diff --git a/tests/wpt/tests/editing/plaintext-only/insertHTML.html b/tests/wpt/tests/editing/plaintext-only/insertHTML.html
index 00bd0df1d52..efc2609828c 100644
--- a/tests/wpt/tests/editing/plaintext-only/insertHTML.html
+++ b/tests/wpt/tests/editing/plaintext-only/insertHTML.html
@@ -43,7 +43,7 @@ addEventListener("load", () => {
insertHTML: "<pre>1st line\n2nd line</pre>",
expected: useBR
? "1st line<br>2nd line"
- : ["1st line<br>2nd line", "1st line\n2nd line"],
+ : "1st line\n2nd line",
},
{
// text should be inserted into the <b>
@@ -79,20 +79,19 @@ addEventListener("load", () => {
// inserting one paragraph should cause inserting only its contents.
// (but it's okay other serialized text.)
insertHTML: "<div>abc<br>def</div>",
- expected: useBR ? "abc<br>def" : ["abc<br>def", "abc\ndef"],
+ expected: useBR ? "abc<br>def" : "abc\ndef",
},
{
// inserting 2 or more paragraphs should be handled as multiple lines
insertHTML: "<div>abc</div><div>def</div>",
- expected: useBR ? "abc<br>def" : ["abc<br>def", "abc\ndef"],
+ expected: useBR ? "abc<br>def" : "abc\ndef",
},
{
// inserting 2 or more paragraphs should be handled as multiple lines
insertHTML: "<div>abc<br>def</div><div>ghi<br>jkl</div>",
expected: useBR
? "abc<br>def<br>ghi<br>jkl"
- : ["abc<br>def<br>ghi<br>jkl",
- "abc\ndef\nghi\njkl"],
+ : "abc\ndef\nghi\njkl",
},
{
// <noscript> content should not be inserted
diff --git a/tests/wpt/tests/editing/plaintext-only/insertLineBreak.html b/tests/wpt/tests/editing/plaintext-only/insertLineBreak.html
index 73ee625dd62..32448ed37e2 100644
--- a/tests/wpt/tests/editing/plaintext-only/insertLineBreak.html
+++ b/tests/wpt/tests/editing/plaintext-only/insertLineBreak.html
@@ -40,11 +40,11 @@ addEventListener("load", () => {
for (const data of [
{
initialInnerHTML: "A[]B",
- expected: useBR ? "A<br>B" : ["A<br>B", "A\nB"],
+ expected: useBR ? "A<br>B" : "A\nB",
},
{
initialInnerHTML: "<p>{}<br></p>",
- expected: useBR ? "<p><br><br></p>" : ["<p><br><br></p>", "<p>\n\n</p>", "<p>\n<br></p>"],
+ expected: useBR ? "<p><br><br></p>" : "<p>\n\n</p>",
},
{
initialInnerHTML: `<p style="white-space:normal">A[]B</p>`,
@@ -64,85 +64,75 @@ addEventListener("load", () => {
},
{
initialInnerHTML: "<ul><li>[]AB</li></ul>",
- expected: useBR ? "<ul><li><br>AB</li></ul>" : ["<ul><li><br>AB</li></ul>", "<ul><li>\nAB</li></ul>"],
+ expected: useBR ? "<ul><li><br>AB</li></ul>" : "<ul><li>\nAB</li></ul>",
},
{
initialInnerHTML: "<ul><li>A[]B</li></ul>",
- expected: useBR ? "<ul><li>A<br>B</li></ul>" : ["<ul><li>A<br>B</li></ul>", "<ul><li>A\nB</li></ul>"],
+ expected: useBR ? "<ul><li>A<br>B</li></ul>" : "<ul><li>A\nB</li></ul>",
},
{
initialInnerHTML: "<ul><li>AB[]</li></ul>",
expected: useBR
? "<ul><li>AB<br><br></li></ul>"
- : ["<ul><li>AB<br><br></li></ul>", "<ul><li>AB\n\n</li></ul>", "<ul><li>AB\n<br></li></ul>"],
+ : "<ul><li>AB\n\n</li></ul>",
},
{
initialInnerHTML: "<dl><dt>[]AB</dt></dl>",
- expected: useBR ? "<dl><dt><br>AB</dt></dl>" : ["<dl><dt><br>AB</dt></dl>", "<dl><dt>\nAB</dt></dl>"],
+ expected: useBR ? "<dl><dt><br>AB</dt></dl>" : "<dl><dt>\nAB</dt></dl>",
},
{
initialInnerHTML: "<dl><dt>A[]B</dt></dl>",
- expected: useBR ? "<dl><dt>A<br>B</dt></dl>" : ["<dl><dt>A<br>B</dt></dl>", "<dl><dt>A\nB</dt></dl>"],
+ expected: useBR ? "<dl><dt>A<br>B</dt></dl>" : "<dl><dt>A\nB</dt></dl>",
},
{
initialInnerHTML: "<dl><dt>AB[]</dt></dl>",
expected: useBR
? "<dl><dt>AB<br><br></dt></dl>"
- : ["<dl><dt>AB<br><br></dt></dl>", "<dl><dt>AB\n\n</dt></dl>", "<dl><dt>AB\n<br></dt></dl>"],
+ : "<dl><dt>AB\n\n</dt></dl>",
},
{
initialInnerHTML: "<dl><dd>[]AB</dd></dl>",
- expected: useBR ? "<dl><dd><br>AB</dd></dl>" : ["<dl><dd><br>AB</dd></dl>", "<dl><dd>\nAB</dd></dl>"],
+ expected: useBR ? "<dl><dd><br>AB</dd></dl>" : "<dl><dd>\nAB</dd></dl>",
},
{
initialInnerHTML: "<dl><dd>A[]B</dd></dl>",
- expected: useBR ? "<dl><dd>A<br>B</dd></dl>" : ["<dl><dd>A<br>B</dd></dl>", "<dl><dd>A\nB</dd></dl>"],
+ expected: useBR ? "<dl><dd>A<br>B</dd></dl>" : "<dl><dd>A\nB</dd></dl>",
},
{
initialInnerHTML: "<dl><dd>AB[]</dd></dl>",
expected: useBR
? "<dl><dd>AB<br><br></dd></dl>"
- : ["<dl><dd>AB<br><br></dd></dl>", "<dl><dd>AB\n\n</dd></dl>", "<dl><dd>AB\n<br></dd></dl>"],
+ : "<dl><dd>AB\n\n</dd></dl>",
},
{
initialInnerHTML: "<table><tbody><tr><td>[]AB</td></tr></tbody></table>",
expected: useBR
? "<table><tbody><tr><td><br>AB</td></tr></tbody></table>"
- : [
- "<table><tbody><tr><td><br>AB<br></td></tr></tbody></table>",
- "<table><tbody><tr><td>\nAB</td></tr></tbody></table>",
- ],
+ : "<table><tbody><tr><td>\nAB</td></tr></tbody></table>",
},
{
initialInnerHTML: "<table><tbody><tr><td>A[]B</td></tr></tbody></table>",
expected: useBR
? "<table><tbody><tr><td>A<br>B</td></tr></tbody></table>"
- : [
- "<table><tbody><tr><td>A<br>B<br></td></tr></tbody></table>",
- "<table><tbody><tr><td>A\nB</td></tr></tbody></table>",
- ],
+ : "<table><tbody><tr><td>A\nB</td></tr></tbody></table>",
},
{
initialInnerHTML: "<table><tbody><tr><td>AB[]</td></tr></tbody></table>",
expected: useBR
? "<table><tbody><tr><td>AB<br><br></td></tr></tbody></table>"
- : [
- "<table><tbody><tr><td>AB<br><br></td></tr></tbody></table>",
- "<table><tbody><tr><td>AB\n\n</td></tr></tbody></table>",
- "<table><tbody><tr><td>AB\n<br></td></tr></tbody></table>",
- ],
+ : "<table><tbody><tr><td>AB\n\n</td></tr></tbody></table>",
},
{
initialInnerHTML: "<h1>[]AB</h1>",
- expected: useBR ? "<h1><br>AB</h1>" : ["<h1><br>AB</h1>", "<h1>\nAB</h1>"],
+ expected: useBR ? "<h1><br>AB</h1>" : "<h1>\nAB</h1>",
},
{
initialInnerHTML: "<h1>A[]B</h1>",
- expected: useBR ? "<h1>A<br>B</h1>" : ["<h1>A<br>B</h1>", "<h1>A\nB</h1>"],
+ expected: useBR ? "<h1>A<br>B</h1>" : "<h1>A\nB</h1>",
},
{
initialInnerHTML: "<h1>AB[]</h1>",
- expected: useBR ? "<h1>AB<br><br></h1>" : ["<h1>AB<br><br></h1>", "<h1>AB\n\n</h1>", "<h1>AB\n<br></h1>"],
+ expected: useBR ? "<h1>AB<br><br></h1>" : "<h1>AB\n\n</h1>",
},
]) {
test(() => {
diff --git a/tests/wpt/tests/editing/plaintext-only/insertParagraph.html b/tests/wpt/tests/editing/plaintext-only/insertParagraph.html
index 429da8d134f..70cbdd1b368 100644
--- a/tests/wpt/tests/editing/plaintext-only/insertParagraph.html
+++ b/tests/wpt/tests/editing/plaintext-only/insertParagraph.html
@@ -36,7 +36,7 @@ addEventListener("load", () => {
for (const data of [
{
initialInnerHTML: "<p>[]AB</p>",
- expected: useBR ? "<p><br></p><p>AB</p>" : ["<p><br></p><p>AB</p>", "<p>\n</p><p>AB</p>"],
+ expected: useBR ? "<p><br></p><p>AB</p>" : "<p>\n</p><p>AB</p>",
},
{
initialInnerHTML: "<p>A[]B</p>",
@@ -44,7 +44,7 @@ addEventListener("load", () => {
},
{
initialInnerHTML: "<p>AB[]</p>",
- expected: useBR ? "<p>AB</p><p><br></p>" : ["<p>AB</p><p><br></p>", "<p>AB</p><p>\n</p>"],
+ expected: useBR ? "<p>AB</p><p><br></p>" : "<p>AB</p><p>\n</p>",
},
{
initialInnerHTML: `<p style="white-space:normal">[]AB</p>`,
@@ -54,28 +54,25 @@ addEventListener("load", () => {
initialInnerHTML: `<p style="white-space:pre">[]AB</p>`,
expected: useBR
? `<p style="white-space:pre"><br></p><p style="white-space:pre">AB</p>`
- : [`<p style="white-space:pre"><br></p><p style="white-space:pre">AB</p>`,
- `<p style="white-space:pre">\n</p><p style="white-space:pre">AB</p>`],
+ : `<p style="white-space:pre">\n</p><p style="white-space:pre">AB</p>`,
},
{
initialInnerHTML: `<p style="white-space:pre-line">[]AB</p>`,
expected: useBR
? `<p style="white-space:pre-line"><br></p><p style="white-space:pre-line">AB</p>`
- : [`<p style="white-space:pre-line"><br></p><p style="white-space:pre-line">AB</p>`,
- `<p style="white-space:pre-line">\n</p><p style="white-space:pre-line">AB</p>`],
+ : `<p style="white-space:pre-line">\n</p><p style="white-space:pre-line">AB</p>`,
},
{
initialInnerHTML: `<p style="white-space:pre-wrap">[]AB</p>`,
expected: useBR
? `<p style="white-space:pre-wrap"><br></p><p style="white-space:pre-wrap">AB</p>`
- : [`<p style="white-space:pre-wrap"><br></p><p style="white-space:pre-wrap">AB</p>`,
- `<p style="white-space:pre-wrap">\n</p><p style="white-space:pre-wrap">AB</p>`],
+ : `<p style="white-space:pre-wrap">\n</p><p style="white-space:pre-wrap">AB</p>`,
},
{
initialInnerHTML: "<ul><li>[]AB</li></ul>",
expected: useBR
? "<ul><li><br></li><li>AB</li></ul>"
- : ["<ul><li><br></li><li>AB</li></ul>", "<ul><li>\n</li><li>AB</li></ul>"],
+ : "<ul><li>\n</li><li>AB</li></ul>",
},
{
initialInnerHTML: "<ul><li>A[]B</li></ul>",
@@ -85,7 +82,7 @@ addEventListener("load", () => {
initialInnerHTML: "<ul><li>AB[]</li></ul>",
expected: useBR
? "<ul><li>AB</li><li><br></li></ul>"
- : ["<ul><li>AB</li><li><br></li></ul>", "<ul><li>AB</li><li>\n</li></ul>"],
+ : "<ul><li>AB</li><li>\n</li></ul>",
},
]) {
test(() => {
diff --git a/tests/wpt/tests/editing/plaintext-only/insertText.html b/tests/wpt/tests/editing/plaintext-only/insertText.html
index 664b9befb8d..4a3ef23bbbd 100644
--- a/tests/wpt/tests/editing/plaintext-only/insertText.html
+++ b/tests/wpt/tests/editing/plaintext-only/insertText.html
@@ -39,7 +39,7 @@ addEventListener("load", () => {
initialInnerHTML: "{}<br>",
insertText: " ",
expected: collapseWhiteSpaces
- ? (useBR ? [" <br>", "&nbsp;"] : [" <br>", " \n", "&nbsp;"])
+ ? (useBR ? [" <br>", "&nbsp;"] : [" \n", "&nbsp;"])
: " ",
},
{
@@ -109,7 +109,7 @@ addEventListener("load", () => {
// the empty paragraph should be wrapped in the <b>.
expected: useBR
? "<p><b><br></b></p><p><b>aAB</b></p>"
- : ["<p><b><br></b></p><p><b>aAB</b></p>", "<p><b>\n</b></p><p><b>aAB</b></p>"],
+ : "<p><b>\n</b></p><p><b>aAB</b></p>",
},
{
initialInnerHTML: "<p><b>A[]B</b></p>",
@@ -134,7 +134,7 @@ addEventListener("load", () => {
insertText: "a",
expected: useBR
? "<p><b><br></b></p><p><b>a</b></p>"
- : ["<p><b><br></b></p><p><b>a</b></p>", "<p><b>\n</b></p><p><b>a</b></p>"],
+ : "<p><b>\n</b></p><p><b>a</b></p>",
},
{
initialInnerHTML: "<p><b>[]AB</b></p>",
@@ -143,7 +143,7 @@ addEventListener("load", () => {
insertText: "a",
expected: useBR
? "<p><b><br>aAB</b></p>"
- : ["<p><b><br>aAB</b></p>", "<p><b>\naAB</b></p>"],
+ : "<p><b>\naAB</b></p>",
},
{
initialInnerHTML: "<p><b>A[]B</b></p>",
@@ -152,7 +152,7 @@ addEventListener("load", () => {
insertText: "a",
expected: useBR
? "<p><b>A<br>aB</b></p>"
- : ["<p><b>A<br>aB</b></p>", "<p><b>A\naB</b></p>"],
+ : "<p><b>A\naB</b></p>",
},
{
initialInnerHTML: "<p><b>AB[]</b></p>",
@@ -163,7 +163,7 @@ addEventListener("load", () => {
// the placeholder line break (if there is) should be in <b>.
expected: useBR
? "<p><b>AB<br>a</b></p>"
- : ["<p><b>AB<br>a</b></p>", "<p><b>AB\na</b></p>"],
+ : "<p><b>AB\na</b></p>",
},
{
initialInnerHTML: "<p><b>[AB]</b></p>",
@@ -174,7 +174,7 @@ addEventListener("load", () => {
// the placeholder line break (if there is) should be in <b>.
expected: useBR
? "<p><b><br>a</b></p>"
- : ["<p><b><br>a</b></p>", "<p><b>\na</b></p>"],
+ : "<p><b>\na</b></p>",
},
{
initialInnerHTML: "<p><b>[AB]</b></p>",
diff --git a/tests/wpt/tests/editing/plaintext-only/paste.https.html b/tests/wpt/tests/editing/plaintext-only/paste.https.html
index 9081028732a..191a83ff8f0 100644
--- a/tests/wpt/tests/editing/plaintext-only/paste.https.html
+++ b/tests/wpt/tests/editing/plaintext-only/paste.https.html
@@ -163,9 +163,7 @@ addEventListener("load", () => {
assert_in_array(
editingHost.innerHTML,
[
- "Aabc<br>defB",
"Aabc\ndefB",
- "A<br>abc<br>def<br>B",
"A\nabc\ndef\nB",
],
"Each paragraph should be pasted as a line"
@@ -205,9 +203,7 @@ addEventListener("load", () => {
assert_in_array(
editingHost.innerHTML,
[
- "<b>Aabc<br>defB</b>",
"<b>Aabc\ndefB</b>",
- "<b>A<br>abc<br>def<br>B</b>",
"<b>A\nabc\ndef\nB</b>",
],
"Each paragraph should be pasted as a line"
@@ -247,9 +243,7 @@ addEventListener("load", () => {
assert_in_array(
editingHost.innerHTML,
[
- "Aabc<br>defB",
"Aabc\ndefB",
- "A<br>abc<br>def<br>B",
"A\nabc\ndef\nB",
],
"Each paragraph should be pasted as a line"
diff --git a/tests/wpt/tests/element-timing/cross-origin-element.sub.html b/tests/wpt/tests/element-timing/cross-origin-element.sub.html
index 1052bf246d0..25a07a435e9 100644
--- a/tests/wpt/tests/element-timing/cross-origin-element.sub.html
+++ b/tests/wpt/tests/element-timing/cross-origin-element.sub.html
@@ -12,6 +12,7 @@ body {
<script src="resources/element-timing-helpers.js"></script>
<script>
async_test((t) => {
+ const test_start = performance.now();
assert_implements(window.PerformanceElementTiming, "PerformanceElementTiming is not implemented");
let img;
const pathname = 'http://{{domains[www]}}:{{ports[http][1]}}'
@@ -20,9 +21,9 @@ body {
t.step_func_done((entryList) => {
assert_equals(entryList.getEntries().length, 1);
const entry = entryList.getEntries()[0];
- checkElement(entry, pathname, 'my_image', 'the_id', 0, img);
- assert_equals(entry.renderTime, 0,
- 'The renderTime of a cross-origin image should be 0.');
+ checkElement(entry, pathname, 'my_image', 'the_id', test_start, img);
+ assert_greater_than_equal(entry.renderTime, entry.loadTime,
+ 'The renderTime of a cross-origin image should be coarse but at least as high as loadTime');
checkRect(entry, [0, 100, 0, 100]);
checkNaturalSize(entry, 100, 100);
})
diff --git a/tests/wpt/tests/element-timing/image-TAO.sub.html b/tests/wpt/tests/element-timing/image-TAO.sub.html
index 7b455dfa4c4..7986e69500e 100644
--- a/tests/wpt/tests/element-timing/image-TAO.sub.html
+++ b/tests/wpt/tests/element-timing/image-TAO.sub.html
@@ -34,11 +34,8 @@
img_count++;
const tao = entry.identifier;
const img = document.getElementById('id_' + tao);
- if (valid_tao.includes(tao)) {
+ if (valid_tao.includes(tao) || invalid_tao.includes(tao)) {
checkElement(entry, remote_img + tao, tao, 'id_' + tao, beforeRender, img);
- } else if (invalid_tao.includes(tao)) {
- assert_equals(entry.renderTime, 0, 'Entry with tao=' + tao + ' must have a renderTime of 0');
- checkElement(entry, remote_img + tao, tao, 'id_' + tao, 0, img);
}
else {
assert_unreached('Should be in one of valid_tao OR invalid_tao');
diff --git a/tests/wpt/tests/element-timing/multiple-redirects-TAO.html b/tests/wpt/tests/element-timing/multiple-redirects-TAO.html
deleted file mode 100644
index 3a45b552bea..00000000000
--- a/tests/wpt/tests/element-timing/multiple-redirects-TAO.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-<meta charset="utf-8" />
-<title>This test validates some Timing-Allow-Origin header usage in multiple redirects.</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/element-timing-helpers.js"></script>
-<script src="/common/get-host-info.sub.js"></script>
-</head>
-<body>
-<script>
-async_test(t => {
- assert_implements(window.PerformanceElementTiming, "PerformanceElementTiming is not implemented");
- let destUrl = get_host_info().HTTP_REMOTE_ORIGIN
- + '/element-timing/resources/multiple-redirects.py?';
- destUrl += 'redirect_count=2';
- // The final resource has '*' in TAO header, so will not affect the result.
- destUrl += '&final_resource=/element-timing/resources/circle-tao.svg';
- destUrl += '&origin1=' + get_host_info().UNAUTHENTICATED_ORIGIN;
- destUrl += '&origin2=' + get_host_info().HTTP_REMOTE_ORIGIN;
- const taoCombinations = [
- {tao1: location.origin, tao2: location.origin, passes: false},
- {tao1: location.origin, tao2: get_host_info().HTTP_REMOTE_ORIGIN, passes: false},
- {tao1: location.origin, tao2: 'null', passes: true},
- {tao1: location.origin, tao2: '*', passes: true},
- {tao1: location.origin, tao2: location.origin, passes: false},
- {tao1: 'null', tao2: '*', passes: false},
- {tao1: '*', tao2: 'null', passes: true},
- ];
- function getURL(item) {
- return destUrl + '&tao1=' + item.tao1 + '&tao2=' + item.tao2;
- }
- taoCombinations.forEach((item, index) => {
- const image = document.createElement('img');
- image.src = getURL(item);
- image.setAttribute('elementtiming', item.passes.toString());
- image.setAttribute('id', index);
- document.body.appendChild(image);
- });
- let observed = new Array(taoCombinations.length).fill(false);
- let observedCount = 0;
- const beforeRender = performance.now();
- new PerformanceObserver(t.step_func(entries => {
- entries.getEntries().forEach(e => {
- const index = parseInt(e.id);
- assert_false(observed[index]);
- const item = taoCombinations[index];
- const url = getURL(item);
- checkElement(e, url, item.passes.toString(), e.id, item.passes ? beforeRender : 0,
- document.getElementById(e.id));
- observed[index] = true;
- observedCount++;
- if (observedCount === taoCombinations.length)
- t.done();
- });
- })).observe({entryTypes: ['element']});
-}, 'Cross-origin images with passing/failing TAO should/shouldn\'t have its renderTime set.');
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/tests/element-timing/redirects-tao-star.html b/tests/wpt/tests/element-timing/redirects-tao-star.html
deleted file mode 100644
index e5067d3d6bd..00000000000
--- a/tests/wpt/tests/element-timing/redirects-tao-star.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-<meta charset="utf-8" />
-<title>This test validates element timing information for cross-origin redirect chain images.</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/element-timing-helpers.js"></script>
-<script src=/common/get-host-info.sub.js></script>
-</head>
-<body>
-<script>
-async_test(t => {
- assert_implements(window.PerformanceElementTiming, "PerformanceElementTiming is not implemented");
- let destUrl = get_host_info().HTTP_REMOTE_ORIGIN
- + '/resource-timing/resources/multi_redirect.py?';
- destUrl += 'page_origin=' + get_host_info().HTTP_ORIGIN;
- destUrl += '&cross_origin=' + get_host_info().HTTP_REMOTE_ORIGIN;
- destUrl += '&final_resource=' + '/element-timing/resources/circle-tao.svg';
- destUrl += '&timing_allow=1';
- destUrl += '&tao_steps=';
- for (let taoSteps=0; taoSteps < 4; taoSteps++) {
- const image = document.createElement('img');
- image.src = destUrl + taoSteps;
- image.setAttribute('elementtiming', taoSteps);
- image.setAttribute('id', 'id' + taoSteps)
- document.body.appendChild(image);
- }
- let numObserved = 0;
- let observedMap = [false, false, false, false];
- const beforeRender = performance.now();
- new PerformanceObserver(t.step_func(entries => {
- entries.getEntries().forEach(entry => {
- const taoSteps = entry.identifier;
- assert_false(observedMap[taoSteps], 'Should observe each image once');
- observedMap[taoSteps] = true;
- if (taoSteps !== '3') {
- assert_equals(entry.renderTime, 0,
- 'renderTime should be 0 when there is ' + taoSteps + ' tao steps');
- }
- const bound = taoSteps === '3' ? beforeRender : 0;
- checkElement(entry, destUrl + taoSteps, taoSteps, 'id' + taoSteps, bound,
- document.getElementById(taoSteps));
- });
- numObserved += entries.getEntries().length;
- if (numObserved === 4)
- t.done();
- })).observe({type: 'element', buffered: true});
-}, 'Cross-origin image without TAO should not have its renderTime set, with full TAO it should.');
-</script>
-</body>
-</html>
-
diff --git a/tests/wpt/tests/fenced-frame/navigate-ancestor-nested-fenced-frame.https.html b/tests/wpt/tests/fenced-frame/navigate-ancestor-nested-fenced-frame.https.html
index ec41fe87575..fb50be94fbc 100644
--- a/tests/wpt/tests/fenced-frame/navigate-ancestor-nested-fenced-frame.https.html
+++ b/tests/wpt/tests/fenced-frame/navigate-ancestor-nested-fenced-frame.https.html
@@ -2,13 +2,19 @@
<title>Test navigating an ancestor frame from a nested fenced frame</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-<script src="resources/utils.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
<script src="/common/utils.js"></script>
+<script src="/common/dispatcher/dispatcher.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/utils.js"></script>
<script src="resources/navigate-ancestor-helper.js"></script>
<body>
<script>
promise_test(async t => {
+ // location.href = "resources/embeddee.html";
await runNavigateAncestorTest("nested fenced frame", "parent");
}, "Nested fenced frames that navigate _parent end up navigating themselves");
diff --git a/tests/wpt/tests/fenced-frame/navigate-ancestor-nested-iframe.https.html b/tests/wpt/tests/fenced-frame/navigate-ancestor-nested-iframe.https.html
index 977eae17486..83656a28c11 100644
--- a/tests/wpt/tests/fenced-frame/navigate-ancestor-nested-iframe.https.html
+++ b/tests/wpt/tests/fenced-frame/navigate-ancestor-nested-iframe.https.html
@@ -2,8 +2,13 @@
<title>Test navigating an ancestor frame from a iframe in a fenced frame</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-<script src="resources/utils.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
<script src="/common/utils.js"></script>
+<script src="/common/dispatcher/dispatcher.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/utils.js"></script>
<script src="resources/navigate-ancestor-helper.js"></script>
<body>
diff --git a/tests/wpt/tests/fenced-frame/navigate-ancestor-top-level-fenced-frame.https.html b/tests/wpt/tests/fenced-frame/navigate-ancestor-top-level-fenced-frame.https.html
index 9907f25292c..bfce01094d5 100644
--- a/tests/wpt/tests/fenced-frame/navigate-ancestor-top-level-fenced-frame.https.html
+++ b/tests/wpt/tests/fenced-frame/navigate-ancestor-top-level-fenced-frame.https.html
@@ -2,8 +2,13 @@
<title>Test navigating an ancestor frame from a fenced frame</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-<script src="resources/utils.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
<script src="/common/utils.js"></script>
+<script src="/common/dispatcher/dispatcher.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/utils.js"></script>
<script src="resources/navigate-ancestor-helper.js"></script>
<body>
diff --git a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-destination.https.html b/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-destination.https.html
deleted file mode 100644
index f12849c8ec6..00000000000
--- a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-destination.https.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<script src="utils.js"></script>
-<title>Nested fenced frame named navigation helper</title>
-<!-- See `navigate-ancestor-from-nested-{fencedframe,iframe}.https.html` for
- more documentation -->
-<script>
- // This is a helper file. It is the document that
- // `navigate-ancestor-from-nested{fencedframe,iframe}-helper.https.html`
- // explicitly navigates the "correct" ancestor frame to, for any test run by
- // `navigate-ancestor-test-runner.https.html`. The test itself is responsible
- // for verifying that this document loaded in the correct frame. We just
- // simply report that we successfully wound up in this document, to indicate
- // that we're finished.
- const [navigate_ancestor_key] = parseKeylist();
- writeValueToServer(navigate_ancestor_key,
- "navigate-ancestor-destination.https.html");
-</script>
diff --git a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-destination.https.html.headers b/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-destination.https.html.headers
deleted file mode 100644
index 6247f6d6321..00000000000
--- a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-destination.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Supports-Loading-Mode: fenced-frame \ No newline at end of file
diff --git a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-from-nested-fenced-frame.https.html b/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-from-nested-fenced-frame.https.html
deleted file mode 100644
index 74800b969f7..00000000000
--- a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-from-nested-fenced-frame.https.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html>
-<title>Navigate ancestor helper</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="utils.js"></script>
-
-<body>
-<script>
-(async () => {
- // This document is loaded into a fenced frame by
- // `navigate-ancestor-test-runner.https.html`. It creates a nested fenced
- // frame and navigates it to `navigate-ancestor-helper.https.html`.
-
- // - navigate_ancestor_key:
- // Sent by `navigate-ancestor-destination.https.html`. We listen to it, and
- // report back to our embedder that it loaded correctly and did not navigate
- // *this* frame.
- // - navigate_ancestor_from_nested_key:
- // Sent by us to our embedder to indicate (depending on the message) either:
- // - PASS: The nested fenced frame was navigated correctly when it tried to
- // navigate its ancestor (parent or top) frame
- // - FAIL: When the nested fenced frame tried to navigate its ancestor
- // frame, it actually navigated *this frame*, which is wrong
- const [navigate_ancestor_key, navigate_ancestor_from_nested_key,
- ancestor_type] = parseKeylist();
-
- window.onbeforeunload = e => {
- writeValueToServer(navigate_ancestor_from_nested_key,
- `FAIL nested fenced frame ${ancestor_type}`);
- }
-
- attachFencedFrame(generateURL(`navigate-ancestor-helper.https.html`,
- [navigate_ancestor_key, ancestor_type]));
- await nextValueFromServer(navigate_ancestor_key);
- window.onbeforeunload = null;
- writeValueToServer(navigate_ancestor_from_nested_key, "PASS");
-})();
-</script>
-</body>
diff --git a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-from-nested-fenced-frame.https.html.headers b/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-from-nested-fenced-frame.https.html.headers
deleted file mode 100644
index 6247f6d6321..00000000000
--- a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-from-nested-fenced-frame.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Supports-Loading-Mode: fenced-frame \ No newline at end of file
diff --git a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-from-nested-iframe.https.html b/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-from-nested-iframe.https.html
deleted file mode 100644
index 63a0cca8b4f..00000000000
--- a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-from-nested-iframe.https.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<title>Navigate ancestor helper from nested fenced frame</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="utils.js"></script>
-
-<body>
-<script>
-(async () => {
- // This document is loaded into a fenced frame by
- // `navigate-ancestor-test-runner.https.html`. It creates a nested iframe and
- // navigates it to `navigate-ancestor-helper.https.html`.
-
- // navigate_ancestor_from_nested_key sent by us to our embedder to
- // indicate that an message was sent from the nested iframe when it failed to
- // navigate the ancestor (this) frame.
- const [navigate_ancestor_key, navigate_ancestor_from_nested_key,
- ancestor_type] = parseKeylist();
-
- // An message should be sent from the iframe.
- window.addEventListener('message', (e) => {
- window.onbeforeunload = null;
- writeValueToServer(
- navigate_ancestor_from_nested_key,
- `PASS: [${ancestor_type}] ${e.data}`);
- });
-
- // When the iframe tries to navigate its ancestor frame, it should not
- // navigate *this* frame, because the sandboxed navigation browsing context
- // flag [1] must be set in fenced frame trees.
- // [1] https://html.spec.whatwg.org/multipage/origin.html#sandboxed-navigation-browsing-context-flag
- const iframe = document.createElement('iframe');
- iframe.src = generateURL(`navigate-ancestor-helper.https.html`,
- [navigate_ancestor_key, ancestor_type]);
- document.body.append(iframe);
-})();
-</script>
-</body>
diff --git a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-from-nested-iframe.https.html.headers b/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-from-nested-iframe.https.html.headers
deleted file mode 100644
index 6247f6d6321..00000000000
--- a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-from-nested-iframe.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Supports-Loading-Mode: fenced-frame \ No newline at end of file
diff --git a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-helper.https.html b/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-helper.https.html
deleted file mode 100644
index 71d55d4959b..00000000000
--- a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-helper.https.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<title>Navigate ancestor helper</title>
-
-<script src="utils.js"></script>
-<body>
-<script>
-(async () => {
- // This document is loaded into either a top-level fenced frame, a nested
- // fenced frame, or an iframe in a top-level fenced frame. In any case, this
- // document is always the inner-most document in any test. It navigates an
- // ancestor frame by clicking the anchor above via script. When this document
- // is loaded in a fenced frame, the frame that should actually navigate is
- // this one, since fenced frames are top-level browsing contexts.
- // When this document is loaded into a top-level fenced frame or a nested
- // fenced frame, we test that the right frame is navigated in
- // `navigate-ancestor-test-runner.https.html`. When this document is loaded
- // into an iframe in a top-level fenced frame, we test that the navigation is
- // blocked due to the sandbox behavior of fenced frame trees.
- const [navigate_ancestor_key, ancestor_type] = parseKeylist();
- const url = generateURL(`navigate-ancestor-destination.https.html`,
- [navigate_ancestor_key]);
- try {
- window[ancestor_type].location = url;
- } catch (e) {
- window[ancestor_type].postMessage('location change failed.');
- }
-})();
-</script>
-</body>
diff --git a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-helper.https.html.headers b/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-helper.https.html.headers
deleted file mode 100644
index 6247f6d6321..00000000000
--- a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-helper.https.html.headers
+++ /dev/null
@@ -1 +0,0 @@
-Supports-Loading-Mode: fenced-frame \ No newline at end of file
diff --git a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-helper.js b/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-helper.js
index ade17c69f2c..6dfecb8bc5e 100644
--- a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-helper.js
+++ b/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-helper.js
@@ -1,28 +1,70 @@
-
async function runNavigateAncestorTest(test_type, ancestor_type) {
- // See documentation in `resources/navigate-ancestor-test-runner.https.html`.
- // For each test type here, this document opens a new auxiliary window that
- // runs the actual test. The tests in some way or another, direct a frame
- // *inside* a fenced frame to navigate an ancestor frame via an
- // <a target="_parent|_top"></a>. We need to run the real test in a new window
- // so that if that window ends up navigating unexpectedly (because the fenced
- // frame can accidentally navigated its embedder, for example) we can detect
- // it from ths page, which never navigates away.
- const navigate_ancestor_key = token();
- const navigate_ancestor_from_nested_key = token();
+ // Set up a detector to check that the top-level page doesn't navigate away.
+ window.onbeforeunload =
+ e => {
+ assert_unreached(
+ `The top-level test runner document does not navigate when a ` +
+ `${test_type} navigates ${ancestor_type}`);
+ }
- const win = window.open(generateURL(
- "resources/navigate-ancestor-test-runner.https.html",
- [navigate_ancestor_key, navigate_ancestor_from_nested_key]));
- await new Promise(resolve => {
- win.onload = resolve;
- });
+ let fenced_frame = await attachFencedFrameContext();
+ await multiClick(10, 10, fenced_frame.element);
- const pagehidePromise = new Promise(resolve => {
- win.onpagehide = resolve;
- });
+ // This is the page that the inner frames will navigate to.
+ const [uuid, url] = generateRemoteContextURL([]);
- await win.runTest(test_type, ancestor_type);
- win.close();
- await pagehidePromise;
+ switch (test_type) {
+ case 'top-level fenced frame':
+ // This fenced frame will attempt to navigate its parent. It should end up
+ // navigating *itself* since it is a top-level browsing context. Just in
+ // case it accidentally navigates *this* frame, we have an
+ // `onbeforeunload` handler that will automatically fail the test before.
+ await fenced_frame.execute(async (url, ancestor_type) => {
+ window.executor.suspend(() => {
+ window[ancestor_type].location = url;
+ });
+ }, [url, ancestor_type]);
+ // Ensure that a navigation took place via the `window.location` call.
+ fenced_frame.context_id = uuid;
+ await fenced_frame.execute(() => {});
+ break;
+ case 'nested fenced frame':
+ await fenced_frame.execute(async (url, uuid, ancestor_type) => {
+ const inner_fenced_frame = await attachFencedFrameContext();
+ await inner_fenced_frame.execute((url, ancestor_type) => {
+ window.executor.suspend(() => {
+ window[ancestor_type].location = url;
+ });
+ }, [url, ancestor_type]);
+ // Ensure that a navigation took place via the `window.location` call.
+ inner_fenced_frame.context_id = uuid;
+ await inner_fenced_frame.execute(() => {});
+ }, [url, uuid, ancestor_type]);
+ // Check that the root fenced frame did not unload. The test will time out
+ // if it did.
+ await fenced_frame.execute(() => {});
+ break;
+ case 'nested iframe':
+ // When the iframe tries to navigate its ancestor frame, it should not
+ // navigate *this* frame, because the sandboxed navigation browsing
+ // context flag must be set in fenced frame trees. See:
+ // https://html.spec.whatwg.org/multipage/origin.html#sandboxed-navigation-browsing-context-flag
+ await fenced_frame.execute(async (url, ancestor_type) => {
+ const inner_iframe = await attachIFrameContext();
+ await inner_iframe.execute((url, ancestor_type) => {
+ try {
+ window[ancestor_type].location = url;
+ assert_unreached(
+ 'The navigation from the nested iframe should ' +
+ 'not be successful.');
+ } catch (error) {
+ assert_equals(error.name, 'SecurityError');
+ }
+ }, [url, ancestor_type]);
+ }, [url, ancestor_type]);
+ // Check that the root fenced frame did not unload. The test will time out
+ // if it did.
+ await fenced_frame.execute(() => {});
+ break;
+ }
}
diff --git a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-test-runner.https.html b/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-test-runner.https.html
deleted file mode 100644
index ab81bd8dea1..00000000000
--- a/tests/wpt/tests/fenced-frame/resources/navigate-ancestor-test-runner.https.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html>
-<title>Test navigating an ancestor frame from within a fenced frame</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-actions.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="utils.js"></script>
-
-<body>
-<script>
-// This function is called by `window.opener`, which is a same-origin window.
-window.runTest = async function(test_type, ancestor_type) {
- // Messages by this key are sent from
- // `navigate-ancestor-destination.https.html` to let us know if the "_parent"
- // navigations performed inside fenced frames landed on the right page.
- // If somehow *this document* gets navigated unexpectedly, the test will fail
- // given `beforeunloadPromise` below.
- // For "nested" tests, this document hosts a top-level fenced frame navigated
- // to `navigate-ancestor-from-nested-{fenced-frame,iframe}.https.html`,
- // which itself hosts a nested fenced frame or iframe. The top-level fenced
- // frame will wait for the right confirmation that the nested document has
- // operated correctly, and report back to *us* that everything is OK via this
- // key below.
- const [navigate_ancestor_key, navigate_ancestor_from_nested_key] =
- parseKeylist();
-
- const beforeunloadPromise = new Promise((resolve, reject) => {
- window.onbeforeunload = e => {
- reject(`The top-level test runner document does not navigate when a ` +
- `${test_type} navigates ${ancestor_type}`);
- }
- });
-
- let test_promise = null;
- let fenced_frame = null;
- switch (test_type) {
- case 'top-level fenced frame':
- // This fenced frame will attempt to navigate its parent to
- // `navigate-ancestor-destination.https.html`. It should end up navigating
- // *itself* since it is a top-level browsing context. Just in case it
- // accidentally navigates *this* frame, we have an `onbeforeunload`
- // handler that will automatically fail the test before.
- fenced_frame = attachFencedFrame(generateURL(
- `navigate-ancestor-helper.https.html`,
- [navigate_ancestor_key, ancestor_type]));
- await multiClick(10, 10, fenced_frame);
- test_promise = nextValueFromServer(navigate_ancestor_key);
- break;
- case 'nested fenced frame':
- fenced_frame = attachFencedFrame(generateURL(
- `navigate-ancestor-from-nested-fenced-frame.https.html`,
- [navigate_ancestor_key, navigate_ancestor_from_nested_key,
- ancestor_type]));
- await multiClick(10, 10, fenced_frame);
- test_promise = nextValueFromServer(navigate_ancestor_from_nested_key)
- .then(message => {
- if (message != "PASS") {
- throw message;
- }
- });
- break;
- case 'nested iframe':
- fenced_frame = attachFencedFrame(generateURL(
- `navigate-ancestor-from-nested-iframe.https.html`,
- [navigate_ancestor_key, navigate_ancestor_from_nested_key,
- ancestor_type]));
- await multiClick(10, 10, fenced_frame);
- test_promise = nextValueFromServer(navigate_ancestor_from_nested_key)
- .then(message => {
- if (message != `PASS: [${ancestor_type}] location change failed.`) {
- throw message;
- }
- });
-
- break;
- }
-
- return Promise.race([test_promise, beforeunloadPromise]);
-}
-</script>
-
-</body>
diff --git a/tests/wpt/tests/fledge/tentative/additional-bids.https.window.js b/tests/wpt/tests/fledge/tentative/additional-bids.https.window.js
index 3ba0b49cbc0..9cddbaf065d 100644
--- a/tests/wpt/tests/fledge/tentative/additional-bids.https.window.js
+++ b/tests/wpt/tests/fledge/tentative/additional-bids.https.window.js
@@ -18,8 +18,8 @@
// which the `adAuctionHeaders=true` attribute is not specified.
// - test that additional bids are not fetched using a Fetch request for which
// `adAuctionHeaders: true` is not specified.
-// - test that an additional bid with an incorrect auction nonce is not used
-// included in an auction. Same for seller and top-level seller.
+// - test that an additional bid with an incorrect seller and / or top-level
+// seller is not used included in an auction.
// - lots of tests for different types of malformed additional bids, e.g.
// missing fields, malformed signature, invalid currency code,
// missing joining origin for multiple negative interest groups, etc.
@@ -149,6 +149,258 @@ subsetTest(promise_test, async test => {
/*winningAdditionalBidId=*/'planes');
}, 'two valid additional bids from two distinct Fetch requests');
+// Single-seller auction with a single buyer who places a single additional
+// bid with the wrong auctionNonce in the bid, causing the bid to fail.
+subsetTest(promise_test, async test => {
+ const uuid = generateUuid(test);
+ const auctionNonce = await navigator.createAuctionNonce();
+ const auctionNonceInBid = crypto.randomUUID();
+ const seller = SINGLE_SELLER_AUCTION_SELLER;
+
+ const buyer = OTHER_ORIGIN1;
+ const additionalBid = additionalBidHelper.createAdditionalBid(
+ uuid, auctionNonce, seller, buyer, 'horses', 1.99);
+ additionalBidHelper.setBidAuctionNonceOverride(
+ additionalBid, auctionNonceInBid);
+
+ await runAdditionalBidTestNoWinner(
+ test, uuid, [buyer], auctionNonce,
+ additionalBidHelper.fetchAdditionalBids(seller, [additionalBid]),
+ /*highestScoringOtherBid=*/0);
+}, 'single valid additional bid with wrong auctionNonce in bid');
+
+// Single-seller auction with a single buyer who places a single additional
+// bid with no auctionNonce in the bid, causing the bid to fail.
+subsetTest(promise_test, async test => {
+ const uuid = generateUuid(test);
+ const auctionNonce = await navigator.createAuctionNonce();
+ const seller = SINGLE_SELLER_AUCTION_SELLER;
+
+ const buyer = OTHER_ORIGIN1;
+ const additionalBid = additionalBidHelper.createAdditionalBid(
+ uuid, auctionNonce, seller, buyer, 'horses', 1.99);
+ additionalBidHelper.removeAuctionNonceFromBid(additionalBid);
+
+ await runAdditionalBidTestNoWinner(
+ test, uuid, [buyer], auctionNonce,
+ additionalBidHelper.fetchAdditionalBids(seller, [additionalBid]),
+ /*highestScoringOtherBid=*/0);
+}, 'single valid additional bid with no auctionNonce in bid');
+
+// Single-seller auction with a single buyer who places a single additional
+// bid with auctionNonce and bidNonce in the bid (but no seller nonce), causing
+// the bid to fail.
+subsetTest(promise_test, async test => {
+ const uuid = generateUuid(test);
+ const auctionNonce = await navigator.createAuctionNonce();
+ const sellerNonce = crypto.randomUUID();
+ const bidNonce =
+ await additionalBidHelper.computeBidNonce(auctionNonce, sellerNonce);
+ const seller = SINGLE_SELLER_AUCTION_SELLER;
+ const additionalBidOverrides = {
+ bidNonce: bidNonce,
+ };
+
+ const buyer = OTHER_ORIGIN1;
+ const additionalBid = additionalBidHelper.createAdditionalBid(
+ uuid, auctionNonce, seller, buyer, 'horses', 1.99,
+ /*additionalBidOverrides=*/ additionalBidOverrides);
+
+ await runAdditionalBidTestNoWinner(
+ test, uuid, [buyer], auctionNonce,
+ additionalBidHelper.fetchAdditionalBids(seller, [additionalBid]),
+ /*highestScoringOtherBid=*/0);
+}, 'single valid additional bid with auctionNonce and bidNonce in bid (but no seller nonce)');
+
+// Single-seller auction with a single buyer who places a single additional
+// bid that uses seller nonce / bidNonce. As the only bid, this wins.
+subsetTest(promise_test, async test => {
+ const uuid = generateUuid(test);
+ const auctionNonce = await navigator.createAuctionNonce();
+ const sellerNonce = crypto.randomUUID();
+ const bidNonce =
+ await additionalBidHelper.computeBidNonce(auctionNonce, sellerNonce);
+ const seller = SINGLE_SELLER_AUCTION_SELLER;
+ const additionalBidOverrides = {
+ bidNonce: bidNonce,
+ };
+
+ const buyer = OTHER_ORIGIN1;
+ const additionalBid = additionalBidHelper.createAdditionalBid(
+ uuid, auctionNonce, seller, buyer, 'horses', 1.99,
+ /*additionalBidOverrides=*/ additionalBidOverrides);
+ additionalBidHelper.setSellerNonce(additionalBid, sellerNonce);
+ additionalBidHelper.removeAuctionNonceFromBid(additionalBid);
+
+ await runAdditionalBidTest(
+ test, uuid, [buyer], auctionNonce,
+ additionalBidHelper.fetchAdditionalBids(seller, [additionalBid]),
+ /*highestScoringOtherBid=*/0,
+ /*winningAdditionalBidId=*/'horses');
+}, 'single valid additional bid with seller nonce');
+
+// Single-seller auction with a single buyer who places a single additional bid
+// that uses seller nonce, but no bidNonce. Since the bidNonce is missing, there
+// is no winner.
+subsetTest(promise_test, async test => {
+ const uuid = generateUuid(test);
+ const auctionNonce = await navigator.createAuctionNonce();
+ const sellerNonce = crypto.randomUUID();
+ const seller = SINGLE_SELLER_AUCTION_SELLER;
+
+ const buyer = OTHER_ORIGIN1;
+ const additionalBid = additionalBidHelper.createAdditionalBid(
+ uuid, auctionNonce, seller, buyer, 'horses', 1.99);
+ additionalBidHelper.setSellerNonce(additionalBid, sellerNonce);
+
+ await runAdditionalBidTestNoWinner(
+ test, uuid, [buyer], auctionNonce,
+ additionalBidHelper.fetchAdditionalBids(seller, [additionalBid]),
+ /*highestScoringOtherBid=*/0);
+}, 'single additional bid with seller nonce with no bidNonce');
+
+// Single-seller auction with a single buyer who places a single additional bid
+// that uses seller nonce, but no bidNonce or auctionNonce. Since the bidNonce
+// is missing, there is no winner.
+subsetTest(promise_test, async test => {
+ const uuid = generateUuid(test);
+ const auctionNonce = await navigator.createAuctionNonce();
+ const sellerNonce = crypto.randomUUID();
+ const seller = SINGLE_SELLER_AUCTION_SELLER;
+
+ const buyer = OTHER_ORIGIN1;
+ const additionalBid = additionalBidHelper.createAdditionalBid(
+ uuid, auctionNonce, seller, buyer, 'horses', 1.99);
+ additionalBidHelper.setSellerNonce(additionalBid, sellerNonce);
+ additionalBidHelper.removeAuctionNonceFromBid(additionalBid);
+
+ await runAdditionalBidTestNoWinner(
+ test, uuid, [buyer], auctionNonce,
+ additionalBidHelper.fetchAdditionalBids(seller, [additionalBid]),
+ /*highestScoringOtherBid=*/0);
+}, 'single additional bid with seller nonce with no bidNonce or auctionNonce');
+
+// Single-seller auction with a single buyer who places a single additional
+// bid that uses seller nonce / bidNonce. Since the bidNonce is invalid there is
+// no winner.
+subsetTest(promise_test, async test => {
+ const uuid = generateUuid(test);
+ const auctionNonce = await navigator.createAuctionNonce();
+ const sellerNonce = crypto.randomUUID();
+ // Intentionally use the wrong bidNonce, base64(sha256("incorrect")).
+ const bidNonce = 'ID01Nr1irTOscLfqPU9eELbVLr0Mt1goQaBTrrtxhqM=';
+ const seller = SINGLE_SELLER_AUCTION_SELLER;
+ const additionalBidOverrides = {
+ bidNonce: bidNonce,
+ };
+
+ const buyer = OTHER_ORIGIN1;
+ const additionalBid = additionalBidHelper.createAdditionalBid(
+ uuid, auctionNonce, seller, buyer, 'horses', 1.99,
+ /*additionalBidOverrides=*/ additionalBidOverrides);
+ additionalBidHelper.setSellerNonce(additionalBid, sellerNonce);
+ additionalBidHelper.removeAuctionNonceFromBid(additionalBid);
+
+ await runAdditionalBidTestNoWinner(
+ test, uuid, [buyer], auctionNonce,
+ additionalBidHelper.fetchAdditionalBids(seller, [additionalBid]),
+ /*highestScoringOtherBid=*/0);
+}, 'single invalid additional bid with seller nonce');
+
+// Single-seller auction with a two buyers competing with additional bids, using
+// seller nonce.
+subsetTest(promise_test, async test => {
+ const uuid = generateUuid(test);
+ const auctionNonce = await navigator.createAuctionNonce();
+ const sellerNonce1 = crypto.randomUUID();
+ const sellerNonce2 = crypto.randomUUID();
+ const bidNonce1 =
+ await additionalBidHelper.computeBidNonce(auctionNonce, sellerNonce1);
+ const bidNonce2 =
+ await additionalBidHelper.computeBidNonce(auctionNonce, sellerNonce2);
+ const seller = SINGLE_SELLER_AUCTION_SELLER;
+ const additionalBidOverrides1 = {
+ bidNonce: bidNonce1,
+ };
+ const additionalBidOverrides2 = {
+ bidNonce: bidNonce2,
+ };
+
+ const buyer1 = OTHER_ORIGIN1;
+ const additionalBid1 = additionalBidHelper.createAdditionalBid(
+ uuid, auctionNonce, seller, buyer1, 'horses', 1.99,
+ /*additionalBidOverrides=*/ additionalBidOverrides1);
+ additionalBidHelper.setSellerNonce(additionalBid1, sellerNonce1);
+ additionalBidHelper.removeAuctionNonceFromBid(additionalBid1);
+
+ const buyer2 = OTHER_ORIGIN2;
+ const additionalBid2 = additionalBidHelper.createAdditionalBid(
+ uuid, auctionNonce, seller, buyer2, 'planes', 2.99,
+ /*additionalBidOverrides=*/ additionalBidOverrides2);
+ additionalBidHelper.setSellerNonce(additionalBid2, sellerNonce2);
+ additionalBidHelper.removeAuctionNonceFromBid(additionalBid2);
+
+ await runAdditionalBidTest(
+ test, uuid, [buyer1, buyer2], auctionNonce,
+ additionalBidHelper.fetchAdditionalBids(
+ seller, [additionalBid1, additionalBid2]),
+ /*highestScoringOtherBid=*/1.99,
+ /*winningAdditionalBidId=*/'planes');
+}, 'two valid additional bids using seller nonce');
+
+// Single-seller auction with a single buyer who places a single additional
+// bid that uses seller nonce / bidNonce, but also auctionNonce in the bid. As
+// exactly one of bidNonce / auctionNonce is allowed in the bid, this fails.
+subsetTest(promise_test, async test => {
+ const uuid = generateUuid(test);
+ const auctionNonce = await navigator.createAuctionNonce();
+ const sellerNonce = crypto.randomUUID();
+ const bidNonce =
+ await additionalBidHelper.computeBidNonce(auctionNonce, sellerNonce);
+ const seller = SINGLE_SELLER_AUCTION_SELLER;
+ const additionalBidOverrides = {
+ bidNonce: bidNonce,
+ };
+
+ const buyer = OTHER_ORIGIN1;
+ const additionalBid = additionalBidHelper.createAdditionalBid(
+ uuid, auctionNonce, seller, buyer, 'horses', 1.99,
+ /*additionalBidOverrides=*/ additionalBidOverrides);
+ additionalBidHelper.setSellerNonce(additionalBid, sellerNonce);
+ // Don't remove the auctionNonce from the bid.
+
+ await runAdditionalBidTestNoWinner(
+ test, uuid, [buyer], auctionNonce,
+ additionalBidHelper.fetchAdditionalBids(seller, [additionalBid]),
+ /*highestScoringOtherBid=*/0);
+}, 'single additional bid with seller nonce, but also with auctionNonce in bid');
+
+// Single-seller auction with a single buyer who places a single additional
+// bid with auctionNonce and bidNonce in the bid (with seller nonce), causing
+// the bid to fail.
+subsetTest(promise_test, async test => {
+ const uuid = generateUuid(test);
+ const auctionNonce = await navigator.createAuctionNonce();
+ const sellerNonce = crypto.randomUUID();
+ const bidNonce =
+ await additionalBidHelper.computeBidNonce(auctionNonce, sellerNonce);
+ const seller = SINGLE_SELLER_AUCTION_SELLER;
+ const additionalBidOverrides = {
+ bidNonce: bidNonce,
+ };
+
+ const buyer = OTHER_ORIGIN1;
+ const additionalBid = additionalBidHelper.createAdditionalBid(
+ uuid, auctionNonce, seller, buyer, 'horses', 1.99,
+ /*additionalBidOverrides=*/ additionalBidOverrides);
+ additionalBidHelper.setSellerNonce(additionalBid, sellerNonce);
+
+ await runAdditionalBidTestNoWinner(
+ test, uuid, [buyer], auctionNonce,
+ additionalBidHelper.fetchAdditionalBids(seller, [additionalBid]),
+ /*highestScoringOtherBid=*/0);
+}, 'single valid additional bid with auctionNonce and bidNonce in bid (with seller nonce)');
+
// Single-seller auction with a single additional bid. Because this additional
// bid is filtered by negative targeting, this auction has no winner.
subsetTest(promise_test, async test => {
diff --git a/tests/wpt/tests/fledge/tentative/resources/additional-bids.py b/tests/wpt/tests/fledge/tentative/resources/additional-bids.py
index 721909a0458..6c51d38a464 100644
--- a/tests/wpt/tests/fledge/tentative/resources/additional-bids.py
+++ b/tests/wpt/tests/fledge/tentative/resources/additional-bids.py
@@ -89,15 +89,28 @@ def main(request, response):
# Each additional bid may have associated testMetadata. Remove this from
# the additional bid and use it to adjust the behavior of this handler.
test_metadata = additional_bid.pop("testMetadata", {})
- auction_nonce = additional_bid.get("auctionNonce", None)
+ seller_nonce = test_metadata.get("sellerNonce", None)
+ remove_auction_nonce_from_bid = test_metadata.get("removeAuctionNonceFromBid", False)
+ bid_auction_nonce_override = test_metadata.get("bidAuctionNonceOverride", None)
+ if remove_auction_nonce_from_bid:
+ auction_nonce = additional_bid.pop("auctionNonce", None)
+ else:
+ auction_nonce = additional_bid.get("auctionNonce", None)
+ if bid_auction_nonce_override:
+ additional_bid["auctionNonce"] = bid_auction_nonce_override
if not auction_nonce:
raise BadRequestError("Additional bid missing required 'auctionNonce' field")
signed_additional_bid = _sign_additional_bid(
json.dumps(additional_bid),
test_metadata.get("secretKeysForValidSignatures", []),
test_metadata.get("secretKeysForInvalidSignatures", []))
- additional_bid_header_value = (auction_nonce.encode("utf-8") + b":" +
- base64.b64encode(signed_additional_bid.encode("utf-8")))
+ if seller_nonce:
+ additional_bid_header_value = (auction_nonce.encode("utf-8") + b":" +
+ seller_nonce.encode("utf-8") + b":" +
+ base64.b64encode(signed_additional_bid.encode("utf-8")))
+ else:
+ additional_bid_header_value = (auction_nonce.encode("utf-8") + b":" +
+ base64.b64encode(signed_additional_bid.encode("utf-8")))
response.headers.append(b"Ad-Auction-Additional-Bid", additional_bid_header_value)
response.status = (200, b"OK")
diff --git a/tests/wpt/tests/fledge/tentative/resources/fledge-util.sub.js b/tests/wpt/tests/fledge/tentative/resources/fledge-util.sub.js
index 148613eef8d..6f16e5e1e8c 100644
--- a/tests/wpt/tests/fledge/tentative/resources/fledge-util.sub.js
+++ b/tests/wpt/tests/fledge/tentative/resources/fledge-util.sub.js
@@ -544,8 +544,10 @@ async function runReportTest(test, uuid, codeToInsert, expectedReportURLs,
// - test/uuid: the test object and uuid from the test case (see generateUuid)
// - buyers: array of strings, each a domain for a buyer participating in this
// auction
-// - actionNonce: string, the auction nonce for this auction, typically
+// - auctionNonce: string, the auction nonce for this auction, typically
// retrieved from a prior call to navigator.createAuctionNonce
+// - additionalBidsPromise: promise resolving to undefined, to be resolved when
+// the additional bids have been retrieved with fetch().
// - highestScoringOtherBid: the amount of the second-highest bid,
// or zero if there's no second-highest bid
// - winningAdditionalBidId: the label of the winning bid
@@ -567,6 +569,25 @@ async function runAdditionalBidTest(test, uuid, buyers, auctionNonce,
createBidderReportURL(uuid, winningAdditionalBidId)]);
}
+// Similar to runAdditionalBidTest(), but expects no winner. It takes the
+// following arguments:
+// - test/uuid: the test object and uuid from the test case (see generateUuid)
+// - buyers: array of strings, each a domain for a buyer participating in this
+// auction
+// - auctionNonce: string, the auction nonce for this auction, typically
+// retrieved from a prior call to navigator.createAuctionNonce
+// - additionalBidsPromise: promise resolving to undefined, to be resolved when
+// the additional bids have been retrieved with fetch().
+async function runAdditionalBidTestNoWinner(
+ test, uuid, buyers, auctionNonce, additionalBidsPromise) {
+ await runBasicFledgeTestExpectingNoWinner(test, uuid, {
+ interestGroupBuyers: buyers,
+ auctionNonce: auctionNonce,
+ additionalBids: additionalBidsPromise,
+ decisionLogicURL: createDecisionScriptURL(uuid)
+ });
+}
+
// Runs "script" in "child_window" via an eval call. The "child_window" must
// have been created by calling "createFrame()" below. "param" is passed to the
// context "script" is run in, so can be used to pass objects that
@@ -812,6 +833,38 @@ let additionalBidHelper = function() {
secretKeysForInvalidSignatures = secretKeys;
}
+ // Sets the seller nonce that will be used in the server response.
+ function setSellerNonce(additionalBid, sellerNonce) {
+ getAndMaybeInitializeTestMetadata(additionalBid).
+ sellerNonce = sellerNonce;
+ }
+
+ // Instructs the server to remove the auctionNonce from the bid, and only
+ // include it in the header.
+ function removeAuctionNonceFromBid(additionalBid) {
+ getAndMaybeInitializeTestMetadata(additionalBid).
+ removeAuctionNonceFromBid = true;
+ }
+
+ // Instructs the server to use `bidAuctionNonceOverride` as the `auctionNonce`
+ // in the bid, even it doesn't match the auctionNonce in the header. Overrides
+ // the behavior of removeAuctionNonceFromBid().
+ function setBidAuctionNonceOverride(additionalBid, bidAuctionNonceOverride) {
+ getAndMaybeInitializeTestMetadata(additionalBid).
+ bidAuctionNonceOverride = bidAuctionNonceOverride;
+ }
+
+ // Takes the auctionNonce and sellerNonce as strings, and combines them with
+ // SHA256, returning the result as a base64 string.
+ async function computeBidNonce(auctionNonce, sellerNonce) {
+ // Compute the bidNonce as hashed bytes.
+ const combined_utf8 = new TextEncoder().encode(auctionNonce + sellerNonce);
+ const hashed = await crypto.subtle.digest('SHA-256',combined_utf8);
+
+ // Convert the hashed bytes to base64.
+ return btoa(String.fromCharCode(...new Uint8Array(hashed)));
+ }
+
// Adds a single negative interest group to an additional bid, as described at:
// https://github.com/WICG/turtledove/blob/main/FLEDGE.md#622-how-additional-bids-specify-their-negative-interest-groups
function addNegativeInterestGroup(additionalBid, negativeInterestGroup) {
@@ -846,6 +899,10 @@ let additionalBidHelper = function() {
createAdditionalBid: createAdditionalBid,
signWithSecretKeys: signWithSecretKeys,
incorrectlySignWithSecretKeys: incorrectlySignWithSecretKeys,
+ setSellerNonce: setSellerNonce,
+ removeAuctionNonceFromBid: removeAuctionNonceFromBid,
+ setBidAuctionNonceOverride: setBidAuctionNonceOverride,
+ computeBidNonce: computeBidNonce,
addNegativeInterestGroup: addNegativeInterestGroup,
addNegativeInterestGroups: addNegativeInterestGroups,
fetchAdditionalBids: fetchAdditionalBids
diff --git a/tests/wpt/tests/fledge/tentative/server-response.https.window.js b/tests/wpt/tests/fledge/tentative/server-response.https.window.js
index 1d272fb59a8..7bbe4bbf008 100644
--- a/tests/wpt/tests/fledge/tentative/server-response.https.window.js
+++ b/tests/wpt/tests/fledge/tentative/server-response.https.window.js
@@ -19,6 +19,7 @@
// META: variant=?41-44
// META: variant=?45-48
// META: variant=?49-52
+// META: variant=?53-56
// These tests focus on the serverResponse field in AuctionConfig, e.g.
// auctions involving bidding and auction services.
@@ -1029,6 +1030,32 @@ subsetTest(promise_test, async test => {
});
}, 'Hybrid B&A auction --- beacon reporting');
+/////////////////////////////////////////////////////////////////////////////
+// updateIfOlderThanMs tests
+//
+// NOTE: Due to the lack of mock time in wpt, these test just exercise the code
+// paths and ensure that no crash occurs -- they don't otherwise verify
+// behavior.
+/////////////////////////////////////////////////////////////////////////////
+
+subsetTest(promise_test, async test => {
+ await testWithMutatedServerResponse(test, /*expectSuccess=*/ true, msg => {
+ msg.updateGroups = {
+ [window.location.origin]: [
+ {index: 2048, updateIfOlderThanMs: 1000}]};
+ });
+}, 'Basic B&A auction - updateIfOlderThanMs - invalid index');
+
+
+subsetTest(promise_test, async test => {
+ await testWithMutatedServerResponse(test, /*expectSuccess=*/ true, msg => {
+ msg.updateGroups = {
+ [window.location.origin]: [
+ {index: 0, updateIfOlderThanMs: 1000},
+ {index: 1, updateIfOlderThanMs: 10000}]};
+ });
+}, 'Basic B&A auction - updateIfOlderThanMs');
+
/* Some things that are not currently tested that probably should be; this is
not exhaustive, merely to keep track of things that come to mind as tests are
written:
diff --git a/tests/wpt/tests/focus/support/activeelement-after-calling-window-focus-middle.sub.html b/tests/wpt/tests/focus/support/activeelement-after-calling-window-focus-middle.sub.html
index c5a0d60a71d..da5164e4252 100644
--- a/tests/wpt/tests/focus/support/activeelement-after-calling-window-focus-middle.sub.html
+++ b/tests/wpt/tests/focus/support/activeelement-after-calling-window-focus-middle.sub.html
@@ -2,7 +2,7 @@
<meta charset="utf-8">
<title>Focus test middle document</title>
<h1>Middle</h1><br>
-<iframe src="https://{{hosts[][www]}}:{{ports[https][0]}}/focus/support/activeelement-after-calling-window-focus-inner.html"></iframe>
+<iframe allow="focus-without-user-activation" src="https://{{hosts[][www]}}:{{ports[https][0]}}/focus/support/activeelement-after-calling-window-focus-inner.html"></iframe>
<script>
let middlelog = "middlelog:";
diff --git a/tests/wpt/tests/focus/support/activeelement-after-calling-window-focus-outer-different.sub.html b/tests/wpt/tests/focus/support/activeelement-after-calling-window-focus-outer-different.sub.html
index 2cddcf233db..bbbb50d4e45 100644
--- a/tests/wpt/tests/focus/support/activeelement-after-calling-window-focus-outer-different.sub.html
+++ b/tests/wpt/tests/focus/support/activeelement-after-calling-window-focus-outer-different.sub.html
@@ -1,7 +1,7 @@
<!doctype html>
<meta charset="utf-8">
<title>Focus test outer document</title>
-<iframe src="https://{{hosts[alt][www]}}:{{ports[https][0]}}/focus/support/activeelement-after-calling-window-focus-middle.sub.html"></iframe>
+<iframe allow="focus-without-user-activation" src="https://{{hosts[alt][www]}}:{{ports[https][0]}}/focus/support/activeelement-after-calling-window-focus-middle.sub.html"></iframe>
<script>
let outerlog = "outerlog:";
diff --git a/tests/wpt/tests/focus/support/activeelement-after-calling-window-focus-outer-same.sub.html b/tests/wpt/tests/focus/support/activeelement-after-calling-window-focus-outer-same.sub.html
index 4833e94bc94..b3ce29e20d2 100644
--- a/tests/wpt/tests/focus/support/activeelement-after-calling-window-focus-outer-same.sub.html
+++ b/tests/wpt/tests/focus/support/activeelement-after-calling-window-focus-outer-same.sub.html
@@ -1,7 +1,7 @@
<!doctype html>
<meta charset="utf-8">
<title>Focus test outer document</title>
-<iframe src="https://{{hosts[][www]}}:{{ports[https][0]}}/focus/support/activeelement-after-calling-window-focus-middle.sub.html"></iframe>
+<iframe allow="focus-without-user-activation" src="https://{{hosts[][www]}}:{{ports[https][0]}}/focus/support/activeelement-after-calling-window-focus-middle.sub.html"></iframe>
<script>
let outerlog = "outerlog:";
diff --git a/tests/wpt/tests/focus/support/activeelement-after-focusing-different-site-iframe-outer-contentwindow.sub.html b/tests/wpt/tests/focus/support/activeelement-after-focusing-different-site-iframe-outer-contentwindow.sub.html
index fd66cbaa55c..4a9a9a110d9 100644
--- a/tests/wpt/tests/focus/support/activeelement-after-focusing-different-site-iframe-outer-contentwindow.sub.html
+++ b/tests/wpt/tests/focus/support/activeelement-after-focusing-different-site-iframe-outer-contentwindow.sub.html
@@ -26,4 +26,4 @@ window.onload = function() {
}, 1500);
}
</script>
-<iframe src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/focus/support/activeelement-after-focusing-different-site-iframe-inner-contentwindow.html"></iframe>
+<iframe allow="focus-without-user-activation" src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/focus/support/activeelement-after-focusing-different-site-iframe-inner-contentwindow.html"></iframe>
diff --git a/tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-middle.sub.html b/tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-middle.sub.html
index e3a5facf82e..c59e3ec703f 100644
--- a/tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-middle.sub.html
+++ b/tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-middle.sub.html
@@ -1,7 +1,7 @@
<!doctype html>
<meta charset="utf-8">
<title>iframe.contentWindow.focus() with different-site intermediate frame middle</title>
-<iframe src="http://{{hosts[][www]}}:{{ports[http][0]}}/focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-inner.html"></iframe>
+<iframe allow="focus-without-user-activation" src="http://{{hosts[][www]}}:{{ports[http][0]}}/focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-inner.html"></iframe>
<script>
let iframe = document.getElementsByTagName("iframe")[0];
let log = "";
diff --git a/tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-outer.sub.html b/tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-outer.sub.html
index 9dbb6af9d9a..cc5412dfb48 100644
--- a/tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-outer.sub.html
+++ b/tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-outer.sub.html
@@ -19,4 +19,4 @@ window.onload = function() {
}, 3000);
}
</script>
-<iframe src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-middle.sub.html"></iframe>
+<iframe allow="focus-without-user-activation" src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-middle.sub.html"></iframe>
diff --git a/tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-same-as-top-intermediate-frame-middle.sub.html b/tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-same-as-top-intermediate-frame-middle.sub.html
index 747e1467466..a94a03101c5 100644
--- a/tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-same-as-top-intermediate-frame-middle.sub.html
+++ b/tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-same-as-top-intermediate-frame-middle.sub.html
@@ -1,7 +1,7 @@
<!doctype html>
<meta charset="utf-8">
<title>iframe.contentWindow.focus() with same-as-top intermediate frame middle</title>
-<iframe src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/focus/support/iframe-contentwindow-focus-with-same-as-top-intermediate-frame-inner.html"></iframe>
+<iframe allow="focus-without-user-activation" src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/focus/support/iframe-contentwindow-focus-with-same-as-top-intermediate-frame-inner.html"></iframe>
<script>
let iframe = document.getElementsByTagName("iframe")[0];
let log = "";
diff --git a/tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-same-as-top-intermediate-frame-outer.html b/tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-same-as-top-intermediate-frame-outer.html
index 71cfe78c0d7..bd96a9680ce 100644
--- a/tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-same-as-top-intermediate-frame-outer.html
+++ b/tests/wpt/tests/focus/support/iframe-contentwindow-focus-with-same-as-top-intermediate-frame-outer.html
@@ -19,4 +19,4 @@ window.onload = function() {
}, 2000);
}
</script>
-<iframe src="iframe-contentwindow-focus-with-same-as-top-intermediate-frame-middle.sub.html"></iframe>
+<iframe allow="focus-without-user-activation" src="iframe-contentwindow-focus-with-same-as-top-intermediate-frame-middle.sub.html"></iframe>
diff --git a/tests/wpt/tests/focus/support/iframe-focus-with-different-site-intermediate-frame-outer.sub.html b/tests/wpt/tests/focus/support/iframe-focus-with-different-site-intermediate-frame-outer.sub.html
index 5e80410206d..299f3787b3a 100644
--- a/tests/wpt/tests/focus/support/iframe-focus-with-different-site-intermediate-frame-outer.sub.html
+++ b/tests/wpt/tests/focus/support/iframe-focus-with-different-site-intermediate-frame-outer.sub.html
@@ -19,4 +19,4 @@ window.onload = function() {
}, 3000);
}
</script>
-<iframe src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/focus/support/iframe-focus-with-different-site-intermediate-frame-middle.sub.html"></iframe>
+<iframe allow="focus-without-user-activation" src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/focus/support/iframe-focus-with-different-site-intermediate-frame-middle.sub.html"></iframe>
diff --git a/tests/wpt/tests/fullscreen/crashtests/chrome-1312699.html b/tests/wpt/tests/fullscreen/crashtests/chrome-1312699.html
deleted file mode 100644
index c783b0d9cc9..00000000000
--- a/tests/wpt/tests/fullscreen/crashtests/chrome-1312699.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html>
-<html class="reftest-wait">
-<link rel="help" href="https://crbug.com/1312699">
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<video></video>
-<script>
- async function crash() {
- let video = document.querySelector("video");
- await video.requestFullscreen();
- video.width = null;
- document.documentElement.classList.remove("reftest-wait");
- }
- document.addEventListener("click", () => crash(), false);
-
- requestAnimationFrame(() => requestAnimationFrame(() => {
- test_driver.click(document.body);
- }));
-</script>
-</body>
-</html>
diff --git a/tests/wpt/tests/fullscreen/crashtests/content-visibility-crash.html b/tests/wpt/tests/fullscreen/crashtests/content-visibility-crash.html
deleted file mode 100644
index 63111d03e3f..00000000000
--- a/tests/wpt/tests/fullscreen/crashtests/content-visibility-crash.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html class=test-wait>
-<link rel=author href="mailto:m.cooolie@gmail.com">
-<link rel=author href="mailto:jarhar@chromium.org">
-<link rel=help href="https://bugs.chromium.org/p/chromium/issues/detail?id=1338135">
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<body>
-<script>
-async function crash() {
- const col = document.createElement("col");
- document.body.appendChild(col);
-
- let fullscreenPromise = null;
- await test_driver.bless('open fullscreen', () => {
- fullscreenPromise = col.requestFullscreen({navigationUI: 'hide'});
- });
- await fullscreenPromise;
-
- const a = document.createElement("a");
- document.body.appendChild(a);
-
- document.body.style.all = 'unset';
- document.body.style.contentVisibility = 'hidden';
-
- a.offsetParent;
-
- document.documentElement.classList.remove('test-wait');
-}
-crash();
-</script>
diff --git a/tests/wpt/tests/fullscreen/rendering/backdrop-green-ref.html b/tests/wpt/tests/fullscreen/rendering/backdrop-green-ref.html
deleted file mode 100644
index 3126fe19426..00000000000
--- a/tests/wpt/tests/fullscreen/rendering/backdrop-green-ref.html
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE html>
-<body style="background: green"></body>
diff --git a/tests/wpt/tests/fullscreen/rendering/backdrop-iframe.html b/tests/wpt/tests/fullscreen/rendering/backdrop-iframe.html
deleted file mode 100644
index dbdf9c841a4..00000000000
--- a/tests/wpt/tests/fullscreen/rendering/backdrop-iframe.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html class=reftest-wait>
-<title>::backdrop for a fullscreen iframe element</title>
-<link rel=match href="backdrop-green-ref.html">
-<link rel=help href="https://github.com/w3c/csswg-drafts/issues/6939">
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-
-<style>
-iframe::backdrop {
- background: green;
-}
-</style>
-<iframe></iframe>
-<script>
-document.addEventListener('fullscreenchange', () => {
- document.documentElement.classList.remove('reftest-wait');
-});
-test_driver.bless('fullscreen', () => {
- document.querySelector('iframe').requestFullscreen();
-});
-</script>
diff --git a/tests/wpt/tests/fullscreen/rendering/backdrop-inherit.html b/tests/wpt/tests/fullscreen/rendering/backdrop-inherit.html
deleted file mode 100644
index 3a38dc4c815..00000000000
--- a/tests/wpt/tests/fullscreen/rendering/backdrop-inherit.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE html>
-<html class=reftest-wait>
-<title>::backdrop inherits style from the fullscreen element</title>
-<link rel=match href="backdrop-green-ref.html">
-<link rel=help href="https://github.com/whatwg/fullscreen/issues/124">
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<style>
-body {
- --bg: red;
-}
-div {
- --bg: green;
-}
-div::backdrop {
- background: var(--bg);
-}
-</style>
-<div></div>
-<script>
-document.addEventListener('fullscreenchange', () => {
- document.documentElement.classList.remove('reftest-wait');
-});
-test_driver.bless('fullscreen', () => {
- document.querySelector('div').requestFullscreen();
-});
-</script>
diff --git a/tests/wpt/tests/fullscreen/rendering/backdrop-object-ref.html b/tests/wpt/tests/fullscreen/rendering/backdrop-object-ref.html
deleted file mode 100644
index 6c7071a727d..00000000000
--- a/tests/wpt/tests/fullscreen/rendering/backdrop-object-ref.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE html>
-<style>
-body {
- background: blue;
- margin: 0;
-}
-div {
- position: fixed;
- width: 100px;
- height: 100px;
- background: green;
-}
-</style>
-<div></div>
diff --git a/tests/wpt/tests/fullscreen/rendering/backdrop-object.html b/tests/wpt/tests/fullscreen/rendering/backdrop-object.html
deleted file mode 100644
index be285b76124..00000000000
--- a/tests/wpt/tests/fullscreen/rendering/backdrop-object.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<html class=reftest-wait>
-<title>::backdrop for a fullscreen object element</title>
-<link rel=match href="backdrop-object-ref.html">
-<link rel=help href="https://github.com/w3c/csswg-drafts/issues/6939">
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-
-<style>
-object::backdrop {
- background: blue;
-}
-</style>
-<object width="200" type="image/svg+xml" data="../../images/100px-green-rect.svg"></object>
-<script>
-const object = document.querySelector("object");
-Promise.all([
- new Promise((resolve, reject) => document.addEventListener("fullscreenchange", resolve)),
- new Promise((resolve, reject) => object.addEventListener("load", resolve))
-]).then(() => document.documentElement.classList.remove('reftest-wait'));
-
-test_driver.bless('fullscreen', () => object.requestFullscreen());
-</script>
diff --git a/tests/wpt/tests/fullscreen/rendering/fullscreen-root-fills-page-ref.html b/tests/wpt/tests/fullscreen/rendering/fullscreen-root-fills-page-ref.html
deleted file mode 100644
index b2bf13557a2..00000000000
--- a/tests/wpt/tests/fullscreen/rendering/fullscreen-root-fills-page-ref.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <style>
- html, body {
- width: 100%;
- height: 100%;
- margin: 0;
- padding: 0;
- }
-
- body {
- background-color: green;
- }
- </style>
-</head>
-<body></body>
-</html>
diff --git a/tests/wpt/tests/fullscreen/rendering/fullscreen-root-fills-page.html b/tests/wpt/tests/fullscreen/rendering/fullscreen-root-fills-page.html
deleted file mode 100644
index e2a6217346d..00000000000
--- a/tests/wpt/tests/fullscreen/rendering/fullscreen-root-fills-page.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<html class="reftest-wait">
-<head>
- <link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
- <link rel="match" href="fullscreen-root-fills-page-ref.html">
- <style>
- html {
- background-color: red;
- height: 100%;
- overflow: hidden;
-
- /* These should be no-op */
- top: 200px;
- left: 200px;
- right: 200px;
- bottom: 200px;
- }
-
- html, body {
- margin: 0;
- padding: 0;
- }
-
- body, #cover {
- height: 100%;
- width: 100%;
- }
-
- #cover {
- background-color: green;
- }
- </style>
-</head>
-
-<body>
- <div id="cover"></div>
- <script src="/resources/testdriver.js"></script>
- <script src="/resources/testdriver-vendor.js"></script>
- <script>
- document.addEventListener("fullscreenchange", () => {
- document.documentElement.classList.remove("reftest-wait");
- });
- test_driver.bless("fullscreen")
- .then(() => document.documentElement.requestFullscreen())
- </script>
-</body>
-</html>
diff --git a/tests/wpt/tests/generic-sensor/generic-sensor-iframe-tests.sub.js b/tests/wpt/tests/generic-sensor/generic-sensor-iframe-tests.sub.js
index ed3415e66ec..277d5d0ea9b 100644
--- a/tests/wpt/tests/generic-sensor/generic-sensor-iframe-tests.sub.js
+++ b/tests/wpt/tests/generic-sensor/generic-sensor-iframe-tests.sub.js
@@ -96,7 +96,7 @@ function run_generic_sensor_iframe_tests(sensorData, readingData) {
// Create cross-origin iframe and a sensor inside it.
const iframe = document.createElement('iframe');
- iframe.allow = featurePolicies.join(';') + ';';
+ iframe.allow = featurePolicies.join(';') + '; focus-without-user-activation;';
iframe.src =
'https://{{domains[www1]}}:{{ports[https][0]}}/generic-sensor/resources/iframe_sensor_handler.html';
const iframeLoadWatcher = new EventWatcher(t, iframe, 'load');
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.drawImage.html b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.drawImage.html
index 8e6b95ae221..acf9892ec37 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.drawImage.html
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.drawImage.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.filter.no_shadow.drawImage-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.no_shadow.drawImage</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.no_shadow.drawImage</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = document.getElementById("canvas0");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -29,10 +29,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -51,7 +51,7 @@
const canvas = document.getElementById("canvas1");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -61,10 +61,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -83,7 +83,7 @@
const canvas = document.getElementById("canvas2");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -93,10 +93,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -115,7 +115,7 @@
const canvas = document.getElementById("canvas3");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -125,10 +125,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -147,7 +147,7 @@
const canvas = document.getElementById("canvas4");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -157,10 +157,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -179,7 +179,7 @@
const canvas = document.getElementById("canvas5");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -189,10 +189,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -211,7 +211,7 @@
const canvas = document.getElementById("canvas6");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -221,10 +221,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -243,7 +243,7 @@
const canvas = document.getElementById("canvas7");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -253,10 +253,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -275,7 +275,7 @@
const canvas = document.getElementById("canvas8");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -285,10 +285,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -307,7 +307,7 @@
const canvas = document.getElementById("canvas9");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -317,10 +317,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -339,7 +339,7 @@
const canvas = document.getElementById("canvas10");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -349,10 +349,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -371,7 +371,7 @@
const canvas = document.getElementById("canvas11");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -381,10 +381,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -403,7 +403,7 @@
const canvas = document.getElementById("canvas12");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -413,10 +413,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -435,7 +435,7 @@
const canvas = document.getElementById("canvas13");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -445,10 +445,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -467,7 +467,7 @@
const canvas = document.getElementById("canvas14");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -477,10 +477,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -499,7 +499,7 @@
const canvas = document.getElementById("canvas15");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -509,10 +509,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -531,7 +531,7 @@
const canvas = document.getElementById("canvas16");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -541,10 +541,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -563,7 +563,7 @@
const canvas = document.getElementById("canvas17");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -573,10 +573,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -595,7 +595,7 @@
const canvas = document.getElementById("canvas18");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -605,10 +605,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -627,7 +627,7 @@
const canvas = document.getElementById("canvas19");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -637,10 +637,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -659,7 +659,7 @@
const canvas = document.getElementById("canvas20");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -669,10 +669,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -691,7 +691,7 @@
const canvas = document.getElementById("canvas21");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -701,10 +701,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -723,7 +723,7 @@
const canvas = document.getElementById("canvas22");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -733,10 +733,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -755,7 +755,7 @@
const canvas = document.getElementById("canvas23");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -765,10 +765,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -787,7 +787,7 @@
const canvas = document.getElementById("canvas24");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -797,10 +797,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -819,7 +819,7 @@
const canvas = document.getElementById("canvas25");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -829,10 +829,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.drawImage.png b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.drawImage.png
index 2318c1ec94e..263ed6ecdd2 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.drawImage.png
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.drawImage.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.fillRect.html b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.fillRect.html
index 5dca89e3c12..be37d492581 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.fillRect.html
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.fillRect.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.filter.no_shadow.fillRect-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.no_shadow.fillRect</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.no_shadow.fillRect</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = document.getElementById("canvas0");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -29,10 +29,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -48,7 +48,7 @@
const canvas = document.getElementById("canvas1");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -58,10 +58,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -77,7 +77,7 @@
const canvas = document.getElementById("canvas2");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -87,10 +87,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -106,7 +106,7 @@
const canvas = document.getElementById("canvas3");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -116,10 +116,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -135,7 +135,7 @@
const canvas = document.getElementById("canvas4");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -145,10 +145,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -164,7 +164,7 @@
const canvas = document.getElementById("canvas5");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -174,10 +174,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -193,7 +193,7 @@
const canvas = document.getElementById("canvas6");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -203,10 +203,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -222,7 +222,7 @@
const canvas = document.getElementById("canvas7");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -232,10 +232,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -251,7 +251,7 @@
const canvas = document.getElementById("canvas8");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -261,10 +261,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -280,7 +280,7 @@
const canvas = document.getElementById("canvas9");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -290,10 +290,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -309,7 +309,7 @@
const canvas = document.getElementById("canvas10");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -319,10 +319,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -338,7 +338,7 @@
const canvas = document.getElementById("canvas11");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -348,10 +348,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -367,7 +367,7 @@
const canvas = document.getElementById("canvas12");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -377,10 +377,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -396,7 +396,7 @@
const canvas = document.getElementById("canvas13");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -406,10 +406,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -425,7 +425,7 @@
const canvas = document.getElementById("canvas14");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -435,10 +435,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -454,7 +454,7 @@
const canvas = document.getElementById("canvas15");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -464,10 +464,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -483,7 +483,7 @@
const canvas = document.getElementById("canvas16");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -493,10 +493,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -512,7 +512,7 @@
const canvas = document.getElementById("canvas17");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -522,10 +522,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -541,7 +541,7 @@
const canvas = document.getElementById("canvas18");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -551,10 +551,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -570,7 +570,7 @@
const canvas = document.getElementById("canvas19");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -580,10 +580,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -599,7 +599,7 @@
const canvas = document.getElementById("canvas20");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -609,10 +609,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -628,7 +628,7 @@
const canvas = document.getElementById("canvas21");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -638,10 +638,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -657,7 +657,7 @@
const canvas = document.getElementById("canvas22");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -667,10 +667,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -686,7 +686,7 @@
const canvas = document.getElementById("canvas23");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -696,10 +696,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -715,7 +715,7 @@
const canvas = document.getElementById("canvas24");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -725,10 +725,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -744,7 +744,7 @@
const canvas = document.getElementById("canvas25");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -754,10 +754,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.fillRect.png b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.fillRect.png
index 2318c1ec94e..263ed6ecdd2 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.fillRect.png
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.fillRect.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.pattern.html b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.pattern.html
index 6b3c4c6a589..7e68be70eaa 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.pattern.html
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.pattern.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.filter.no_shadow.pattern-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.no_shadow.pattern</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.no_shadow.pattern</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = document.getElementById("canvas0");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -29,10 +29,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -52,7 +52,7 @@
const canvas = document.getElementById("canvas1");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -62,10 +62,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -85,7 +85,7 @@
const canvas = document.getElementById("canvas2");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -95,10 +95,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -118,7 +118,7 @@
const canvas = document.getElementById("canvas3");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -128,10 +128,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -151,7 +151,7 @@
const canvas = document.getElementById("canvas4");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -161,10 +161,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -184,7 +184,7 @@
const canvas = document.getElementById("canvas5");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -194,10 +194,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -217,7 +217,7 @@
const canvas = document.getElementById("canvas6");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -227,10 +227,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -250,7 +250,7 @@
const canvas = document.getElementById("canvas7");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -260,10 +260,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -283,7 +283,7 @@
const canvas = document.getElementById("canvas8");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -293,10 +293,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -316,7 +316,7 @@
const canvas = document.getElementById("canvas9");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -326,10 +326,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -349,7 +349,7 @@
const canvas = document.getElementById("canvas10");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -359,10 +359,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -382,7 +382,7 @@
const canvas = document.getElementById("canvas11");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -392,10 +392,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -415,7 +415,7 @@
const canvas = document.getElementById("canvas12");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -425,10 +425,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -448,7 +448,7 @@
const canvas = document.getElementById("canvas13");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -458,10 +458,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -481,7 +481,7 @@
const canvas = document.getElementById("canvas14");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -491,10 +491,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -514,7 +514,7 @@
const canvas = document.getElementById("canvas15");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -524,10 +524,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -547,7 +547,7 @@
const canvas = document.getElementById("canvas16");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -557,10 +557,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -580,7 +580,7 @@
const canvas = document.getElementById("canvas17");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -590,10 +590,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -613,7 +613,7 @@
const canvas = document.getElementById("canvas18");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -623,10 +623,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -646,7 +646,7 @@
const canvas = document.getElementById("canvas19");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -656,10 +656,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -679,7 +679,7 @@
const canvas = document.getElementById("canvas20");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -689,10 +689,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -712,7 +712,7 @@
const canvas = document.getElementById("canvas21");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -722,10 +722,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -745,7 +745,7 @@
const canvas = document.getElementById("canvas22");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -755,10 +755,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -778,7 +778,7 @@
const canvas = document.getElementById("canvas23");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -788,10 +788,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -811,7 +811,7 @@
const canvas = document.getElementById("canvas24");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -821,10 +821,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -844,7 +844,7 @@
const canvas = document.getElementById("canvas25");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -854,10 +854,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.pattern.png b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.pattern.png
index 2318c1ec94e..263ed6ecdd2 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.pattern.png
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.no_shadow.pattern.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.drawImage.html b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.drawImage.html
index f6872b22127..918debe2e40 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.drawImage.html
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.drawImage.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.filter.shadow.drawImage-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.shadow.drawImage</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.shadow.drawImage</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = document.getElementById("canvas0");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -29,12 +29,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -53,7 +53,7 @@
const canvas = document.getElementById("canvas1");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -63,12 +63,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -87,7 +87,7 @@
const canvas = document.getElementById("canvas2");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -97,12 +97,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -121,7 +121,7 @@
const canvas = document.getElementById("canvas3");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -131,12 +131,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -155,7 +155,7 @@
const canvas = document.getElementById("canvas4");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -165,12 +165,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -189,7 +189,7 @@
const canvas = document.getElementById("canvas5");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -199,12 +199,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -223,7 +223,7 @@
const canvas = document.getElementById("canvas6");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -233,12 +233,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -257,7 +257,7 @@
const canvas = document.getElementById("canvas7");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -267,12 +267,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -291,7 +291,7 @@
const canvas = document.getElementById("canvas8");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -301,12 +301,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -325,7 +325,7 @@
const canvas = document.getElementById("canvas9");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -335,12 +335,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -359,7 +359,7 @@
const canvas = document.getElementById("canvas10");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -369,12 +369,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -393,7 +393,7 @@
const canvas = document.getElementById("canvas11");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -403,12 +403,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -427,7 +427,7 @@
const canvas = document.getElementById("canvas12");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -437,12 +437,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -461,7 +461,7 @@
const canvas = document.getElementById("canvas13");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -471,12 +471,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -495,7 +495,7 @@
const canvas = document.getElementById("canvas14");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -505,12 +505,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -529,7 +529,7 @@
const canvas = document.getElementById("canvas15");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -539,12 +539,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -563,7 +563,7 @@
const canvas = document.getElementById("canvas16");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -573,12 +573,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -597,7 +597,7 @@
const canvas = document.getElementById("canvas17");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -607,12 +607,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -631,7 +631,7 @@
const canvas = document.getElementById("canvas18");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -641,12 +641,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -665,7 +665,7 @@
const canvas = document.getElementById("canvas19");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -675,12 +675,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -699,7 +699,7 @@
const canvas = document.getElementById("canvas20");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -709,12 +709,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -733,7 +733,7 @@
const canvas = document.getElementById("canvas21");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -743,12 +743,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -767,7 +767,7 @@
const canvas = document.getElementById("canvas22");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -777,12 +777,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -801,7 +801,7 @@
const canvas = document.getElementById("canvas23");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -811,12 +811,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -835,7 +835,7 @@
const canvas = document.getElementById("canvas24");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -845,12 +845,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -869,7 +869,7 @@
const canvas = document.getElementById("canvas25");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -879,12 +879,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.drawImage.png b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.drawImage.png
index fde78773116..ade9f67ef2e 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.drawImage.png
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.drawImage.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.fillRect.html b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.fillRect.html
index 1c68c0e4540..363f9ed454e 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.fillRect.html
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.fillRect.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.filter.shadow.fillRect-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.shadow.fillRect</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.shadow.fillRect</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = document.getElementById("canvas0");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -29,12 +29,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -50,7 +50,7 @@
const canvas = document.getElementById("canvas1");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -60,12 +60,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -81,7 +81,7 @@
const canvas = document.getElementById("canvas2");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -91,12 +91,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -112,7 +112,7 @@
const canvas = document.getElementById("canvas3");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -122,12 +122,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -143,7 +143,7 @@
const canvas = document.getElementById("canvas4");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -153,12 +153,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -174,7 +174,7 @@
const canvas = document.getElementById("canvas5");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -184,12 +184,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -205,7 +205,7 @@
const canvas = document.getElementById("canvas6");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -215,12 +215,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -236,7 +236,7 @@
const canvas = document.getElementById("canvas7");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -246,12 +246,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -267,7 +267,7 @@
const canvas = document.getElementById("canvas8");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -277,12 +277,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -298,7 +298,7 @@
const canvas = document.getElementById("canvas9");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -308,12 +308,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -329,7 +329,7 @@
const canvas = document.getElementById("canvas10");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -339,12 +339,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -360,7 +360,7 @@
const canvas = document.getElementById("canvas11");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -370,12 +370,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -391,7 +391,7 @@
const canvas = document.getElementById("canvas12");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -401,12 +401,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -422,7 +422,7 @@
const canvas = document.getElementById("canvas13");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -432,12 +432,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -453,7 +453,7 @@
const canvas = document.getElementById("canvas14");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -463,12 +463,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -484,7 +484,7 @@
const canvas = document.getElementById("canvas15");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -494,12 +494,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -515,7 +515,7 @@
const canvas = document.getElementById("canvas16");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -525,12 +525,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -546,7 +546,7 @@
const canvas = document.getElementById("canvas17");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -556,12 +556,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -577,7 +577,7 @@
const canvas = document.getElementById("canvas18");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -587,12 +587,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -608,7 +608,7 @@
const canvas = document.getElementById("canvas19");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -618,12 +618,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -639,7 +639,7 @@
const canvas = document.getElementById("canvas20");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -649,12 +649,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -670,7 +670,7 @@
const canvas = document.getElementById("canvas21");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -680,12 +680,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -701,7 +701,7 @@
const canvas = document.getElementById("canvas22");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -711,12 +711,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -732,7 +732,7 @@
const canvas = document.getElementById("canvas23");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -742,12 +742,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -763,7 +763,7 @@
const canvas = document.getElementById("canvas24");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -773,12 +773,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -794,7 +794,7 @@
const canvas = document.getElementById("canvas25");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -804,12 +804,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.fillRect.png b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.fillRect.png
index fde78773116..ade9f67ef2e 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.fillRect.png
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.fillRect.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.pattern.html b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.pattern.html
index 1e3f14fb9a3..18ea3a473d8 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.pattern.html
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.pattern.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.filter.shadow.pattern-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.shadow.pattern</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.shadow.pattern</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = document.getElementById("canvas0");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -29,12 +29,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -54,7 +54,7 @@
const canvas = document.getElementById("canvas1");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -64,12 +64,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -89,7 +89,7 @@
const canvas = document.getElementById("canvas2");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -99,12 +99,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -124,7 +124,7 @@
const canvas = document.getElementById("canvas3");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -134,12 +134,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -159,7 +159,7 @@
const canvas = document.getElementById("canvas4");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -169,12 +169,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -194,7 +194,7 @@
const canvas = document.getElementById("canvas5");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -204,12 +204,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -229,7 +229,7 @@
const canvas = document.getElementById("canvas6");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -239,12 +239,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -264,7 +264,7 @@
const canvas = document.getElementById("canvas7");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -274,12 +274,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -299,7 +299,7 @@
const canvas = document.getElementById("canvas8");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -309,12 +309,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -334,7 +334,7 @@
const canvas = document.getElementById("canvas9");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -344,12 +344,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -369,7 +369,7 @@
const canvas = document.getElementById("canvas10");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -379,12 +379,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -404,7 +404,7 @@
const canvas = document.getElementById("canvas11");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -414,12 +414,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -439,7 +439,7 @@
const canvas = document.getElementById("canvas12");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -449,12 +449,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -474,7 +474,7 @@
const canvas = document.getElementById("canvas13");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -484,12 +484,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -509,7 +509,7 @@
const canvas = document.getElementById("canvas14");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -519,12 +519,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -544,7 +544,7 @@
const canvas = document.getElementById("canvas15");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -554,12 +554,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -579,7 +579,7 @@
const canvas = document.getElementById("canvas16");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -589,12 +589,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -614,7 +614,7 @@
const canvas = document.getElementById("canvas17");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -624,12 +624,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -649,7 +649,7 @@
const canvas = document.getElementById("canvas18");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -659,12 +659,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -684,7 +684,7 @@
const canvas = document.getElementById("canvas19");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -694,12 +694,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -719,7 +719,7 @@
const canvas = document.getElementById("canvas20");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -729,12 +729,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -754,7 +754,7 @@
const canvas = document.getElementById("canvas21");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -764,12 +764,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -789,7 +789,7 @@
const canvas = document.getElementById("canvas22");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -799,12 +799,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -824,7 +824,7 @@
const canvas = document.getElementById("canvas23");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -834,12 +834,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -859,7 +859,7 @@
const canvas = document.getElementById("canvas24");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -869,12 +869,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -894,7 +894,7 @@
const canvas = document.getElementById("canvas25");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -904,12 +904,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.pattern.png b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.pattern.png
index fde78773116..ade9f67ef2e 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.pattern.png
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.filter.shadow.pattern.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.html b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.html
index 31e0fba7918..cd9ad95b92c 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.html
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.no_filter.no_shadow.drawImage-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.no_shadow.drawImage</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.no_shadow.drawImage</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = document.getElementById("canvas0");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,7 +32,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -51,7 +51,7 @@
const canvas = document.getElementById("canvas1");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -64,7 +64,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -83,7 +83,7 @@
const canvas = document.getElementById("canvas2");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -96,7 +96,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -115,7 +115,7 @@
const canvas = document.getElementById("canvas3");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -128,7 +128,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -147,7 +147,7 @@
const canvas = document.getElementById("canvas4");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -160,7 +160,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -179,7 +179,7 @@
const canvas = document.getElementById("canvas5");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -192,7 +192,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -211,7 +211,7 @@
const canvas = document.getElementById("canvas6");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -224,7 +224,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -243,7 +243,7 @@
const canvas = document.getElementById("canvas7");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -256,7 +256,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -275,7 +275,7 @@
const canvas = document.getElementById("canvas8");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -288,7 +288,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -307,7 +307,7 @@
const canvas = document.getElementById("canvas9");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -320,7 +320,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -339,7 +339,7 @@
const canvas = document.getElementById("canvas10");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -352,7 +352,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -371,7 +371,7 @@
const canvas = document.getElementById("canvas11");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -384,7 +384,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -403,7 +403,7 @@
const canvas = document.getElementById("canvas12");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -416,7 +416,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -435,7 +435,7 @@
const canvas = document.getElementById("canvas13");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -448,7 +448,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -467,7 +467,7 @@
const canvas = document.getElementById("canvas14");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -480,7 +480,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -499,7 +499,7 @@
const canvas = document.getElementById("canvas15");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -512,7 +512,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -531,7 +531,7 @@
const canvas = document.getElementById("canvas16");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -544,7 +544,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -563,7 +563,7 @@
const canvas = document.getElementById("canvas17");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -576,7 +576,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -595,7 +595,7 @@
const canvas = document.getElementById("canvas18");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -608,7 +608,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -627,7 +627,7 @@
const canvas = document.getElementById("canvas19");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -640,7 +640,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -659,7 +659,7 @@
const canvas = document.getElementById("canvas20");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -672,7 +672,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -691,7 +691,7 @@
const canvas = document.getElementById("canvas21");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -704,7 +704,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -723,7 +723,7 @@
const canvas = document.getElementById("canvas22");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -736,7 +736,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -755,7 +755,7 @@
const canvas = document.getElementById("canvas23");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -768,7 +768,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -787,7 +787,7 @@
const canvas = document.getElementById("canvas24");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -800,7 +800,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -819,7 +819,7 @@
const canvas = document.getElementById("canvas25");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -832,7 +832,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.png b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.png
index ce392a1dccc..0163f403ca4 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.png
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.html b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.html
index e14c336868e..f007fd3fc7e 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.html
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.no_filter.no_shadow.fillRect-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.no_shadow.fillRect</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.no_shadow.fillRect</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = document.getElementById("canvas0");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,7 +32,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -48,7 +48,7 @@
const canvas = document.getElementById("canvas1");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -61,7 +61,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -77,7 +77,7 @@
const canvas = document.getElementById("canvas2");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -90,7 +90,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -106,7 +106,7 @@
const canvas = document.getElementById("canvas3");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -119,7 +119,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -135,7 +135,7 @@
const canvas = document.getElementById("canvas4");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -148,7 +148,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -164,7 +164,7 @@
const canvas = document.getElementById("canvas5");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -177,7 +177,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -193,7 +193,7 @@
const canvas = document.getElementById("canvas6");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -206,7 +206,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -222,7 +222,7 @@
const canvas = document.getElementById("canvas7");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -235,7 +235,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -251,7 +251,7 @@
const canvas = document.getElementById("canvas8");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -264,7 +264,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -280,7 +280,7 @@
const canvas = document.getElementById("canvas9");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -293,7 +293,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -309,7 +309,7 @@
const canvas = document.getElementById("canvas10");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -322,7 +322,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -338,7 +338,7 @@
const canvas = document.getElementById("canvas11");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -351,7 +351,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -367,7 +367,7 @@
const canvas = document.getElementById("canvas12");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -380,7 +380,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -396,7 +396,7 @@
const canvas = document.getElementById("canvas13");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -409,7 +409,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -425,7 +425,7 @@
const canvas = document.getElementById("canvas14");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -438,7 +438,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -454,7 +454,7 @@
const canvas = document.getElementById("canvas15");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -467,7 +467,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -483,7 +483,7 @@
const canvas = document.getElementById("canvas16");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -496,7 +496,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -512,7 +512,7 @@
const canvas = document.getElementById("canvas17");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -525,7 +525,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -541,7 +541,7 @@
const canvas = document.getElementById("canvas18");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -554,7 +554,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -570,7 +570,7 @@
const canvas = document.getElementById("canvas19");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -583,7 +583,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -599,7 +599,7 @@
const canvas = document.getElementById("canvas20");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -612,7 +612,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -628,7 +628,7 @@
const canvas = document.getElementById("canvas21");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -641,7 +641,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -657,7 +657,7 @@
const canvas = document.getElementById("canvas22");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -670,7 +670,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -686,7 +686,7 @@
const canvas = document.getElementById("canvas23");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -699,7 +699,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -715,7 +715,7 @@
const canvas = document.getElementById("canvas24");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -728,7 +728,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -744,7 +744,7 @@
const canvas = document.getElementById("canvas25");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -757,7 +757,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.png b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.png
index ce392a1dccc..0163f403ca4 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.png
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.pattern.html b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.pattern.html
index 6f8159466db..5362b2f1f53 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.pattern.html
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.pattern.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.no_filter.no_shadow.pattern-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.no_shadow.pattern</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.no_shadow.pattern</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = document.getElementById("canvas0");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,7 +32,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -52,7 +52,7 @@
const canvas = document.getElementById("canvas1");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -65,7 +65,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -85,7 +85,7 @@
const canvas = document.getElementById("canvas2");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -98,7 +98,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -118,7 +118,7 @@
const canvas = document.getElementById("canvas3");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -131,7 +131,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -151,7 +151,7 @@
const canvas = document.getElementById("canvas4");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -164,7 +164,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -184,7 +184,7 @@
const canvas = document.getElementById("canvas5");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -197,7 +197,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -217,7 +217,7 @@
const canvas = document.getElementById("canvas6");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -230,7 +230,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -250,7 +250,7 @@
const canvas = document.getElementById("canvas7");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -263,7 +263,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -283,7 +283,7 @@
const canvas = document.getElementById("canvas8");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -296,7 +296,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -316,7 +316,7 @@
const canvas = document.getElementById("canvas9");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -329,7 +329,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -349,7 +349,7 @@
const canvas = document.getElementById("canvas10");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -362,7 +362,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -382,7 +382,7 @@
const canvas = document.getElementById("canvas11");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -395,7 +395,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -415,7 +415,7 @@
const canvas = document.getElementById("canvas12");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -428,7 +428,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -448,7 +448,7 @@
const canvas = document.getElementById("canvas13");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -461,7 +461,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -481,7 +481,7 @@
const canvas = document.getElementById("canvas14");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -494,7 +494,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -514,7 +514,7 @@
const canvas = document.getElementById("canvas15");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -527,7 +527,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -547,7 +547,7 @@
const canvas = document.getElementById("canvas16");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -560,7 +560,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -580,7 +580,7 @@
const canvas = document.getElementById("canvas17");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -593,7 +593,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -613,7 +613,7 @@
const canvas = document.getElementById("canvas18");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -626,7 +626,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -646,7 +646,7 @@
const canvas = document.getElementById("canvas19");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -659,7 +659,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -679,7 +679,7 @@
const canvas = document.getElementById("canvas20");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -692,7 +692,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -712,7 +712,7 @@
const canvas = document.getElementById("canvas21");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -725,7 +725,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -745,7 +745,7 @@
const canvas = document.getElementById("canvas22");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -758,7 +758,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -778,7 +778,7 @@
const canvas = document.getElementById("canvas23");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -791,7 +791,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -811,7 +811,7 @@
const canvas = document.getElementById("canvas24");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -824,7 +824,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -844,7 +844,7 @@
const canvas = document.getElementById("canvas25");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -857,7 +857,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.pattern.png b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.pattern.png
index ce392a1dccc..0163f403ca4 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.pattern.png
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.no_shadow.pattern.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.drawImage.html b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.drawImage.html
index 84527f5a283..e77309135d6 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.drawImage.html
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.drawImage.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.no_filter.shadow.drawImage-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.shadow.drawImage</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.shadow.drawImage</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = document.getElementById("canvas0");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,9 +32,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -53,7 +53,7 @@
const canvas = document.getElementById("canvas1");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -66,9 +66,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -87,7 +87,7 @@
const canvas = document.getElementById("canvas2");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -100,9 +100,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -121,7 +121,7 @@
const canvas = document.getElementById("canvas3");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -134,9 +134,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -155,7 +155,7 @@
const canvas = document.getElementById("canvas4");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -168,9 +168,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -189,7 +189,7 @@
const canvas = document.getElementById("canvas5");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -202,9 +202,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -223,7 +223,7 @@
const canvas = document.getElementById("canvas6");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -236,9 +236,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -257,7 +257,7 @@
const canvas = document.getElementById("canvas7");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -270,9 +270,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -291,7 +291,7 @@
const canvas = document.getElementById("canvas8");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -304,9 +304,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -325,7 +325,7 @@
const canvas = document.getElementById("canvas9");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -338,9 +338,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -359,7 +359,7 @@
const canvas = document.getElementById("canvas10");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -372,9 +372,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -393,7 +393,7 @@
const canvas = document.getElementById("canvas11");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -406,9 +406,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -427,7 +427,7 @@
const canvas = document.getElementById("canvas12");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -440,9 +440,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -461,7 +461,7 @@
const canvas = document.getElementById("canvas13");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -474,9 +474,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -495,7 +495,7 @@
const canvas = document.getElementById("canvas14");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -508,9 +508,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -529,7 +529,7 @@
const canvas = document.getElementById("canvas15");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -542,9 +542,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -563,7 +563,7 @@
const canvas = document.getElementById("canvas16");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -576,9 +576,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -597,7 +597,7 @@
const canvas = document.getElementById("canvas17");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -610,9 +610,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -631,7 +631,7 @@
const canvas = document.getElementById("canvas18");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -644,9 +644,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -665,7 +665,7 @@
const canvas = document.getElementById("canvas19");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -678,9 +678,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -699,7 +699,7 @@
const canvas = document.getElementById("canvas20");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -712,9 +712,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -733,7 +733,7 @@
const canvas = document.getElementById("canvas21");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -746,9 +746,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -767,7 +767,7 @@
const canvas = document.getElementById("canvas22");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -780,9 +780,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -801,7 +801,7 @@
const canvas = document.getElementById("canvas23");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -814,9 +814,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -835,7 +835,7 @@
const canvas = document.getElementById("canvas24");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -848,9 +848,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -869,7 +869,7 @@
const canvas = document.getElementById("canvas25");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -882,9 +882,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.drawImage.png b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.drawImage.png
index aca03a61b22..6e80ad32bb6 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.drawImage.png
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.drawImage.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.fillRect.html b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.fillRect.html
index 46bc366c8ac..c82ca80cadf 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.fillRect.html
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.fillRect.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.no_filter.shadow.fillRect-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.shadow.fillRect</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.shadow.fillRect</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = document.getElementById("canvas0");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,9 +32,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -50,7 +50,7 @@
const canvas = document.getElementById("canvas1");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -63,9 +63,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -81,7 +81,7 @@
const canvas = document.getElementById("canvas2");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -94,9 +94,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -112,7 +112,7 @@
const canvas = document.getElementById("canvas3");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -125,9 +125,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -143,7 +143,7 @@
const canvas = document.getElementById("canvas4");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -156,9 +156,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -174,7 +174,7 @@
const canvas = document.getElementById("canvas5");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -187,9 +187,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -205,7 +205,7 @@
const canvas = document.getElementById("canvas6");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -218,9 +218,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -236,7 +236,7 @@
const canvas = document.getElementById("canvas7");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -249,9 +249,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -267,7 +267,7 @@
const canvas = document.getElementById("canvas8");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -280,9 +280,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -298,7 +298,7 @@
const canvas = document.getElementById("canvas9");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -311,9 +311,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -329,7 +329,7 @@
const canvas = document.getElementById("canvas10");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -342,9 +342,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -360,7 +360,7 @@
const canvas = document.getElementById("canvas11");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -373,9 +373,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -391,7 +391,7 @@
const canvas = document.getElementById("canvas12");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -404,9 +404,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -422,7 +422,7 @@
const canvas = document.getElementById("canvas13");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -435,9 +435,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -453,7 +453,7 @@
const canvas = document.getElementById("canvas14");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -466,9 +466,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -484,7 +484,7 @@
const canvas = document.getElementById("canvas15");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -497,9 +497,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -515,7 +515,7 @@
const canvas = document.getElementById("canvas16");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -528,9 +528,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -546,7 +546,7 @@
const canvas = document.getElementById("canvas17");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -559,9 +559,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -577,7 +577,7 @@
const canvas = document.getElementById("canvas18");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -590,9 +590,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -608,7 +608,7 @@
const canvas = document.getElementById("canvas19");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -621,9 +621,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -639,7 +639,7 @@
const canvas = document.getElementById("canvas20");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -652,9 +652,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -670,7 +670,7 @@
const canvas = document.getElementById("canvas21");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -683,9 +683,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -701,7 +701,7 @@
const canvas = document.getElementById("canvas22");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -714,9 +714,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -732,7 +732,7 @@
const canvas = document.getElementById("canvas23");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -745,9 +745,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -763,7 +763,7 @@
const canvas = document.getElementById("canvas24");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -776,9 +776,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -794,7 +794,7 @@
const canvas = document.getElementById("canvas25");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -807,9 +807,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.fillRect.png b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.fillRect.png
index aca03a61b22..6e80ad32bb6 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.fillRect.png
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.fillRect.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.pattern.html b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.pattern.html
index e636330c59f..bc7d0134b34 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.pattern.html
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.pattern.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.no_filter.shadow.pattern-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.shadow.pattern</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.shadow.pattern</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = document.getElementById("canvas0");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,9 +32,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -54,7 +54,7 @@
const canvas = document.getElementById("canvas1");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -67,9 +67,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -89,7 +89,7 @@
const canvas = document.getElementById("canvas2");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -102,9 +102,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -124,7 +124,7 @@
const canvas = document.getElementById("canvas3");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -137,9 +137,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -159,7 +159,7 @@
const canvas = document.getElementById("canvas4");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -172,9 +172,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -194,7 +194,7 @@
const canvas = document.getElementById("canvas5");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -207,9 +207,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -229,7 +229,7 @@
const canvas = document.getElementById("canvas6");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -242,9 +242,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -264,7 +264,7 @@
const canvas = document.getElementById("canvas7");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -277,9 +277,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -299,7 +299,7 @@
const canvas = document.getElementById("canvas8");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -312,9 +312,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -334,7 +334,7 @@
const canvas = document.getElementById("canvas9");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -347,9 +347,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -369,7 +369,7 @@
const canvas = document.getElementById("canvas10");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -382,9 +382,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -404,7 +404,7 @@
const canvas = document.getElementById("canvas11");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -417,9 +417,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -439,7 +439,7 @@
const canvas = document.getElementById("canvas12");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -452,9 +452,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -474,7 +474,7 @@
const canvas = document.getElementById("canvas13");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -487,9 +487,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -509,7 +509,7 @@
const canvas = document.getElementById("canvas14");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -522,9 +522,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -544,7 +544,7 @@
const canvas = document.getElementById("canvas15");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -557,9 +557,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -579,7 +579,7 @@
const canvas = document.getElementById("canvas16");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -592,9 +592,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -614,7 +614,7 @@
const canvas = document.getElementById("canvas17");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -627,9 +627,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -649,7 +649,7 @@
const canvas = document.getElementById("canvas18");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -662,9 +662,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -684,7 +684,7 @@
const canvas = document.getElementById("canvas19");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -697,9 +697,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -719,7 +719,7 @@
const canvas = document.getElementById("canvas20");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -732,9 +732,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -754,7 +754,7 @@
const canvas = document.getElementById("canvas21");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -767,9 +767,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -789,7 +789,7 @@
const canvas = document.getElementById("canvas22");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -802,9 +802,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -824,7 +824,7 @@
const canvas = document.getElementById("canvas23");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -837,9 +837,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -859,7 +859,7 @@
const canvas = document.getElementById("canvas24");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -872,9 +872,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -894,7 +894,7 @@
const canvas = document.getElementById("canvas25");
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -907,9 +907,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.pattern.png b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.pattern.png
index aca03a61b22..6e80ad32bb6 100644
--- a/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.pattern.png
+++ b/tests/wpt/tests/html/canvas/element/compositing/2d.composite.grid.no_filter.shadow.pattern.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative-expected.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative-expected.html
new file mode 100644
index 00000000000..6d109c3ffcd
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative-expected.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
+<meta charset="UTF-8">
+<title>Canvas test: 2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative</title>
+<h1 style="font-size: 20px;">2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative</h1>
+<p class="desc">Test that fillTextCluster() renders using the drawing styles as they were when `ctx.measureText()` was called, regardless of any changes in the context since.</p>
+
+<div style="display: grid; grid-gap: 4px;
+ grid-template-columns: repeat(2, max-content);
+ font-size: 13px; text-align: center;">
+<span>
+ <div>letter_spacing</div>
+ <canvas id="canvas0" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script type="module">
+ const canvas = document.getElementById("canvas0");
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.letterSpacing = '2px';
+
+ ctx.fillText(text, 10, 25);
+
+ ctx.letterSpacing = '6px';
+
+ ctx.fillText(text, 10, 50);
+ </script>
+</span>
+
+<span>
+ <div>word_spacing</div>
+ <canvas id="canvas1" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script type="module">
+ const canvas = document.getElementById("canvas1");
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.wordSpacing = '2px';
+
+ ctx.fillText(text, 10, 25);
+
+ ctx.wordSpacing = '10px';
+
+ ctx.fillText(text, 10, 50);
+ </script>
+</span>
+
+<span>
+ <div>font_kerning</div>
+ <canvas id="canvas2" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script type="module">
+ const canvas = document.getElementById("canvas2");
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.fontKerning = 'none';
+
+ ctx.fillText(text, 10, 25);
+
+ ctx.fontKerning = 'normal';
+
+ ctx.fillText(text, 10, 50);
+ </script>
+</span>
+
+<span>
+ <div>font_variant_caps</div>
+ <canvas id="canvas3" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script type="module">
+ const canvas = document.getElementById("canvas3");
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.fontVariantCaps = 'small-caps';
+
+ ctx.fillText(text, 10, 25);
+
+ ctx.fontVariantCaps = 'all-small-caps';
+
+ ctx.fillText(text, 10, 50);
+ </script>
+</span>
+
+</div>
diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html
new file mode 100644
index 00000000000..fac5f6f2b67
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
+<meta charset="UTF-8">
+<link rel="match" href="2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative-expected.html">
+<title>Canvas test: 2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative</title>
+<h1 style="font-size: 20px;">2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative</h1>
+<p class="desc">Test that fillTextCluster() renders using the drawing styles as they were when `ctx.measureText()` was called, regardless of any changes in the context since.</p>
+
+<div style="display: grid; grid-gap: 4px;
+ grid-template-columns: repeat(2, max-content);
+ font-size: 13px; text-align: center;">
+<span>
+ <div>letter_spacing</div>
+ <canvas id="canvas0" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script type="module">
+ const canvas = document.getElementById("canvas0");
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.letterSpacing = '2px';
+
+ let tm = ctx.measureText(text);
+ const clusters = tm.getTextClusters();
+
+ ctx.letterSpacing = '6px';
+
+ for (const cluster of clusters) {
+ ctx.fillTextCluster(cluster, 10, 25);
+ }
+
+ ctx.fillText(text, 10, 50);
+ </script>
+</span>
+
+<span>
+ <div>word_spacing</div>
+ <canvas id="canvas1" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script type="module">
+ const canvas = document.getElementById("canvas1");
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.wordSpacing = '2px';
+
+ let tm = ctx.measureText(text);
+ const clusters = tm.getTextClusters();
+
+ ctx.wordSpacing = '10px';
+
+ for (const cluster of clusters) {
+ ctx.fillTextCluster(cluster, 10, 25);
+ }
+
+ ctx.fillText(text, 10, 50);
+ </script>
+</span>
+
+<span>
+ <div>font_kerning</div>
+ <canvas id="canvas2" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script type="module">
+ const canvas = document.getElementById("canvas2");
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.fontKerning = 'none';
+
+ let tm = ctx.measureText(text);
+ const clusters = tm.getTextClusters();
+
+ ctx.fontKerning = 'normal';
+
+ for (const cluster of clusters) {
+ ctx.fillTextCluster(cluster, 10, 25);
+ }
+
+ ctx.fillText(text, 10, 50);
+ </script>
+</span>
+
+<span>
+ <div>font_variant_caps</div>
+ <canvas id="canvas3" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script type="module">
+ const canvas = document.getElementById("canvas3");
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.fontVariantCaps = 'small-caps';
+
+ let tm = ctx.measureText(text);
+ const clusters = tm.getTextClusters();
+
+ ctx.fontVariantCaps = 'all-small-caps';
+
+ for (const cluster of clusters) {
+ ctx.fillTextCluster(cluster, 10, 25);
+ }
+
+ ctx.fillText(text, 10, 50);
+ </script>
+</span>
+
+</div>
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.html
index 72b23aeeafb..5a90053e8f6 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.filter.no_shadow.drawImage-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.no_shadow.drawImage</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.no_shadow.drawImage</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -29,10 +29,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -55,7 +55,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -65,10 +65,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -91,7 +91,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -101,10 +101,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -127,7 +127,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -137,10 +137,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -163,7 +163,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -173,10 +173,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -199,7 +199,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -209,10 +209,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -235,7 +235,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -245,10 +245,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -271,7 +271,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -281,10 +281,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -307,7 +307,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -317,10 +317,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -343,7 +343,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -353,10 +353,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -379,7 +379,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -389,10 +389,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -415,7 +415,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -425,10 +425,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -451,7 +451,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -461,10 +461,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -487,7 +487,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -497,10 +497,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -523,7 +523,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -533,10 +533,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -559,7 +559,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -569,10 +569,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -595,7 +595,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -605,10 +605,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -631,7 +631,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -641,10 +641,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -667,7 +667,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -677,10 +677,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -703,7 +703,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -713,10 +713,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -739,7 +739,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -749,10 +749,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -775,7 +775,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -785,10 +785,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -811,7 +811,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -821,10 +821,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -847,7 +847,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -857,10 +857,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -883,7 +883,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -893,10 +893,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -919,7 +919,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -929,10 +929,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.png b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.png
index 2318c1ec94e..263ed6ecdd2 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.png
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.w.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.w.html
index 89f4dba75b5..d010912cd06 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.w.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.w.html
@@ -3,7 +3,7 @@
<meta charset="UTF-8">
<html class="reftest-wait">
<link rel="match" href="2d.composite.grid.filter.no_shadow.drawImage-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.no_shadow.drawImage</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.no_shadow.drawImage</h1>
<p class="desc"></p>
@@ -22,7 +22,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,10 +32,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -72,7 +72,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -82,10 +82,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -122,7 +122,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -132,10 +132,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -172,7 +172,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -182,10 +182,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -222,7 +222,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -232,10 +232,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -272,7 +272,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -282,10 +282,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -322,7 +322,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -332,10 +332,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -372,7 +372,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -382,10 +382,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -422,7 +422,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -432,10 +432,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -472,7 +472,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -482,10 +482,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -522,7 +522,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -532,10 +532,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -572,7 +572,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -582,10 +582,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -622,7 +622,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -632,10 +632,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -672,7 +672,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -682,10 +682,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -722,7 +722,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -732,10 +732,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -772,7 +772,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -782,10 +782,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -822,7 +822,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -832,10 +832,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -872,7 +872,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -882,10 +882,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -922,7 +922,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -932,10 +932,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -972,7 +972,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -982,10 +982,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1022,7 +1022,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1032,10 +1032,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1072,7 +1072,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1082,10 +1082,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1122,7 +1122,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1132,10 +1132,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1172,7 +1172,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1182,10 +1182,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1222,7 +1222,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1232,10 +1232,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1272,7 +1272,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1282,10 +1282,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.worker.js b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.worker.js
deleted file mode 100644
index 45329fcd9c8..00000000000
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.drawImage.worker.js
+++ /dev/null
@@ -1,685 +0,0 @@
-// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
-// OffscreenCanvas test in a worker:2d.composite.grid.filter.no_shadow.drawImage
-// Description:
-// Note:
-
-importScripts("/resources/testharness.js");
-importScripts("/html/canvas/resources/canvas-tests.js");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-over'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-in'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-out'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-atop'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-over'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-in'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-out'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-atop'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'lighter'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'copy'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'xor'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'multiply'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'screen'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'overlay'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'darken'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'lighten'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'color-dodge'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'color-burn'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'hard-light'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'soft-light'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'difference'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'exclusion'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'hue'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'saturation'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'color'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'luminosity'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.html
index 3f8fdc8164d..6bad129784f 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.filter.no_shadow.fillRect-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.no_shadow.fillRect</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.no_shadow.fillRect</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -29,10 +29,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -52,7 +52,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -62,10 +62,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -85,7 +85,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -95,10 +95,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -118,7 +118,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -128,10 +128,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -151,7 +151,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -161,10 +161,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -184,7 +184,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -194,10 +194,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -217,7 +217,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -227,10 +227,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -250,7 +250,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -260,10 +260,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -283,7 +283,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -293,10 +293,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -316,7 +316,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -326,10 +326,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -349,7 +349,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -359,10 +359,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -382,7 +382,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -392,10 +392,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -415,7 +415,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -425,10 +425,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -448,7 +448,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -458,10 +458,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -481,7 +481,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -491,10 +491,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -514,7 +514,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -524,10 +524,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -547,7 +547,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -557,10 +557,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -580,7 +580,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -590,10 +590,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -613,7 +613,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -623,10 +623,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -646,7 +646,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -656,10 +656,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -679,7 +679,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -689,10 +689,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -712,7 +712,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -722,10 +722,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -745,7 +745,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -755,10 +755,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -778,7 +778,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -788,10 +788,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -811,7 +811,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -821,10 +821,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -844,7 +844,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -854,10 +854,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.png b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.png
index 2318c1ec94e..263ed6ecdd2 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.png
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.w.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.w.html
index 37839bf8a8b..0c93086b54c 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.w.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.w.html
@@ -3,7 +3,7 @@
<meta charset="UTF-8">
<html class="reftest-wait">
<link rel="match" href="2d.composite.grid.filter.no_shadow.fillRect-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.no_shadow.fillRect</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.no_shadow.fillRect</h1>
<p class="desc"></p>
@@ -22,7 +22,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,10 +32,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -69,7 +69,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -79,10 +79,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -116,7 +116,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -126,10 +126,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -163,7 +163,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -173,10 +173,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -210,7 +210,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -220,10 +220,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -257,7 +257,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -267,10 +267,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -304,7 +304,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -314,10 +314,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -351,7 +351,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -361,10 +361,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -398,7 +398,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -408,10 +408,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -445,7 +445,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -455,10 +455,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -492,7 +492,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -502,10 +502,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -539,7 +539,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -549,10 +549,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -586,7 +586,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -596,10 +596,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -633,7 +633,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -643,10 +643,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -680,7 +680,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -690,10 +690,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -727,7 +727,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -737,10 +737,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -774,7 +774,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -784,10 +784,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -821,7 +821,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -831,10 +831,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -868,7 +868,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -878,10 +878,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -915,7 +915,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -925,10 +925,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -962,7 +962,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -972,10 +972,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1009,7 +1009,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1019,10 +1019,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1056,7 +1056,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1066,10 +1066,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1103,7 +1103,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1113,10 +1113,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1150,7 +1150,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1160,10 +1160,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1197,7 +1197,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1207,10 +1207,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.worker.js b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.worker.js
deleted file mode 100644
index dff55436a40..00000000000
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.fillRect.worker.js
+++ /dev/null
@@ -1,607 +0,0 @@
-// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
-// OffscreenCanvas test in a worker:2d.composite.grid.filter.no_shadow.fillRect
-// Description:
-// Note:
-
-importScripts("/resources/testharness.js");
-importScripts("/html/canvas/resources/canvas-tests.js");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-over'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-in'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-out'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-atop'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-over'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-in'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-out'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-atop'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'lighter'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'copy'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'xor'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'multiply'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'screen'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'overlay'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'darken'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'lighten'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'color-dodge'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'color-burn'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'hard-light'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'soft-light'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'difference'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'exclusion'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'hue'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'saturation'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'color'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'luminosity'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.html
index 0bb970ab3f8..47cd363f06e 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.filter.no_shadow.pattern-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.no_shadow.pattern</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.no_shadow.pattern</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -29,10 +29,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -56,7 +56,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -66,10 +66,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -93,7 +93,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -103,10 +103,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -130,7 +130,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -140,10 +140,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -167,7 +167,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -177,10 +177,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -204,7 +204,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -214,10 +214,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -241,7 +241,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -251,10 +251,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -278,7 +278,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -288,10 +288,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -315,7 +315,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -325,10 +325,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -352,7 +352,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -362,10 +362,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -389,7 +389,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -399,10 +399,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -426,7 +426,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -436,10 +436,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -463,7 +463,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -473,10 +473,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -500,7 +500,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -510,10 +510,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -537,7 +537,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -547,10 +547,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -574,7 +574,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -584,10 +584,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -611,7 +611,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -621,10 +621,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -648,7 +648,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -658,10 +658,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -685,7 +685,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -695,10 +695,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -722,7 +722,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -732,10 +732,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -759,7 +759,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -769,10 +769,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -796,7 +796,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -806,10 +806,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -833,7 +833,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -843,10 +843,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -870,7 +870,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -880,10 +880,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -907,7 +907,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -917,10 +917,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -944,7 +944,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -954,10 +954,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.png b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.png
index 2318c1ec94e..263ed6ecdd2 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.png
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.w.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.w.html
index 81d0a8e6a69..7f07a2c7645 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.w.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.w.html
@@ -3,7 +3,7 @@
<meta charset="UTF-8">
<html class="reftest-wait">
<link rel="match" href="2d.composite.grid.filter.no_shadow.pattern-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.no_shadow.pattern</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.no_shadow.pattern</h1>
<p class="desc"></p>
@@ -22,7 +22,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,10 +32,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -73,7 +73,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -83,10 +83,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -124,7 +124,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -134,10 +134,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -175,7 +175,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -185,10 +185,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -226,7 +226,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -236,10 +236,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -277,7 +277,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -287,10 +287,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -328,7 +328,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -338,10 +338,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -379,7 +379,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -389,10 +389,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -430,7 +430,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -440,10 +440,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -481,7 +481,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -491,10 +491,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -532,7 +532,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -542,10 +542,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -583,7 +583,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -593,10 +593,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -634,7 +634,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -644,10 +644,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -685,7 +685,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -695,10 +695,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -736,7 +736,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -746,10 +746,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -787,7 +787,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -797,10 +797,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -838,7 +838,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -848,10 +848,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -889,7 +889,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -899,10 +899,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -940,7 +940,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -950,10 +950,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -991,7 +991,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1001,10 +1001,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1042,7 +1042,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1052,10 +1052,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1093,7 +1093,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1103,10 +1103,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1144,7 +1144,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1154,10 +1154,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1195,7 +1195,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1205,10 +1205,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1246,7 +1246,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1256,10 +1256,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1297,7 +1297,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1307,10 +1307,10 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.worker.js b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.worker.js
deleted file mode 100644
index d3e79cd2d15..00000000000
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.no_shadow.pattern.worker.js
+++ /dev/null
@@ -1,711 +0,0 @@
-// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
-// OffscreenCanvas test in a worker:2d.composite.grid.filter.no_shadow.pattern
-// Description:
-// Note:
-
-importScripts("/resources/testharness.js");
-importScripts("/html/canvas/resources/canvas-tests.js");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-over'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-in'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-out'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-atop'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-over'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-in'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-out'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-atop'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'lighter'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'copy'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'xor'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'multiply'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'screen'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'overlay'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'darken'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'lighten'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'color-dodge'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'color-burn'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'hard-light'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'soft-light'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'difference'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'exclusion'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'hue'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'saturation'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'color'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- // No shadow.
-
- ctx.globalCompositeOperation = 'luminosity'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.html
index 5c9e992c7ce..fc8f2e20162 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.filter.shadow.drawImage-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.shadow.drawImage</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.shadow.drawImage</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -29,12 +29,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -57,7 +57,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -67,12 +67,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -95,7 +95,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -105,12 +105,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -133,7 +133,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -143,12 +143,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -171,7 +171,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -181,12 +181,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -209,7 +209,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -219,12 +219,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -247,7 +247,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -257,12 +257,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -285,7 +285,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -295,12 +295,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -323,7 +323,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -333,12 +333,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -361,7 +361,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -371,12 +371,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -399,7 +399,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -409,12 +409,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -437,7 +437,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -447,12 +447,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -475,7 +475,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -485,12 +485,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -513,7 +513,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -523,12 +523,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -551,7 +551,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -561,12 +561,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -589,7 +589,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -599,12 +599,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -627,7 +627,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -637,12 +637,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -665,7 +665,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -675,12 +675,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -703,7 +703,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -713,12 +713,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -741,7 +741,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -751,12 +751,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -779,7 +779,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -789,12 +789,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -817,7 +817,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -827,12 +827,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -855,7 +855,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -865,12 +865,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -893,7 +893,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -903,12 +903,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -931,7 +931,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -941,12 +941,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -969,7 +969,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -979,12 +979,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.png b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.png
index fde78773116..ade9f67ef2e 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.png
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.w.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.w.html
index 08e66abd464..fb417b9c576 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.w.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.w.html
@@ -3,7 +3,7 @@
<meta charset="UTF-8">
<html class="reftest-wait">
<link rel="match" href="2d.composite.grid.filter.shadow.drawImage-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.shadow.drawImage</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.shadow.drawImage</h1>
<p class="desc"></p>
@@ -22,7 +22,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,12 +32,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -74,7 +74,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -84,12 +84,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -126,7 +126,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -136,12 +136,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -178,7 +178,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -188,12 +188,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -230,7 +230,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -240,12 +240,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -282,7 +282,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -292,12 +292,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -334,7 +334,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -344,12 +344,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -386,7 +386,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -396,12 +396,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -438,7 +438,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -448,12 +448,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -490,7 +490,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -500,12 +500,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -542,7 +542,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -552,12 +552,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -594,7 +594,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -604,12 +604,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -646,7 +646,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -656,12 +656,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -698,7 +698,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -708,12 +708,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -750,7 +750,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -760,12 +760,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -802,7 +802,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -812,12 +812,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -854,7 +854,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -864,12 +864,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -906,7 +906,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -916,12 +916,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -958,7 +958,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -968,12 +968,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1010,7 +1010,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1020,12 +1020,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1062,7 +1062,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1072,12 +1072,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1114,7 +1114,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1124,12 +1124,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1166,7 +1166,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1176,12 +1176,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1218,7 +1218,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1228,12 +1228,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1270,7 +1270,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1280,12 +1280,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1322,7 +1322,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1332,12 +1332,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.worker.js b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.worker.js
deleted file mode 100644
index 9a9c2f93632..00000000000
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.drawImage.worker.js
+++ /dev/null
@@ -1,737 +0,0 @@
-// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
-// OffscreenCanvas test in a worker:2d.composite.grid.filter.shadow.drawImage
-// Description:
-// Note:
-
-importScripts("/resources/testharness.js");
-importScripts("/html/canvas/resources/canvas-tests.js");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-over'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-in'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-out'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-atop'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-over'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-in'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-out'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-atop'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'lighter'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'copy'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'xor'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'multiply'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'screen'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'overlay'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'darken'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'lighten'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color-dodge'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color-burn'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'hard-light'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'soft-light'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'difference'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'exclusion'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'hue'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'saturation'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'luminosity'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.html
index 0f6b88fd5e9..995bc9d65e6 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.filter.shadow.fillRect-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.shadow.fillRect</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.shadow.fillRect</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -29,12 +29,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -54,7 +54,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -64,12 +64,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -89,7 +89,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -99,12 +99,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -124,7 +124,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -134,12 +134,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -159,7 +159,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -169,12 +169,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -194,7 +194,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -204,12 +204,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -229,7 +229,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -239,12 +239,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -264,7 +264,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -274,12 +274,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -299,7 +299,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -309,12 +309,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -334,7 +334,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -344,12 +344,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -369,7 +369,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -379,12 +379,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -404,7 +404,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -414,12 +414,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -439,7 +439,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -449,12 +449,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -474,7 +474,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -484,12 +484,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -509,7 +509,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -519,12 +519,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -544,7 +544,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -554,12 +554,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -579,7 +579,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -589,12 +589,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -614,7 +614,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -624,12 +624,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -649,7 +649,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -659,12 +659,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -684,7 +684,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -694,12 +694,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -719,7 +719,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -729,12 +729,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -754,7 +754,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -764,12 +764,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -789,7 +789,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -799,12 +799,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -824,7 +824,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -834,12 +834,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -859,7 +859,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -869,12 +869,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -894,7 +894,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -904,12 +904,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.png b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.png
index fde78773116..ade9f67ef2e 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.png
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.w.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.w.html
index f754f538b56..78c509f40f3 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.w.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.w.html
@@ -3,7 +3,7 @@
<meta charset="UTF-8">
<html class="reftest-wait">
<link rel="match" href="2d.composite.grid.filter.shadow.fillRect-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.shadow.fillRect</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.shadow.fillRect</h1>
<p class="desc"></p>
@@ -22,7 +22,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,12 +32,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -71,7 +71,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -81,12 +81,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -120,7 +120,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -130,12 +130,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -169,7 +169,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -179,12 +179,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -218,7 +218,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -228,12 +228,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -267,7 +267,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -277,12 +277,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -316,7 +316,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -326,12 +326,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -365,7 +365,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -375,12 +375,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -414,7 +414,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -424,12 +424,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -463,7 +463,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -473,12 +473,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -512,7 +512,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -522,12 +522,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -561,7 +561,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -571,12 +571,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -610,7 +610,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -620,12 +620,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -659,7 +659,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -669,12 +669,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -708,7 +708,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -718,12 +718,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -757,7 +757,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -767,12 +767,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -806,7 +806,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -816,12 +816,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -855,7 +855,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -865,12 +865,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -904,7 +904,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -914,12 +914,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -953,7 +953,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -963,12 +963,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1002,7 +1002,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1012,12 +1012,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1051,7 +1051,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1061,12 +1061,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1100,7 +1100,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1110,12 +1110,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1149,7 +1149,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1159,12 +1159,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1198,7 +1198,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1208,12 +1208,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1247,7 +1247,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1257,12 +1257,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.worker.js b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.worker.js
deleted file mode 100644
index f495009b301..00000000000
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.fillRect.worker.js
+++ /dev/null
@@ -1,659 +0,0 @@
-// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
-// OffscreenCanvas test in a worker:2d.composite.grid.filter.shadow.fillRect
-// Description:
-// Note:
-
-importScripts("/resources/testharness.js");
-importScripts("/html/canvas/resources/canvas-tests.js");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-over'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-in'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-out'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-atop'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-over'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-in'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-out'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-atop'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'lighter'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'copy'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'xor'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'multiply'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'screen'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'overlay'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'darken'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'lighten'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color-dodge'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color-burn'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'hard-light'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'soft-light'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'difference'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'exclusion'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'hue'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'saturation'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'luminosity'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.html
index e89aff9196d..f1bc4c64be7 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.filter.shadow.pattern-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.shadow.pattern</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.shadow.pattern</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -29,12 +29,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -58,7 +58,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -68,12 +68,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -97,7 +97,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -107,12 +107,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -136,7 +136,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -146,12 +146,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -175,7 +175,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -185,12 +185,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -214,7 +214,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -224,12 +224,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -253,7 +253,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -263,12 +263,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -292,7 +292,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -302,12 +302,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -331,7 +331,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -341,12 +341,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -370,7 +370,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -380,12 +380,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -409,7 +409,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -419,12 +419,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -448,7 +448,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -458,12 +458,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -487,7 +487,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -497,12 +497,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -526,7 +526,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -536,12 +536,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -565,7 +565,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -575,12 +575,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -604,7 +604,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -614,12 +614,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -643,7 +643,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -653,12 +653,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -682,7 +682,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -692,12 +692,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -721,7 +721,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -731,12 +731,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -760,7 +760,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -770,12 +770,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -799,7 +799,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -809,12 +809,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -838,7 +838,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -848,12 +848,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -877,7 +877,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -887,12 +887,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -916,7 +916,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -926,12 +926,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -955,7 +955,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -965,12 +965,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -994,7 +994,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1004,12 +1004,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.png b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.png
index fde78773116..ade9f67ef2e 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.png
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.w.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.w.html
index 79f7aab01cd..de144bfaa64 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.w.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.w.html
@@ -3,7 +3,7 @@
<meta charset="UTF-8">
<html class="reftest-wait">
<link rel="match" href="2d.composite.grid.filter.shadow.pattern-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.filter.shadow.pattern</title>
<h1 style="font-size: 20px;">2d.composite.grid.filter.shadow.pattern</h1>
<p class="desc"></p>
@@ -22,7 +22,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,12 +32,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -75,7 +75,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -85,12 +85,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -128,7 +128,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -138,12 +138,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -181,7 +181,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -191,12 +191,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -234,7 +234,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -244,12 +244,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -287,7 +287,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -297,12 +297,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -340,7 +340,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -350,12 +350,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -393,7 +393,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -403,12 +403,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -446,7 +446,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -456,12 +456,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -499,7 +499,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -509,12 +509,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -552,7 +552,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -562,12 +562,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -605,7 +605,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -615,12 +615,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -658,7 +658,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -668,12 +668,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -711,7 +711,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -721,12 +721,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -764,7 +764,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -774,12 +774,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -817,7 +817,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -827,12 +827,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -870,7 +870,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -880,12 +880,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -923,7 +923,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -933,12 +933,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -976,7 +976,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -986,12 +986,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1029,7 +1029,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1039,12 +1039,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1082,7 +1082,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1092,12 +1092,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1135,7 +1135,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1145,12 +1145,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1188,7 +1188,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1198,12 +1198,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1241,7 +1241,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1251,12 +1251,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1294,7 +1294,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1304,12 +1304,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1347,7 +1347,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1357,12 +1357,12 @@
ctx.globalAlpha = 0.5;
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.worker.js b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.worker.js
deleted file mode 100644
index d960d0d5401..00000000000
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.filter.shadow.pattern.worker.js
+++ /dev/null
@@ -1,763 +0,0 @@
-// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
-// OffscreenCanvas test in a worker:2d.composite.grid.filter.shadow.pattern
-// Description:
-// Note:
-
-importScripts("/resources/testharness.js");
-importScripts("/html/canvas/resources/canvas-tests.js");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-over'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-in'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-out'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-atop'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-over'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-in'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-out'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-atop'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'lighter'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'copy'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'xor'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'multiply'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'screen'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'overlay'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'darken'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'lighten'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color-dodge'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color-burn'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'hard-light'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'soft-light'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'difference'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'exclusion'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'hue'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'saturation'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'luminosity'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.html
index 54a53b46576..5aac6d6b212 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.no_filter.no_shadow.drawImage-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.no_shadow.drawImage</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.no_shadow.drawImage</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,7 +32,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -55,7 +55,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -68,7 +68,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -91,7 +91,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -104,7 +104,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -127,7 +127,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -140,7 +140,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -163,7 +163,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -176,7 +176,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -199,7 +199,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -212,7 +212,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -235,7 +235,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -248,7 +248,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -271,7 +271,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -284,7 +284,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -307,7 +307,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -320,7 +320,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -343,7 +343,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -356,7 +356,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -379,7 +379,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -392,7 +392,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -415,7 +415,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -428,7 +428,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -451,7 +451,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -464,7 +464,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -487,7 +487,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -500,7 +500,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -523,7 +523,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -536,7 +536,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -559,7 +559,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -572,7 +572,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -595,7 +595,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -608,7 +608,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -631,7 +631,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -644,7 +644,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -667,7 +667,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -680,7 +680,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -703,7 +703,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -716,7 +716,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -739,7 +739,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -752,7 +752,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -775,7 +775,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -788,7 +788,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -811,7 +811,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -824,7 +824,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -847,7 +847,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -860,7 +860,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -883,7 +883,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -896,7 +896,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -919,7 +919,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -932,7 +932,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.png b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.png
index ce392a1dccc..0163f403ca4 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.png
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.w.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.w.html
index 4750ed210ff..67fdbabce2e 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.w.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.w.html
@@ -3,7 +3,7 @@
<meta charset="UTF-8">
<html class="reftest-wait">
<link rel="match" href="2d.composite.grid.no_filter.no_shadow.drawImage-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.no_shadow.drawImage</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.no_shadow.drawImage</h1>
<p class="desc"></p>
@@ -22,7 +22,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -35,7 +35,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -72,7 +72,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -85,7 +85,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -122,7 +122,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -135,7 +135,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -172,7 +172,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -185,7 +185,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -222,7 +222,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -235,7 +235,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -272,7 +272,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -285,7 +285,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -322,7 +322,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -335,7 +335,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -372,7 +372,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -385,7 +385,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -422,7 +422,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -435,7 +435,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -472,7 +472,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -485,7 +485,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -522,7 +522,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -535,7 +535,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -572,7 +572,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -585,7 +585,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -622,7 +622,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -635,7 +635,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -672,7 +672,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -685,7 +685,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -722,7 +722,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -735,7 +735,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -772,7 +772,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -785,7 +785,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -822,7 +822,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -835,7 +835,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -872,7 +872,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -885,7 +885,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -922,7 +922,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -935,7 +935,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -972,7 +972,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -985,7 +985,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1022,7 +1022,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1035,7 +1035,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1072,7 +1072,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1085,7 +1085,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1122,7 +1122,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1135,7 +1135,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1172,7 +1172,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1185,7 +1185,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1222,7 +1222,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1235,7 +1235,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1272,7 +1272,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1285,7 +1285,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.worker.js b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.worker.js
deleted file mode 100644
index de1686a76e8..00000000000
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.drawImage.worker.js
+++ /dev/null
@@ -1,685 +0,0 @@
-// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
-// OffscreenCanvas test in a worker:2d.composite.grid.no_filter.no_shadow.drawImage
-// Description:
-// Note:
-
-importScripts("/resources/testharness.js");
-importScripts("/html/canvas/resources/canvas-tests.js");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-over'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-in'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-out'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-atop'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-over'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-in'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-out'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-atop'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'lighter'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'copy'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'xor'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'multiply'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'screen'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'overlay'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'darken'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'lighten'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'color-dodge'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'color-burn'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'hard-light'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'soft-light'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'difference'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'exclusion'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'hue'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'saturation'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'color'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'luminosity'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.html
index e69af8a79a9..c1001d77815 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.no_filter.no_shadow.fillRect-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.no_shadow.fillRect</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.no_shadow.fillRect</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,7 +32,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -52,7 +52,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -65,7 +65,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -85,7 +85,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -98,7 +98,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -118,7 +118,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -131,7 +131,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -151,7 +151,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -164,7 +164,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -184,7 +184,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -197,7 +197,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -217,7 +217,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -230,7 +230,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -250,7 +250,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -263,7 +263,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -283,7 +283,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -296,7 +296,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -316,7 +316,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -329,7 +329,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -349,7 +349,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -362,7 +362,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -382,7 +382,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -395,7 +395,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -415,7 +415,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -428,7 +428,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -448,7 +448,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -461,7 +461,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -481,7 +481,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -494,7 +494,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -514,7 +514,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -527,7 +527,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -547,7 +547,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -560,7 +560,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -580,7 +580,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -593,7 +593,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -613,7 +613,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -626,7 +626,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -646,7 +646,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -659,7 +659,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -679,7 +679,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -692,7 +692,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -712,7 +712,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -725,7 +725,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -745,7 +745,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -758,7 +758,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -778,7 +778,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -791,7 +791,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -811,7 +811,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -824,7 +824,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -844,7 +844,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -857,7 +857,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.png b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.png
index ce392a1dccc..0163f403ca4 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.png
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.w.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.w.html
index 0cfc23ab86a..fcc39718c39 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.w.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.w.html
@@ -3,7 +3,7 @@
<meta charset="UTF-8">
<html class="reftest-wait">
<link rel="match" href="2d.composite.grid.no_filter.no_shadow.fillRect-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.no_shadow.fillRect</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.no_shadow.fillRect</h1>
<p class="desc"></p>
@@ -22,7 +22,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -35,7 +35,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -69,7 +69,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -82,7 +82,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -116,7 +116,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -129,7 +129,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -163,7 +163,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -176,7 +176,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -210,7 +210,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -223,7 +223,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -257,7 +257,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -270,7 +270,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -304,7 +304,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -317,7 +317,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -351,7 +351,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -364,7 +364,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -398,7 +398,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -411,7 +411,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -445,7 +445,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -458,7 +458,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -492,7 +492,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -505,7 +505,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -539,7 +539,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -552,7 +552,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -586,7 +586,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -599,7 +599,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -633,7 +633,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -646,7 +646,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -680,7 +680,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -693,7 +693,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -727,7 +727,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -740,7 +740,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -774,7 +774,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -787,7 +787,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -821,7 +821,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -834,7 +834,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -868,7 +868,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -881,7 +881,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -915,7 +915,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -928,7 +928,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -962,7 +962,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -975,7 +975,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1009,7 +1009,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1022,7 +1022,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1056,7 +1056,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1069,7 +1069,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1103,7 +1103,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1116,7 +1116,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1150,7 +1150,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1163,7 +1163,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1197,7 +1197,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1210,7 +1210,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.worker.js b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.worker.js
deleted file mode 100644
index cb60645b704..00000000000
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.fillRect.worker.js
+++ /dev/null
@@ -1,607 +0,0 @@
-// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
-// OffscreenCanvas test in a worker:2d.composite.grid.no_filter.no_shadow.fillRect
-// Description:
-// Note:
-
-importScripts("/resources/testharness.js");
-importScripts("/html/canvas/resources/canvas-tests.js");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-over'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-in'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-out'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-atop'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-over'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-in'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-out'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-atop'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'lighter'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'copy'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'xor'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'multiply'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'screen'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'overlay'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'darken'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'lighten'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'color-dodge'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'color-burn'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'hard-light'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'soft-light'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'difference'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'exclusion'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'hue'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'saturation'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'color'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'luminosity'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.html
index b6008b7c79f..b977eb0bec3 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.no_filter.no_shadow.pattern-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.no_shadow.pattern</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.no_shadow.pattern</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,7 +32,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -56,7 +56,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -69,7 +69,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -93,7 +93,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -106,7 +106,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -130,7 +130,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -143,7 +143,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -167,7 +167,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -180,7 +180,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -204,7 +204,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -217,7 +217,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -241,7 +241,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -254,7 +254,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -278,7 +278,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -291,7 +291,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -315,7 +315,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -328,7 +328,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -352,7 +352,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -365,7 +365,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -389,7 +389,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -402,7 +402,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -426,7 +426,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -439,7 +439,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -463,7 +463,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -476,7 +476,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -500,7 +500,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -513,7 +513,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -537,7 +537,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -550,7 +550,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -574,7 +574,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -587,7 +587,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -611,7 +611,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -624,7 +624,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -648,7 +648,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -661,7 +661,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -685,7 +685,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -698,7 +698,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -722,7 +722,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -735,7 +735,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -759,7 +759,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -772,7 +772,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -796,7 +796,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -809,7 +809,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -833,7 +833,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -846,7 +846,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -870,7 +870,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -883,7 +883,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -907,7 +907,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -920,7 +920,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -944,7 +944,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -957,7 +957,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.png b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.png
index ce392a1dccc..0163f403ca4 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.png
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.w.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.w.html
index ef952ce12cd..9e9eb022915 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.w.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.w.html
@@ -3,7 +3,7 @@
<meta charset="UTF-8">
<html class="reftest-wait">
<link rel="match" href="2d.composite.grid.no_filter.no_shadow.pattern-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.no_shadow.pattern</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.no_shadow.pattern</h1>
<p class="desc"></p>
@@ -22,7 +22,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -35,7 +35,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -73,7 +73,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -86,7 +86,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -124,7 +124,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -137,7 +137,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -175,7 +175,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -188,7 +188,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -226,7 +226,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -239,7 +239,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -277,7 +277,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -290,7 +290,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -328,7 +328,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -341,7 +341,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -379,7 +379,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -392,7 +392,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -430,7 +430,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -443,7 +443,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -481,7 +481,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -494,7 +494,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -532,7 +532,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -545,7 +545,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -583,7 +583,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -596,7 +596,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -634,7 +634,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -647,7 +647,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -685,7 +685,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -698,7 +698,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -736,7 +736,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -749,7 +749,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -787,7 +787,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -800,7 +800,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -838,7 +838,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -851,7 +851,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -889,7 +889,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -902,7 +902,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -940,7 +940,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -953,7 +953,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -991,7 +991,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1004,7 +1004,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1042,7 +1042,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1055,7 +1055,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1093,7 +1093,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1106,7 +1106,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1144,7 +1144,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1157,7 +1157,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1195,7 +1195,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1208,7 +1208,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1246,7 +1246,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1259,7 +1259,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1297,7 +1297,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1310,7 +1310,7 @@
// No filter.
// No shadow.
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.worker.js b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.worker.js
deleted file mode 100644
index e1479261ce2..00000000000
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.no_shadow.pattern.worker.js
+++ /dev/null
@@ -1,711 +0,0 @@
-// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
-// OffscreenCanvas test in a worker:2d.composite.grid.no_filter.no_shadow.pattern
-// Description:
-// Note:
-
-importScripts("/resources/testharness.js");
-importScripts("/html/canvas/resources/canvas-tests.js");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-over'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-in'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-out'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'source-atop'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-over'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-in'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-out'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'destination-atop'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'lighter'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'copy'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'xor'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'multiply'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'screen'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'overlay'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'darken'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'lighten'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'color-dodge'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'color-burn'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'hard-light'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'soft-light'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'difference'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'exclusion'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'hue'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'saturation'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'color'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- // No shadow.
-
- ctx.globalCompositeOperation = 'luminosity'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.html
index d25f183aeb8..382f3abeb19 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.no_filter.shadow.drawImage-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.shadow.drawImage</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.shadow.drawImage</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,9 +32,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -57,7 +57,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -70,9 +70,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -95,7 +95,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -108,9 +108,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -133,7 +133,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -146,9 +146,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -171,7 +171,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -184,9 +184,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -209,7 +209,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -222,9 +222,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -247,7 +247,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -260,9 +260,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -285,7 +285,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -298,9 +298,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -323,7 +323,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -336,9 +336,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -361,7 +361,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -374,9 +374,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -399,7 +399,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -412,9 +412,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -437,7 +437,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -450,9 +450,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -475,7 +475,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -488,9 +488,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -513,7 +513,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -526,9 +526,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -551,7 +551,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -564,9 +564,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -589,7 +589,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -602,9 +602,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -627,7 +627,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -640,9 +640,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -665,7 +665,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -678,9 +678,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -703,7 +703,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -716,9 +716,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -741,7 +741,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -754,9 +754,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -779,7 +779,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -792,9 +792,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -817,7 +817,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -830,9 +830,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -855,7 +855,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -868,9 +868,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -893,7 +893,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -906,9 +906,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -931,7 +931,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -944,9 +944,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -969,7 +969,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -982,9 +982,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.png b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.png
index aca03a61b22..6e80ad32bb6 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.png
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.w.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.w.html
index c66b467d627..56db72864d3 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.w.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.w.html
@@ -3,7 +3,7 @@
<meta charset="UTF-8">
<html class="reftest-wait">
<link rel="match" href="2d.composite.grid.no_filter.shadow.drawImage-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.shadow.drawImage</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.shadow.drawImage</h1>
<p class="desc"></p>
@@ -22,7 +22,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -35,9 +35,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -74,7 +74,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -87,9 +87,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -126,7 +126,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -139,9 +139,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -178,7 +178,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -191,9 +191,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -230,7 +230,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -243,9 +243,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -282,7 +282,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -295,9 +295,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -334,7 +334,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -347,9 +347,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -386,7 +386,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -399,9 +399,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -438,7 +438,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -451,9 +451,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -490,7 +490,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -503,9 +503,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -542,7 +542,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -555,9 +555,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -594,7 +594,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -607,9 +607,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -646,7 +646,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -659,9 +659,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -698,7 +698,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -711,9 +711,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -750,7 +750,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -763,9 +763,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -802,7 +802,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -815,9 +815,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -854,7 +854,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -867,9 +867,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -906,7 +906,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -919,9 +919,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -958,7 +958,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -971,9 +971,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1010,7 +1010,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1023,9 +1023,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1062,7 +1062,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1075,9 +1075,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1114,7 +1114,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1127,9 +1127,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1166,7 +1166,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1179,9 +1179,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1218,7 +1218,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1231,9 +1231,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1270,7 +1270,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1283,9 +1283,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1322,7 +1322,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1335,9 +1335,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.worker.js b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.worker.js
deleted file mode 100644
index c7827238f69..00000000000
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.drawImage.worker.js
+++ /dev/null
@@ -1,737 +0,0 @@
-// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
-// OffscreenCanvas test in a worker:2d.composite.grid.no_filter.shadow.drawImage
-// Description:
-// Note:
-
-importScripts("/resources/testharness.js");
-importScripts("/html/canvas/resources/canvas-tests.js");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-over'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-in'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-out'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-atop'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-over'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-in'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-out'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-atop'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'lighter'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'copy'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'xor'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'multiply'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'screen'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'overlay'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'darken'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'lighten'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color-dodge'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color-burn'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'hard-light'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'soft-light'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'difference'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'exclusion'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'hue'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'saturation'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'luminosity'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.drawImage(img_canvas, 5, 5, 50, 30);
-}, "");
-
-done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.html
index 3fdbfa72caf..bb58344fcbd 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.no_filter.shadow.fillRect-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.shadow.fillRect</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.shadow.fillRect</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,9 +32,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -54,7 +54,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -67,9 +67,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -89,7 +89,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -102,9 +102,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -124,7 +124,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -137,9 +137,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -159,7 +159,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -172,9 +172,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -194,7 +194,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -207,9 +207,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -229,7 +229,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -242,9 +242,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -264,7 +264,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -277,9 +277,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -299,7 +299,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -312,9 +312,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -334,7 +334,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -347,9 +347,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -369,7 +369,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -382,9 +382,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -404,7 +404,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -417,9 +417,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -439,7 +439,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -452,9 +452,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -474,7 +474,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -487,9 +487,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -509,7 +509,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -522,9 +522,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -544,7 +544,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -557,9 +557,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -579,7 +579,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -592,9 +592,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -614,7 +614,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -627,9 +627,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -649,7 +649,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -662,9 +662,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -684,7 +684,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -697,9 +697,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -719,7 +719,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -732,9 +732,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -754,7 +754,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -767,9 +767,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -789,7 +789,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -802,9 +802,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -824,7 +824,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -837,9 +837,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -859,7 +859,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -872,9 +872,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -894,7 +894,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -907,9 +907,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.png b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.png
index aca03a61b22..6e80ad32bb6 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.png
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.w.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.w.html
index 519631612f0..3586c806cd4 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.w.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.w.html
@@ -3,7 +3,7 @@
<meta charset="UTF-8">
<html class="reftest-wait">
<link rel="match" href="2d.composite.grid.no_filter.shadow.fillRect-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.shadow.fillRect</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.shadow.fillRect</h1>
<p class="desc"></p>
@@ -22,7 +22,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -35,9 +35,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -71,7 +71,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -84,9 +84,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -120,7 +120,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -133,9 +133,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -169,7 +169,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -182,9 +182,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -218,7 +218,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -231,9 +231,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -267,7 +267,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -280,9 +280,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -316,7 +316,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -329,9 +329,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -365,7 +365,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -378,9 +378,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -414,7 +414,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -427,9 +427,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -463,7 +463,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -476,9 +476,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -512,7 +512,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -525,9 +525,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -561,7 +561,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -574,9 +574,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -610,7 +610,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -623,9 +623,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -659,7 +659,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -672,9 +672,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -708,7 +708,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -721,9 +721,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -757,7 +757,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -770,9 +770,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -806,7 +806,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -819,9 +819,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -855,7 +855,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -868,9 +868,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -904,7 +904,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -917,9 +917,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -953,7 +953,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -966,9 +966,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1002,7 +1002,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1015,9 +1015,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1051,7 +1051,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1064,9 +1064,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1100,7 +1100,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1113,9 +1113,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1149,7 +1149,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1162,9 +1162,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1198,7 +1198,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1211,9 +1211,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
@@ -1247,7 +1247,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1260,9 +1260,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
ctx.fillStyle = 'rgb(52, 255, 52)';
ctx.fillRect(5, 5, 50, 30);
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.worker.js b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.worker.js
deleted file mode 100644
index 217fe38a8de..00000000000
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.fillRect.worker.js
+++ /dev/null
@@ -1,659 +0,0 @@
-// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
-// OffscreenCanvas test in a worker:2d.composite.grid.no_filter.shadow.fillRect
-// Description:
-// Note:
-
-importScripts("/resources/testharness.js");
-importScripts("/html/canvas/resources/canvas-tests.js");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-over'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-in'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-out'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-atop'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-over'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-in'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-out'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-atop'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'lighter'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'copy'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'xor'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'multiply'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'screen'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'overlay'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'darken'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'lighten'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color-dodge'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color-burn'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'hard-light'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'soft-light'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'difference'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'exclusion'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'hue'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'saturation'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'luminosity'
-
- ctx.fillStyle = 'rgb(52, 255, 52)';
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.html
index d9df6be84f1..9703ea138d0 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.html
@@ -2,7 +2,7 @@
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.composite.grid.no_filter.shadow.pattern-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.shadow.pattern</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.shadow.pattern</h1>
<p class="desc"></p>
@@ -19,7 +19,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -32,9 +32,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -58,7 +58,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -71,9 +71,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -97,7 +97,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -110,9 +110,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -136,7 +136,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -149,9 +149,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -175,7 +175,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -188,9 +188,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -214,7 +214,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -227,9 +227,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -253,7 +253,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -266,9 +266,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -292,7 +292,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -305,9 +305,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -331,7 +331,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -344,9 +344,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -370,7 +370,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -383,9 +383,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -409,7 +409,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -422,9 +422,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -448,7 +448,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -461,9 +461,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -487,7 +487,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -500,9 +500,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -526,7 +526,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -539,9 +539,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -565,7 +565,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -578,9 +578,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -604,7 +604,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -617,9 +617,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -643,7 +643,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -656,9 +656,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -682,7 +682,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -695,9 +695,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -721,7 +721,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -734,9 +734,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -760,7 +760,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -773,9 +773,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -799,7 +799,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -812,9 +812,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -838,7 +838,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -851,9 +851,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -877,7 +877,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -890,9 +890,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -916,7 +916,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -929,9 +929,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -955,7 +955,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -968,9 +968,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -994,7 +994,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1007,9 +1007,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.png b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.png
index aca03a61b22..6e80ad32bb6 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.png
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.w.html b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.w.html
index 5c698e8c760..318d2b971e4 100644
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.w.html
+++ b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.w.html
@@ -3,7 +3,7 @@
<meta charset="UTF-8">
<html class="reftest-wait">
<link rel="match" href="2d.composite.grid.no_filter.shadow.pattern-expected.html">
-<meta name=fuzzy content="maxDifference=0-2; totalPixels=0-10210">
+<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-25392">
<title>Canvas test: 2d.composite.grid.no_filter.shadow.pattern</title>
<h1 style="font-size: 20px;">2d.composite.grid.no_filter.shadow.pattern</h1>
<p class="desc"></p>
@@ -22,7 +22,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -35,9 +35,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-over'
+ ctx.globalCompositeOperation = 'source-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -75,7 +75,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -88,9 +88,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-in'
+ ctx.globalCompositeOperation = 'source-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -128,7 +128,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -141,9 +141,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-out'
+ ctx.globalCompositeOperation = 'source-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -181,7 +181,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -194,9 +194,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'source-atop'
+ ctx.globalCompositeOperation = 'source-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -234,7 +234,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -247,9 +247,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-over'
+ ctx.globalCompositeOperation = 'destination-over';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -287,7 +287,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -300,9 +300,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-in'
+ ctx.globalCompositeOperation = 'destination-in';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -340,7 +340,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -353,9 +353,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-out'
+ ctx.globalCompositeOperation = 'destination-out';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -393,7 +393,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -406,9 +406,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'destination-atop'
+ ctx.globalCompositeOperation = 'destination-atop';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -446,7 +446,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -459,9 +459,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighter'
+ ctx.globalCompositeOperation = 'lighter';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -499,7 +499,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -512,9 +512,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'copy'
+ ctx.globalCompositeOperation = 'copy';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -552,7 +552,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -565,9 +565,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'xor'
+ ctx.globalCompositeOperation = 'xor';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -605,7 +605,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -618,9 +618,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'multiply'
+ ctx.globalCompositeOperation = 'multiply';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -658,7 +658,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -671,9 +671,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'screen'
+ ctx.globalCompositeOperation = 'screen';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -711,7 +711,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -724,9 +724,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'overlay'
+ ctx.globalCompositeOperation = 'overlay';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -764,7 +764,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -777,9 +777,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'darken'
+ ctx.globalCompositeOperation = 'darken';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -817,7 +817,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -830,9 +830,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'lighten'
+ ctx.globalCompositeOperation = 'lighten';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -870,7 +870,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -883,9 +883,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-dodge'
+ ctx.globalCompositeOperation = 'color-dodge';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -923,7 +923,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -936,9 +936,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color-burn'
+ ctx.globalCompositeOperation = 'color-burn';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -976,7 +976,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -989,9 +989,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hard-light'
+ ctx.globalCompositeOperation = 'hard-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1029,7 +1029,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1042,9 +1042,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'soft-light'
+ ctx.globalCompositeOperation = 'soft-light';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1082,7 +1082,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1095,9 +1095,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'difference'
+ ctx.globalCompositeOperation = 'difference';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1135,7 +1135,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1148,9 +1148,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'exclusion'
+ ctx.globalCompositeOperation = 'exclusion';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1188,7 +1188,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1201,9 +1201,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'hue'
+ ctx.globalCompositeOperation = 'hue';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1241,7 +1241,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1254,9 +1254,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'saturation'
+ ctx.globalCompositeOperation = 'saturation';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1294,7 +1294,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1307,9 +1307,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'color'
+ ctx.globalCompositeOperation = 'color';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
@@ -1347,7 +1347,7 @@
const canvas = new OffscreenCanvas(80, 60);
const ctx = canvas.getContext('2d');
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -1360,9 +1360,9 @@
// No filter.
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
- ctx.globalCompositeOperation = 'luminosity'
+ ctx.globalCompositeOperation = 'luminosity';
const img_canvas = new OffscreenCanvas(80, 60);
const img_ctx = img_canvas.getContext('2d');
diff --git a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.worker.js b/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.worker.js
deleted file mode 100644
index f26657b5214..00000000000
--- a/tests/wpt/tests/html/canvas/offscreen/compositing/2d.composite.grid.no_filter.shadow.pattern.worker.js
+++ /dev/null
@@ -1,763 +0,0 @@
-// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
-// OffscreenCanvas test in a worker:2d.composite.grid.no_filter.shadow.pattern
-// Description:
-// Note:
-
-importScripts("/resources/testharness.js");
-importScripts("/html/canvas/resources/canvas-tests.js");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-over'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-in'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-out'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'source-atop'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-over'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-in'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-out'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'destination-atop'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'lighter'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'copy'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'xor'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'multiply'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'screen'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'overlay'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'darken'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'lighten'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color-dodge'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color-burn'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'hard-light'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'soft-light'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'difference'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'exclusion'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'hue'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'saturation'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'color'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-test(t => {
- const canvas = new OffscreenCanvas(80, 60);
- const ctx = canvas.getContext('2d');
-
- ctx.fillStyle = 'rgb(0, 102, 255)';
- ctx.fillRect(15, 15, 50, 30);
-
- ctx.translate(25, 20);
- ctx.rotate(Math.PI / 2);
- ctx.scale(0.6, 1.2);
- ctx.translate(-25, -20);
-
- ctx.globalAlpha = 0.5;
-
- // No filter.
- ctx.shadowOffsetX = 20;
- ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
-
- ctx.globalCompositeOperation = 'luminosity'
-
- const img_canvas = new OffscreenCanvas(80, 60);
- const img_ctx = img_canvas.getContext('2d');
- img_ctx.fillStyle = 'rgb(52, 255, 52)';
- img_ctx.fillRect(0, 0, 80, 60);
- ctx.fillStyle = ctx.createPattern(img_canvas, 'repeat');
- ctx.fillRect(5, 5, 50, 30);
-}, "");
-
-done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative-expected.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative-expected.html
new file mode 100644
index 00000000000..6d109c3ffcd
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative-expected.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
+<meta charset="UTF-8">
+<title>Canvas test: 2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative</title>
+<h1 style="font-size: 20px;">2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative</h1>
+<p class="desc">Test that fillTextCluster() renders using the drawing styles as they were when `ctx.measureText()` was called, regardless of any changes in the context since.</p>
+
+<div style="display: grid; grid-gap: 4px;
+ grid-template-columns: repeat(2, max-content);
+ font-size: 13px; text-align: center;">
+<span>
+ <div>letter_spacing</div>
+ <canvas id="canvas0" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script type="module">
+ const canvas = document.getElementById("canvas0");
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.letterSpacing = '2px';
+
+ ctx.fillText(text, 10, 25);
+
+ ctx.letterSpacing = '6px';
+
+ ctx.fillText(text, 10, 50);
+ </script>
+</span>
+
+<span>
+ <div>word_spacing</div>
+ <canvas id="canvas1" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script type="module">
+ const canvas = document.getElementById("canvas1");
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.wordSpacing = '2px';
+
+ ctx.fillText(text, 10, 25);
+
+ ctx.wordSpacing = '10px';
+
+ ctx.fillText(text, 10, 50);
+ </script>
+</span>
+
+<span>
+ <div>font_kerning</div>
+ <canvas id="canvas2" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script type="module">
+ const canvas = document.getElementById("canvas2");
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.fontKerning = 'none';
+
+ ctx.fillText(text, 10, 25);
+
+ ctx.fontKerning = 'normal';
+
+ ctx.fillText(text, 10, 50);
+ </script>
+</span>
+
+<span>
+ <div>font_variant_caps</div>
+ <canvas id="canvas3" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script type="module">
+ const canvas = document.getElementById("canvas3");
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.fontVariantCaps = 'small-caps';
+
+ ctx.fillText(text, 10, 25);
+
+ ctx.fontVariantCaps = 'all-small-caps';
+
+ ctx.fillText(text, 10, 50);
+ </script>
+</span>
+
+</div>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html
new file mode 100644
index 00000000000..8d304cb1a78
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
+<meta charset="UTF-8">
+<link rel="match" href="2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative-expected.html">
+<title>Canvas test: 2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative</title>
+<h1 style="font-size: 20px;">2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative</h1>
+<p class="desc">Test that fillTextCluster() renders using the drawing styles as they were when `ctx.measureText()` was called, regardless of any changes in the context since.</p>
+
+<div style="display: grid; grid-gap: 4px;
+ grid-template-columns: repeat(2, max-content);
+ font-size: 13px; text-align: center;">
+<span>
+ <div>letter_spacing</div>
+ <canvas id="canvas0" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script type="module">
+ const canvas = new OffscreenCanvas(250, 80);
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.letterSpacing = '2px';
+
+ let tm = ctx.measureText(text);
+ const clusters = tm.getTextClusters();
+
+ ctx.letterSpacing = '6px';
+
+ for (const cluster of clusters) {
+ ctx.fillTextCluster(cluster, 10, 25);
+ }
+
+ ctx.fillText(text, 10, 50);
+
+ const outputCanvas = document.getElementById("canvas0");
+ const outputCtx = outputCanvas.getContext('2d');
+ outputCtx.drawImage(canvas, 0, 0);
+ </script>
+</span>
+
+<span>
+ <div>word_spacing</div>
+ <canvas id="canvas1" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script type="module">
+ const canvas = new OffscreenCanvas(250, 80);
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.wordSpacing = '2px';
+
+ let tm = ctx.measureText(text);
+ const clusters = tm.getTextClusters();
+
+ ctx.wordSpacing = '10px';
+
+ for (const cluster of clusters) {
+ ctx.fillTextCluster(cluster, 10, 25);
+ }
+
+ ctx.fillText(text, 10, 50);
+
+ const outputCanvas = document.getElementById("canvas1");
+ const outputCtx = outputCanvas.getContext('2d');
+ outputCtx.drawImage(canvas, 0, 0);
+ </script>
+</span>
+
+<span>
+ <div>font_kerning</div>
+ <canvas id="canvas2" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script type="module">
+ const canvas = new OffscreenCanvas(250, 80);
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.fontKerning = 'none';
+
+ let tm = ctx.measureText(text);
+ const clusters = tm.getTextClusters();
+
+ ctx.fontKerning = 'normal';
+
+ for (const cluster of clusters) {
+ ctx.fillTextCluster(cluster, 10, 25);
+ }
+
+ ctx.fillText(text, 10, 50);
+
+ const outputCanvas = document.getElementById("canvas2");
+ const outputCtx = outputCanvas.getContext('2d');
+ outputCtx.drawImage(canvas, 0, 0);
+ </script>
+</span>
+
+<span>
+ <div>font_variant_caps</div>
+ <canvas id="canvas3" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script type="module">
+ const canvas = new OffscreenCanvas(250, 80);
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.fontVariantCaps = 'small-caps';
+
+ let tm = ctx.measureText(text);
+ const clusters = tm.getTextClusters();
+
+ ctx.fontVariantCaps = 'all-small-caps';
+
+ for (const cluster of clusters) {
+ ctx.fillTextCluster(cluster, 10, 25);
+ }
+
+ ctx.fillText(text, 10, 50);
+
+ const outputCanvas = document.getElementById("canvas3");
+ const outputCtx = outputCanvas.getContext('2d');
+ outputCtx.drawImage(canvas, 0, 0);
+ </script>
+</span>
+
+</div>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.w.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.w.html
new file mode 100644
index 00000000000..76f61dad315
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative.w.html
@@ -0,0 +1,195 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
+<meta charset="UTF-8">
+<html class="reftest-wait">
+<link rel="match" href="2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative-expected.html">
+<title>Canvas test: 2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative</title>
+<h1 style="font-size: 20px;">2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative</h1>
+<p class="desc">Test that fillTextCluster() renders using the drawing styles as they were when `ctx.measureText()` was called, regardless of any changes in the context since.</p>
+<script>pending_tests = 4;</script>
+
+<div style="display: grid; grid-gap: 4px;
+ grid-template-columns: repeat(2, max-content);
+ font-size: 13px; text-align: center;">
+<span>
+ <div>letter_spacing</div>
+ <canvas id="canvas0" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script id="myWorker0" type="text/worker">
+ self.onmessage = function(e) {
+ const canvas = new OffscreenCanvas(250, 80);
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.letterSpacing = '2px';
+
+ let tm = ctx.measureText(text);
+ const clusters = tm.getTextClusters();
+
+ ctx.letterSpacing = '6px';
+
+ for (const cluster of clusters) {
+ ctx.fillTextCluster(cluster, 10, 25);
+ }
+
+ ctx.fillText(text, 10, 50);
+
+ const bitmap = canvas.transferToImageBitmap();
+ self.postMessage(bitmap, bitmap);
+ };
+ </script>
+ <script type="module">
+ const blob = new Blob([document.getElementById('myWorker0').textContent]);
+ const worker = new Worker(URL.createObjectURL(blob));
+ worker.addEventListener('message', msg => {
+ const outputCanvas = document.getElementById('canvas0');
+ const outputCtx = outputCanvas.getContext('2d');
+ outputCtx.drawImage(msg.data, 0, 0);
+ if (--pending_tests == 0) {
+ document.documentElement.classList.remove('reftest-wait');
+ }
+ });
+ worker.postMessage(null);
+ </script>
+</span>
+
+<span>
+ <div>word_spacing</div>
+ <canvas id="canvas1" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script id="myWorker1" type="text/worker">
+ self.onmessage = function(e) {
+ const canvas = new OffscreenCanvas(250, 80);
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.wordSpacing = '2px';
+
+ let tm = ctx.measureText(text);
+ const clusters = tm.getTextClusters();
+
+ ctx.wordSpacing = '10px';
+
+ for (const cluster of clusters) {
+ ctx.fillTextCluster(cluster, 10, 25);
+ }
+
+ ctx.fillText(text, 10, 50);
+
+ const bitmap = canvas.transferToImageBitmap();
+ self.postMessage(bitmap, bitmap);
+ };
+ </script>
+ <script type="module">
+ const blob = new Blob([document.getElementById('myWorker1').textContent]);
+ const worker = new Worker(URL.createObjectURL(blob));
+ worker.addEventListener('message', msg => {
+ const outputCanvas = document.getElementById('canvas1');
+ const outputCtx = outputCanvas.getContext('2d');
+ outputCtx.drawImage(msg.data, 0, 0);
+ if (--pending_tests == 0) {
+ document.documentElement.classList.remove('reftest-wait');
+ }
+ });
+ worker.postMessage(null);
+ </script>
+</span>
+
+<span>
+ <div>font_kerning</div>
+ <canvas id="canvas2" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script id="myWorker2" type="text/worker">
+ self.onmessage = function(e) {
+ const canvas = new OffscreenCanvas(250, 80);
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.fontKerning = 'none';
+
+ let tm = ctx.measureText(text);
+ const clusters = tm.getTextClusters();
+
+ ctx.fontKerning = 'normal';
+
+ for (const cluster of clusters) {
+ ctx.fillTextCluster(cluster, 10, 25);
+ }
+
+ ctx.fillText(text, 10, 50);
+
+ const bitmap = canvas.transferToImageBitmap();
+ self.postMessage(bitmap, bitmap);
+ };
+ </script>
+ <script type="module">
+ const blob = new Blob([document.getElementById('myWorker2').textContent]);
+ const worker = new Worker(URL.createObjectURL(blob));
+ worker.addEventListener('message', msg => {
+ const outputCanvas = document.getElementById('canvas2');
+ const outputCtx = outputCanvas.getContext('2d');
+ outputCtx.drawImage(msg.data, 0, 0);
+ if (--pending_tests == 0) {
+ document.documentElement.classList.remove('reftest-wait');
+ }
+ });
+ worker.postMessage(null);
+ </script>
+</span>
+
+<span>
+ <div>font_variant_caps</div>
+ <canvas id="canvas3" width="250" height="80" style="outline: 1px solid">
+ <p class="fallback">FAIL (fallback content)</p>
+ </canvas>
+ <script id="myWorker3" type="text/worker">
+ self.onmessage = function(e) {
+ const canvas = new OffscreenCanvas(250, 80);
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ ctx.fontVariantCaps = 'small-caps';
+
+ let tm = ctx.measureText(text);
+ const clusters = tm.getTextClusters();
+
+ ctx.fontVariantCaps = 'all-small-caps';
+
+ for (const cluster of clusters) {
+ ctx.fillTextCluster(cluster, 10, 25);
+ }
+
+ ctx.fillText(text, 10, 50);
+
+ const bitmap = canvas.transferToImageBitmap();
+ self.postMessage(bitmap, bitmap);
+ };
+ </script>
+ <script type="module">
+ const blob = new Blob([document.getElementById('myWorker3').textContent]);
+ const worker = new Worker(URL.createObjectURL(blob));
+ worker.addEventListener('message', msg => {
+ const outputCanvas = document.getElementById('canvas3');
+ const outputCtx = outputCanvas.getContext('2d');
+ outputCtx.drawImage(msg.data, 0, 0);
+ if (--pending_tests == 0) {
+ document.documentElement.classList.remove('reftest-wait');
+ }
+ });
+ worker.postMessage(null);
+ </script>
+</span>
+
+</div>
+</html>
diff --git a/tests/wpt/tests/html/canvas/tools/yaml-new/compositing.yaml b/tests/wpt/tests/html/canvas/tools/yaml-new/compositing.yaml
index 1db0c590db2..838ad4b06cb 100644
--- a/tests/wpt/tests/html/canvas/tools/yaml-new/compositing.yaml
+++ b/tests/wpt/tests/html/canvas/tools/yaml-new/compositing.yaml
@@ -234,7 +234,7 @@
- name: 2d.composite.grid
size: [80, 60]
code: |
- ctx.fillStyle = 'rgb(0, 102, 255)';
+ ctx.fillStyle = 'rgba(0, 102, 240, 0.8)';
ctx.fillRect(15, 15, 50, 30);
ctx.translate(25, 20);
@@ -247,13 +247,13 @@
{{ js_filter_code }}
{{ js_shadow_code }}
- ctx.globalCompositeOperation = '{{ variant_names[0] }}'
+ ctx.globalCompositeOperation = '{{ variant_names[0] }}';
{{ js_draw_code }}
cairo_reference: |
# Background.
cr.push_group()
- cr.set_source_rgb(0, 102/255, 1)
+ cr.set_source_rgba(0, 102/255, 240/255, 0.8)
cr.rectangle(15, 15, 50, 30)
cr.fill()
background = cr.pop_group()
@@ -289,7 +289,7 @@
cr.set_source(filtered_foreground)
cr.paint()
- fuzzy: maxDifference=0-2; totalPixels=0-10210
+ fuzzy: maxDifference=0-3; totalPixels=0-25392
variants_layout:
- single_file
- multi_files
@@ -354,7 +354,8 @@
js_filter_code: // No filter.
cairo_filter_code: "# No filter."
filter:
- js_filter_code: ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 0))'
+ js_filter_code: |-
+ ctx.filter = 'drop-shadow(5px -5px 0px rgb(255, 154, 100))';
cairo_filter_code: |-
cr.push_group()
cr.set_operator(cairo.OPERATOR_OVER)
@@ -362,7 +363,7 @@
cr.set_source(foreground)
cr.paint()
cr.set_operator(cairo.OPERATOR_IN)
- cr.set_source_rgba(1, 154/255, 0)
+ cr.set_source_rgb(1, 154/255, 100/255)
cr.paint()
cr.pop_group_to_source()
cr.paint()
@@ -374,7 +375,7 @@
js_shadow_code: |-
ctx.shadowOffsetX = 20;
ctx.shadowOffsetY = 20;
- ctx.shadowColor = 'rgb(154, 0, 154)';
+ ctx.shadowColor = 'rgba(154, 0, 154, 0.8)';
cairo_shadow_code: |-
cr.push_group()
cr.set_operator(cairo.OPERATOR_OVER)
@@ -382,7 +383,7 @@
cr.set_source(filtered_foreground)
cr.paint()
cr.set_operator(cairo.OPERATOR_IN)
- cr.set_source_rgb(154/255, 0, 154/255)
+ cr.set_source_rgba(154/255, 0, 154/255, 0.8)
cr.paint()
cr.pop_group_to_source()
cr.paint()
diff --git a/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml b/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml
index 78312640c08..7fe59a91a35 100644
--- a/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml
+++ b/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml
@@ -2160,6 +2160,64 @@
const y = 100;
ctx.fillText(text, x, y);
+- name: 2d.text.measure.text-clusters-rendering-drawing-styles-change.tentative
+ desc: >-
+ Test that fillTextCluster() renders using the drawing styles as they were
+ when `ctx.measureText()` was called, regardless of any changes in the
+ context since.
+ size: [250, 80]
+ code: |
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ {{ original_value }}
+
+ let tm = ctx.measureText(text);
+ const clusters = tm.getTextClusters();
+
+ {{ modified_value }}
+
+ for (const cluster of clusters) {
+ ctx.fillTextCluster(cluster, 10, 25);
+ }
+
+ ctx.fillText(text, 10, 50);
+ reference: |
+ ctx.font = '20px serif';
+ const text = 'Test ♦️ find';
+
+ {{ original_value }}
+
+ ctx.fillText(text, 10, 25);
+
+ {{ modified_value }}
+
+ ctx.fillText(text, 10, 50);
+ variants_layout:
+ [single_file]
+ grid_width: 2
+ variants:
+ - letter_spacing:
+ original_value: |-
+ ctx.letterSpacing = '2px';
+ modified_value: |-
+ ctx.letterSpacing = '6px';
+ word_spacing:
+ original_value: |-
+ ctx.wordSpacing = '2px';
+ modified_value: |-
+ ctx.wordSpacing = '10px';
+ font_kerning:
+ original_value: |-
+ ctx.fontKerning = 'none';
+ modified_value: |-
+ ctx.fontKerning = 'normal';
+ font_variant_caps:
+ original_value: |-
+ ctx.fontVariantCaps = 'small-caps';
+ modified_value: |-
+ ctx.fontVariantCaps = 'all-small-caps';
+
- name: 2d.text.measure.text-clusters-range.tentative
desc: >-
Test that getTextClusters() and fillTextCluster() correctly render
diff --git a/tests/wpt/tests/html/dom/aria-attribute-reflection.html b/tests/wpt/tests/html/dom/aria-attribute-reflection.html
index d2e5b03f853..2a73f5c557b 100644
--- a/tests/wpt/tests/html/dom/aria-attribute-reflection.html
+++ b/tests/wpt/tests/html/dom/aria-attribute-reflection.html
@@ -120,16 +120,7 @@ test(function(t) {
}, "aria-colindex attribute reflects.");
</script>
-<div id="colindextext" aria-colindextext="x"></div>
-<script>
-test(function(t) {
- var element = document.getElementById("colindextext");
- assert_equals(element.ariaColIndexText, "x");
- element.ariaColIndexText = "y";
- assert_equals(element.getAttribute("aria-colindextext"), "y");
- testNullable(element, "ariaColIndexText", "aria-colindextext");
-}, "aria-colindextext attribute reflects.");
-</script>
+<!-- colindextext -> aria-attribute-reflection.tentative.html -->
<div id="colspan" aria-colspan="2"></div>
<script>
@@ -153,16 +144,7 @@ test(function(t) {
}, "aria-current attribute reflects.");
</script>
-<div id="description" aria-description="cold as ice"></div>
-<script>
-test(function(t) {
- var element = document.getElementById("description");
- assert_equals(element.ariaDescription, "cold as ice");
- element.ariaDescription = "hot as fire";
- assert_equals(element.getAttribute("aria-description"), "hot as fire");
- testNullable(element, "ariaDescription", "aria-description");
-}, "aria-description attribute reflects.");
-</script>
+<!-- description -> aria-attribute-reflection.tentative.html -->
<div id="disabled" aria-disabled="true"></div>
<script>
@@ -406,16 +388,7 @@ test(function(t) {
}, "aria-rowindex attribute reflects.");
</script>
-<div id="rowindextext" aria-rowindextext="x"></div>
-<script>
- test(function(t) {
- var element = document.getElementById("rowindextext");
- assert_equals(element.ariaRowIndexText, "x");
- element.ariaRowIndexText = "y";
- assert_equals(element.getAttribute("aria-rowindextext"), "y");
- testNullable(element, "ariaRowIndexText", "aria-rowindextext");
- }, "aria-rowindextext attribute reflects.");
-</script>
+<!-- rowindextext -> aria-attribute-reflection.tentative.html -->
<div id="rowspan" aria-rowspan="2"></div>
<script>
diff --git a/tests/wpt/tests/html/dom/aria-attribute-reflection.tentative.html b/tests/wpt/tests/html/dom/aria-attribute-reflection.tentative.html
new file mode 100644
index 00000000000..db38ddef06c
--- /dev/null
+++ b/tests/wpt/tests/html/dom/aria-attribute-reflection.tentative.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML>
+<meta charset="utf-8" />
+<title>Element Reflection for ARIA properties</title>
+<link rel=help href="https://wicg.github.io/aom/spec/aria-reflection.html">
+<link rel="author" title="Meredith Lane" href="meredithl@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<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>
+
+<!-- tentative -->
+<div id="colindextext" aria-colindextext="x"></div>
+<script>
+test(function(t) {
+ var element = document.getElementById("colindextext");
+ assert_equals(element.ariaColIndexText, "x");
+ element.ariaColIndexText = "y";
+ assert_equals(element.getAttribute("aria-colindextext"), "y");
+ testNullable(element, "ariaColIndexText", "aria-colindextext");
+}, "aria-colindextext attribute reflects.");
+</script>
+
+<!-- tentative -->
+<div id="description" aria-description="cold as ice"></div>
+<script>
+test(function(t) {
+ var element = document.getElementById("description");
+ assert_equals(element.ariaDescription, "cold as ice");
+ element.ariaDescription = "hot as fire";
+ assert_equals(element.getAttribute("aria-description"), "hot as fire");
+ testNullable(element, "ariaDescription", "aria-description");
+}, "aria-description attribute reflects.");
+</script>
+
+<!-- tentative -->
+<div id="rowindextext" aria-rowindextext="x"></div>
+<script>
+ test(function(t) {
+ var element = document.getElementById("rowindextext");
+ assert_equals(element.ariaRowIndexText, "x");
+ element.ariaRowIndexText = "y";
+ assert_equals(element.getAttribute("aria-rowindextext"), "y");
+ testNullable(element, "ariaRowIndexText", "aria-rowindextext");
+ }, "aria-rowindextext attribute reflects.");
+</script>
+
+</html>
diff --git a/tests/wpt/tests/html/dom/elements/the-innertext-and-outertext-properties/innertext-whitespace-pre-line.html b/tests/wpt/tests/html/dom/elements/the-innertext-and-outertext-properties/innertext-whitespace-pre-line.html
index c5696df9de8..8ce76f2eb1f 100644
--- a/tests/wpt/tests/html/dom/elements/the-innertext-and-outertext-properties/innertext-whitespace-pre-line.html
+++ b/tests/wpt/tests/html/dom/elements/the-innertext-and-outertext-properties/innertext-whitespace-pre-line.html
@@ -31,11 +31,9 @@ test(() => {
test(() => {
function collapseWhitespace(s) {
- return s.replace(/ +/g, ' ') // collapse runs of spaces
- .replace(/ $/mg, '') // strip trailing spaces
- .replace(/^ /mg, '') // strip leading spaces
- .replace(/\n\n+/g, '\n') // collapse runs of newlines
- .replace(/^\n/, ''); // remove any initial newline
+ return s.replace(/ +/g, ' ') // collapse runs of spaces
+ .replace(/ $/mg, '') // strip trailing spaces
+ .replace(/^ /mg, ''); // strip leading spaces
}
assert_equals(c.innerText, collapseWhitespace(d.innerText));
}, "innerText has collapsed whitespace but preserved newlines with pre-line");
diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/nested-select-crash.html b/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/nested-select-crash.html
new file mode 100644
index 00000000000..dea01de80be
--- /dev/null
+++ b/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/nested-select-crash.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<link rel=author href="mailto:jarhar@chromium.org">
+<link rel=help href="https://issues.chromium.org/issues/373893049">
+
+<style>
+select,::picker(select) {
+ appearance: base-select;
+}
+</style>
+
+<select>
+ <button>
+ Hello??
+ <selectedoption />
+ </button>
+ <option>
+ <object type="no/type">
+ <select>
+ <button>
+ Hello??
+ <selectedoption />
+ </button>
+ <option>One</option>
+ <option>Two</option>
+ </select>
+ </object>
+ </option>
+ <option>Two</option>
+</select>
diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/selectedoption-in-option-crash.html b/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/selectedoption-in-option-crash.html
new file mode 100644
index 00000000000..d619b8dcd92
--- /dev/null
+++ b/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/selectedoption-in-option-crash.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<link rel=author href="mailto:jarhar@chromium.org">
+<link rel=help href="https://github.com/openui/open-ui/issues/1120">
+
+<style>
+select,::picker(select) {
+ appearance: base-select;
+}
+</style>
+
+<select>
+ <button>
+ <selectedoption></selectedoption>
+ </button>
+ <option>one
+ <selectedoption></selectedoption>
+ </option>
+ <option>two</option>
+</select>
diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/selectedoption.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/selectedoption.tentative.html
index b3381ac510a..398b0b988de 100644
--- a/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/selectedoption.tentative.html
+++ b/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/selectedoption.tentative.html
@@ -44,20 +44,21 @@ promise_test(async () => {
assert_equals(selectedOption.innerHTML, optionTwo.innerHTML,
'The innerHTML of <selectedoption> should change after the selected option is changed.');
+ let oldInnerHTML = optionTwo.innerHTML;
spanTwo.textContent = 'new span';
await new Promise(queueMicrotask);
- assert_equals(selectedOption.innerHTML, optionTwo.innerHTML,
- '<selectedoption> should respond to text content changes.');
+ assert_equals(selectedOption.innerHTML, oldInnerHTML,
+ '<selectedoption> should not respond to <option> text content changes.');
spanTwo.appendChild(document.createElement('div'));
await new Promise(queueMicrotask);
- assert_equals(selectedOption.innerHTML, optionTwo.innerHTML,
- '<selectedoption> should respond to new elements being added to descendants.');
+ assert_equals(selectedOption.innerHTML, oldInnerHTML,
+ '<selectedoption> should not respond to new elements being added to descendants of <option>.');
spanTwo.setAttribute('data-foo', 'bar');
await new Promise(queueMicrotask);
- assert_equals(selectedOption.innerHTML, optionTwo.innerHTML,
- '<selectedoption> should respond to attributes being added to descendants.');
+ assert_equals(selectedOption.innerHTML, oldInnerHTML,
+ '<selectedoption> should not respond to attributes being added to descendants of <option>.');
form.reset();
await new Promise(queueMicrotask);
@@ -90,5 +91,7 @@ promise_test(async () => {
optionOne.remove();
assert_equals(selectedOption.innerHTML, '',
'The content of <selectedoption> should be cleared if there is no selected <option>.');
+
+ // TODO(crbug.com/336844298): Add tests for mutation records during parsing
}, 'The <selectedoption> element should reflect the HTML contents of the selected <option>.');
</script>
diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/selectedoptionelement-attr.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/selectedoptionelement-attr.tentative.html
index 63b4af3abc8..f7ef48c24e4 100644
--- a/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/selectedoptionelement-attr.tentative.html
+++ b/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/selectedoptionelement-attr.tentative.html
@@ -34,11 +34,14 @@ promise_test(async () => {
'Removing the selectedoptionelement attribute via IDL should synchronously clear the contents of the <selectedoption>.');
select.selectedOptionElement = selectedoption;
+ assert_equals(selectedoption.innerHTML, optionOne.innerHTML,
+ 'Re-setting the selectedoptionelement attribute via IDL should synchronously assign the contents of <selectedoption>.');
+ let oldInnerHTML = optionOne.innerHTML;
optionOne.querySelector('span').remove();
await new Promise(queueMicrotask);
- assert_equals(selectedoption.innerHTML, optionOne.innerHTML,
- 'Mutating the selected <option> should update the <selectedoption> contents after a microtask.');
+ assert_equals(selectedoption.innerHTML, oldInnerHTML,
+ 'Mutating the selected <option> should not update the <selectedoption> contents.');
select.value = 'two';
assert_equals(selectedoption.innerHTML, optionTwo.innerHTML,
diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/switch-picker-appearance.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/switch-picker-appearance.tentative.html
index 7a58f62e290..3367cc7cd37 100644
--- a/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/switch-picker-appearance.tentative.html
+++ b/tests/wpt/tests/html/semantics/forms/the-select-element/customizable-select/switch-picker-appearance.tentative.html
@@ -8,22 +8,22 @@
<script src="/resources/testdriver-vendor.js"></script>
<script src="../../../popovers/resources/popover-utils.js"></script>
+<select id=test1 style="appearance:base-select">
+ <option>option</option>
+ <option>option</option>
+</select>
+
<style>
- ::picker(select) {
+ select#test1::picker(select) {
background-color: red;
}
- ::picker(select):popover-open {
+ select#test1::picker(select):popover-open {
background-color: green;
}
</style>
-<select style="appearance:base-select">
- <option>option</option>
- <option>option</option>
-</select>
-
<script>
-const select = document.querySelector('select');
+const select1 = document.querySelector('select#test1');
const red = 'rgb(255, 0, 0)';
const green = 'rgb(0, 128, 0)';
@@ -31,91 +31,176 @@ promise_test(async (t) => {
const style = document.createElement('style');
document.head.append(style);
t.add_cleanup(() => style.remove());
- assert_equals(getComputedStyle(select,'::picker(select)').appearance,'none');
- assert_equals(getComputedStyle(select,'::picker(select)').backgroundColor,red);
+ assert_equals(getComputedStyle(select1,'::picker(select)').appearance,'none');
+ assert_equals(getComputedStyle(select1,'::picker(select)').backgroundColor,red);
style.innerHTML = '::picker(select) {appearance: base-select}';
- assert_equals(getComputedStyle(select,'::picker(select)').appearance,'base-select');
- assert_equals(getComputedStyle(select,'::picker(select)').backgroundColor,red,'still closed, so popover-open doesn\'t match');
+ assert_equals(getComputedStyle(select1,'::picker(select)').appearance,'base-select');
+ assert_equals(getComputedStyle(select1,'::picker(select)').backgroundColor,red,'still closed, so popover-open doesn\'t match');
// Now open the picker
- assert_throws_dom('NotAllowedError',() => select.showPicker(),'showPicker requires user activation');
- assert_false(select.matches(':open'));
+ assert_throws_dom('NotAllowedError',() => select1.showPicker(),'showPicker requires user activation');
+ assert_false(select1.matches(':open'));
await test_driver.bless('showPicker');
- select.showPicker();
- assert_true(select.matches(':open'));
- assert_equals(getComputedStyle(select,'::picker(select)').appearance,'base-select');
- assert_equals(getComputedStyle(select,'::picker(select)').backgroundColor,green,'now open, so popover-open matches');
+ select1.showPicker();
+ assert_true(select1.matches(':open'));
+ assert_equals(getComputedStyle(select1,'::picker(select)').appearance,'base-select');
+ assert_equals(getComputedStyle(select1,'::picker(select)').backgroundColor,green,'now open, so popover-open matches');
// Close the picker
- await clickOn(select);
- assert_false(select.matches(':open'));
- assert_equals(getComputedStyle(select,'::picker(select)').backgroundColor,red,'back to closed');
+ await clickOn(select1);
+ assert_false(select1.matches(':open'));
+ assert_equals(getComputedStyle(select1,'::picker(select)').backgroundColor,red,'back to closed');
}, 'Basic functionality of select picker and appearance');
promise_test(async (t) => {
const style = document.createElement('style');
document.head.append(style);
t.add_cleanup(() => style.remove());
- assert_equals(getComputedStyle(select,'::picker(select)').appearance,'none');
+ assert_equals(getComputedStyle(select1,'::picker(select)').appearance,'none');
style.innerHTML = '::picker(select) {appearance: auto}';
- assert_equals(getComputedStyle(select,'::picker(select)').appearance,'auto');
+ assert_equals(getComputedStyle(select1,'::picker(select)').appearance,'auto');
await test_driver.bless('showPicker');
- select.showPicker();
- assert_equals(getComputedStyle(select,'::picker(select)').backgroundColor,red,'appearance:auto picker is never open');
+ select1.showPicker();
+ assert_equals(getComputedStyle(select1,'::picker(select)').backgroundColor,red,'appearance:auto picker is never open');
// Close the picker
- await clickOn(select);
- assert_false(select.matches(':open'));
+ await clickOn(select1);
+ assert_false(select1.matches(':open'));
}, 'Basic functionality of select picker with appearance:auto');
promise_test(async (t) => {
const style = document.createElement('style');
document.head.append(style);
t.add_cleanup(() => style.remove());
- assert_equals(getComputedStyle(select,'::picker(select)').appearance,'none');
+ assert_equals(getComputedStyle(select1,'::picker(select)').appearance,'none');
style.innerHTML = '::picker(select) {appearance: none}';
- assert_equals(getComputedStyle(select,'::picker(select)').appearance,'none');
+ assert_equals(getComputedStyle(select1,'::picker(select)').appearance,'none');
await test_driver.bless('showPicker');
- select.showPicker();
- assert_equals(getComputedStyle(select,'::picker(select)').backgroundColor,red,'appearance:none picker is never open');
+ select1.showPicker();
+ assert_equals(getComputedStyle(select1,'::picker(select)').backgroundColor,red,'appearance:none picker is never open');
// Close the picker
- await clickOn(select);
- assert_false(select.matches(':open'));
+ await clickOn(select1);
+ assert_false(select1.matches(':open'));
}, 'Basic functionality of select picker with appearance:none');
promise_test(async (t) => {
const style = document.createElement('style');
document.head.append(style);
t.add_cleanup(() => style.remove());
- assert_equals(getComputedStyle(select,'::picker(select)').appearance,'none');
+ assert_equals(getComputedStyle(select1,'::picker(select)').appearance,'none');
style.innerHTML = `
::picker(select) {appearance: base-select}
::picker(select):popover-open {appearance: auto}
`;
- assert_equals(getComputedStyle(select,'::picker(select)').appearance,'base-select');
+ assert_equals(getComputedStyle(select1,'::picker(select)').appearance,'base-select');
await test_driver.bless('showPicker');
- select.showPicker();
- assert_false(select.matches(':open'),'Switching appearance in :popover-open should re-close the picker');
- assert_equals(getComputedStyle(select,'::picker(select)').backgroundColor,red);
+ select1.showPicker();
+ assert_false(select1.matches(':open'),'Switching appearance in :popover-open should re-close the picker');
+ assert_equals(getComputedStyle(select1,'::picker(select)').backgroundColor,red);
await new Promise(resolve => requestAnimationFrame(resolve));
- assert_false(select.matches(':open'),'There should be no oscillation or re-opening the picker');
+ assert_false(select1.matches(':open'),'There should be no oscillation or re-opening the picker');
await new Promise(resolve => requestAnimationFrame(resolve));
- assert_false(select.matches(':open'),'There should be no oscillation or re-opening the picker (2)');
+ assert_false(select1.matches(':open'),'There should be no oscillation or re-opening the picker (2)');
await new Promise(resolve => requestAnimationFrame(resolve));
- assert_false(select.matches(':open'),'There should be no oscillation or re-opening the picker (3)');
+ assert_false(select1.matches(':open'),'There should be no oscillation or re-opening the picker (3)');
}, 'Switching appearance in popover-open should close the picker');
promise_test(async (t) => {
const style = document.createElement('style');
document.head.append(style);
t.add_cleanup(() => style.remove());
- assert_equals(getComputedStyle(select,'::picker(select)').appearance,'none');
+ assert_equals(getComputedStyle(select1,'::picker(select)').appearance,'none');
style.innerHTML = '::picker(select) {appearance: none}';
- assert_equals(getComputedStyle(select,'::picker(select)').appearance,'base-select');
+ assert_equals(getComputedStyle(select1,'::picker(select)').appearance,'base-select');
await test_driver.bless('showPicker');
- select.showPicker();
- assert_true(select.matches(':open'));
+ select1.showPicker();
+ assert_true(select1.matches(':open'));
style.remove();
- assert_false(select.matches(':open'),'changing appearance while the picker is open should close it');
- assert_equals(getComputedStyle(select,'::picker(select)').appearance,'none');
+ assert_false(select1.matches(':open'),'changing appearance while the picker is open should close it');
+ assert_equals(getComputedStyle(select1,'::picker(select)').appearance,'none');
}, 'Switching appearance in JS after picker is open should close the picker');
</script>
+
+
+<button id=reset>Reset</button>
+<select id=test2>
+ <button><selectedoption></selectedoption></button>
+ <option>option one</option>
+ <option>option two</option>
+ <option>option three</option>
+</select>
+
+<style>
+ select#test2, ::picker(select) {
+ appearance: base-select;
+ }
+ select#test2.controlswitch:open {
+ appearance: auto;
+ }
+ select#test2.pickerswitch:open::picker(select) {
+ appearance: auto;
+ }
+ </style>
+
+<script>
+const select2 = document.querySelector('select#test2');
+const secondOption = select2.querySelector('option:nth-of-type(2)');
+
+promise_test(async (t) => {
+ assert_false(select2.matches(':open'),'setup');
+ assert_equals(select2.value,'option one');
+ assert_equals(getComputedStyle(select2).appearance,'base-select');
+ await test_driver.click(select2);
+ assert_true(select2.matches(':open'),'picker should open when clicked');
+ assert_equals(secondOption.textContent,'option two');
+ await test_driver.click(secondOption);
+ assert_false(select2.matches(':open'));
+ assert_equals(select2.value,'option two');
+},'Test of the test harness');
+
+promise_test(async (t) => {
+ assert_false(select2.matches(':open'),'setup');
+ assert_equals(select2.className,'');
+ assert_equals(getComputedStyle(select2).appearance,'base-select');
+ await test_driver.click(select2);
+ assert_true(select2.matches(':open'),'picker should open when clicked');
+ assert_equals(getComputedStyle(select2).appearance,'base-select');
+ await test_driver.click(secondOption); // Choose an option
+ assert_false(select2.matches(':open'));
+ t.add_cleanup(() => select2.removeAttribute('class'));
+ select2.classList.add('controlswitch');
+ assert_false(select2.matches(':open'));
+ assert_equals(getComputedStyle(select2).appearance,'base-select','appearance should not have changed yet');
+ await test_driver.click(select2);
+ assert_false(select2.matches(':open'),'picker should get closed when the appearance value changes');
+ assert_equals(getComputedStyle(select2).appearance,'base-select','appearance should be back to base-select');
+},'The select picker is closed if the <select> appearance value is changed via CSS while the picker is open');
+
+promise_test(async (t) => {
+ assert_false(select2.matches(':open'),'setup');
+ assert_equals(select2.className,'');
+ assert_equals(getComputedStyle(select2).appearance,'base-select');
+ await test_driver.click(select2);
+ assert_true(select2.matches(':open'),'picker should open when clicked');
+ assert_equals(getComputedStyle(select2).appearance,'base-select');
+ await test_driver.click(secondOption); // Choose an option
+ assert_false(select2.matches(':open'));
+ t.add_cleanup(() => select2.removeAttribute('class'));
+ select2.classList.add('pickerswitch');
+ await test_driver.click(select2);
+ assert_false(select2.matches(':open'),'picker should get closed when the appearance value changes');
+ assert_equals(getComputedStyle(select2).appearance,'base-select','appearance should be back to base-select');
+},'The select picker is closed if the ::picker() appearance value is changed via CSS while the picker is open');
+
+promise_test(async (t) => {
+ assert_false(select2.matches(':open'),'setup');
+ assert_equals(select2.className,'');
+ assert_equals(getComputedStyle(select2).appearance,'base-select');
+ await test_driver.click(select2);
+ assert_true(select2.matches(':open'),'picker should open when clicked');
+ assert_equals(getComputedStyle(select2).appearance,'base-select');
+ t.add_cleanup(() => select2.removeAttribute('style'));
+ select2.setAttribute('style','appearance:auto');
+ assert_false(select2.matches(':open'),'Adding inline style should close the picker');
+ assert_equals(getComputedStyle(select2).appearance,'auto','appearance should still be auto from inline style');
+},'The select picker is closed if the <select> inline appearance value is changed while the picker is open');
+</script>
diff --git a/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-active-document.html b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-active-document.html
new file mode 100644
index 00000000000..d6eea38fa8a
--- /dev/null
+++ b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-active-document.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link rel="author" href="mailto:masonf@chromium.org">
+<link rel=help href="https://github.com/whatwg/html/pull/10705">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script>
+ test(() => {
+ const doc = document.implementation.createHTMLDocument();
+ const dialog = doc.createElement('dialog');
+ doc.body.appendChild(dialog);
+ assert_throws_dom('InvalidStateError',() => dialog.showModal());
+ assert_false(dialog.matches('[open]'));
+ },'showModal should throw when the document isn\'t active');
+</script>
diff --git a/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html
index 47612e759ea..652378e015b 100644
--- a/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html
+++ b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html
@@ -181,8 +181,7 @@
doc.body.appendChild(d11);
this.add_cleanup(() => document.body.append(d11));
assert_false(d11.open);
- d11.showModal();
- assert_true(d11.open);
- this.add_cleanup(() => d11.close());
- }, "Although the document is not attached to any pages, showModal() should execute as normal.");
+ assert_throws_dom("INVALID_STATE_ERR", () => d11.showModal());
+ assert_false(d11.open);
+ }, "When the document is not attached to any pages, showModal() should throw.");
</script>
diff --git a/tests/wpt/tests/html/semantics/popovers/popover-active-document.html b/tests/wpt/tests/html/semantics/popovers/popover-active-document.html
new file mode 100644
index 00000000000..6ad1142ed79
--- /dev/null
+++ b/tests/wpt/tests/html/semantics/popovers/popover-active-document.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link rel="author" href="mailto:masonf@chromium.org">
+<link rel=help href="https://github.com/whatwg/html/pull/10705">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script>
+ test(() => {
+ const doc = document.implementation.createHTMLDocument();
+ const popover = doc.createElement('div');
+ popover.setAttribute('popover','');
+ doc.body.appendChild(popover);
+ assert_throws_dom('InvalidStateError',() => popover.showPopover());
+ assert_false(popover.matches(':open'));
+ },'showPopover should throw when the document isn\'t active');
+</script>
diff --git a/tests/wpt/tests/html/semantics/popovers/popover-minimum-role.html b/tests/wpt/tests/html/semantics/popovers/popover-minimum-role.html
new file mode 100644
index 00000000000..8606f983969
--- /dev/null
+++ b/tests/wpt/tests/html/semantics/popovers/popover-minimum-role.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<meta charset="utf-8" />
+<title>Popover minimum role</title>
+<link rel="author" href="mailto:masonf@chromium.org">
+<link rel=help href="https://www.w3.org/TR/html-aam-1.0/#att-popover">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/popover-utils.js"></script>
+
+<div popover id=popover>Popover</div>
+<div id=div style="display:block">Div</div>
+
+<script>
+test((t) => {
+ const popover = document.querySelector('#popover');
+ assert_equals(popover.computedRole,'generic','Closed popover: role is generic');
+ t.add_cleanup(() => popover.hidePopover());
+ popover.showPopover();
+ assert_equals(popover.computedRole,'group','With popover attribute, role is group');
+},'If specified on an element with an implicit role of generic, then the element\'s role instead maps to group.');
+
+test((t) => {
+ const div = document.querySelector('#div');
+ assert_equals(div.computedRole,'generic','Without popover attribute, role is generic');
+ div.setAttribute('popover','');
+ assert_true(isElementVisible(div),'element is visible due to display:block');
+ assert_equals(div.computedRole,'generic','With popover attribute, but before showPopover(), role is still generic');
+ t.add_cleanup(() => div.hidePopover());
+ div.showPopover();
+ assert_equals(div.computedRole,'group','When showing as a popover, role is group');
+ div.removeAttribute('style');
+ assert_equals(div.computedRole,'group','Including with style rule removed');
+},'Dynamic changes to popover attribute should change the role.');
+</script>
diff --git a/tests/wpt/tests/infrastructure/assumptions/ahem-ref.html b/tests/wpt/tests/infrastructure/assumptions/ahem-ref.html
deleted file mode 100644
index 9116232620f..00000000000
--- a/tests/wpt/tests/infrastructure/assumptions/ahem-ref.html
+++ /dev/null
@@ -1,320 +0,0 @@
-<!doctype html>
-<title>Ahem checker</title>
-<link rel="mismatch" href="ahem-notref.html">
-<style>
-* {
- padding: 0;
- margin: 0;
- border: none;
-}
-td {
- width: 34px;
-}
-@font-face {
- font-family: Ahem;
- src: url("../../fonts/Ahem.ttf");
-}
-table {
- font: 15px/1 Ahem;
- border-collapse: separate;
- border-spacing: 1px;
- table-layout: fixed;
-}
-</style>
-<table>
- <tr>
- <td>&#x0020;x <!-- U+0020: SPACE -->
- <td>&#x0021;x <!-- U+0021: EXCLAMATION MARK -->
- <td>&#x0022;x <!-- U+0022: QUOTATION MARK -->
- <td>&#x0023;x <!-- U+0023: NUMBER SIGN -->
- <td>&#x0024;x <!-- U+0024: DOLLAR SIGN -->
- <td>&#x0025;x <!-- U+0025: PERCENT SIGN -->
- <td>&#x0026;x <!-- U+0026: AMPERSAND -->
- <td>&#x0028;x <!-- U+0028: LEFT PARENTHESIS -->
- <td>&#x0029;x <!-- U+0029: RIGHT PARENTHESIS -->
- <td>&#x002A;x <!-- U+002A: ASTERISK -->
- <td>&#x002B;x <!-- U+002B: PLUS SIGN -->
- <td>&#x002C;x <!-- U+002C: COMMA -->
- <td>&#x002D;x <!-- U+002D: HYPHEN-MINUS -->
- <td>&#x002E;x <!-- U+002E: FULL STOP -->
- <td>&#x002F;x <!-- U+002F: SOLIDUS -->
- <td>&#x0030;x <!-- U+0030: DIGIT ZERO -->
- <td>&#x0031;x <!-- U+0031: DIGIT ONE -->
- <tr>
- <td>&#x0032;x <!-- U+0032: DIGIT TWO -->
- <td>&#x0033;x <!-- U+0033: DIGIT THREE -->
- <td>&#x0034;x <!-- U+0034: DIGIT FOUR -->
- <td>&#x0035;x <!-- U+0035: DIGIT FIVE -->
- <td>&#x0036;x <!-- U+0036: DIGIT SIX -->
- <td>&#x0037;x <!-- U+0037: DIGIT SEVEN -->
- <td>&#x0038;x <!-- U+0038: DIGIT EIGHT -->
- <td>&#x0039;x <!-- U+0039: DIGIT NINE -->
- <td>&#x003A;x <!-- U+003A: COLON -->
- <td>&#x003B;x <!-- U+003B: SEMICOLON -->
- <td>&#x003C;x <!-- U+003C: LESS-THAN SIGN -->
- <td>&#x003D;x <!-- U+003D: EQUALS SIGN -->
- <td>&#x003E;x <!-- U+003E: GREATER-THAN SIGN -->
- <td>&#x003F;x <!-- U+003F: QUESTION MARK -->
- <td>&#x0040;x <!-- U+0040: COMMERCIAL AT -->
- <td>&#x0041;x <!-- U+0041: LATIN CAPITAL LETTER A -->
- <td>&#x0042;x <!-- U+0042: LATIN CAPITAL LETTER B -->
- <tr>
- <td>&#x0043;x <!-- U+0043: LATIN CAPITAL LETTER C -->
- <td>&#x0044;x <!-- U+0044: LATIN CAPITAL LETTER D -->
- <td>&#x0045;x <!-- U+0045: LATIN CAPITAL LETTER E -->
- <td>&#x0046;x <!-- U+0046: LATIN CAPITAL LETTER F -->
- <td>&#x0047;x <!-- U+0047: LATIN CAPITAL LETTER G -->
- <td>&#x0048;x <!-- U+0048: LATIN CAPITAL LETTER H -->
- <td>&#x0049;x <!-- U+0049: LATIN CAPITAL LETTER I -->
- <td>&#x004A;x <!-- U+004A: LATIN CAPITAL LETTER J -->
- <td>&#x004B;x <!-- U+004B: LATIN CAPITAL LETTER K -->
- <td>&#x004C;x <!-- U+004C: LATIN CAPITAL LETTER L -->
- <td>&#x004D;x <!-- U+004D: LATIN CAPITAL LETTER M -->
- <td>&#x004E;x <!-- U+004E: LATIN CAPITAL LETTER N -->
- <td>&#x004F;x <!-- U+004F: LATIN CAPITAL LETTER O -->
- <td>&#x0050;x <!-- U+0050: LATIN CAPITAL LETTER P -->
- <td>&#x0051;x <!-- U+0051: LATIN CAPITAL LETTER Q -->
- <td>&#x0052;x <!-- U+0052: LATIN CAPITAL LETTER R -->
- <td>&#x0053;x <!-- U+0053: LATIN CAPITAL LETTER S -->
- <tr>
- <td>&#x0054;x <!-- U+0054: LATIN CAPITAL LETTER T -->
- <td>&#x0055;x <!-- U+0055: LATIN CAPITAL LETTER U -->
- <td>&#x0056;x <!-- U+0056: LATIN CAPITAL LETTER V -->
- <td>&#x0057;x <!-- U+0057: LATIN CAPITAL LETTER W -->
- <td>&#x0058;x <!-- U+0058: LATIN CAPITAL LETTER X -->
- <td>&#x0059;x <!-- U+0059: LATIN CAPITAL LETTER Y -->
- <td>&#x005A;x <!-- U+005A: LATIN CAPITAL LETTER Z -->
- <td>&#x005B;x <!-- U+005B: LEFT SQUARE BRACKET -->
- <td>&#x005C;x <!-- U+005C: REVERSE SOLIDUS -->
- <td>&#x005D;x <!-- U+005D: RIGHT SQUARE BRACKET -->
- <td>&#x005E;x <!-- U+005E: CIRCUMFLEX ACCENT -->
- <td>&#x005F;x <!-- U+005F: LOW LINE -->
- <td>&#x0060;x <!-- U+0060: GRAVE ACCENT -->
- <td>&#x0061;x <!-- U+0061: LATIN SMALL LETTER A -->
- <td>&#x0062;x <!-- U+0062: LATIN SMALL LETTER B -->
- <td>&#x0063;x <!-- U+0063: LATIN SMALL LETTER C -->
- <td>&#x0064;x <!-- U+0064: LATIN SMALL LETTER D -->
- <tr>
- <td>&#x0065;x <!-- U+0065: LATIN SMALL LETTER E -->
- <td>&#x0066;x <!-- U+0066: LATIN SMALL LETTER F -->
- <td>&#x0067;x <!-- U+0067: LATIN SMALL LETTER G -->
- <td>&#x0068;x <!-- U+0068: LATIN SMALL LETTER H -->
- <td>&#x0069;x <!-- U+0069: LATIN SMALL LETTER I -->
- <td>&#x006A;x <!-- U+006A: LATIN SMALL LETTER J -->
- <td>&#x006B;x <!-- U+006B: LATIN SMALL LETTER K -->
- <td>&#x006C;x <!-- U+006C: LATIN SMALL LETTER L -->
- <td>&#x006D;x <!-- U+006D: LATIN SMALL LETTER M -->
- <td>&#x006E;x <!-- U+006E: LATIN SMALL LETTER N -->
- <td>&#x006F;x <!-- U+006F: LATIN SMALL LETTER O -->
- <td>&#x0070;x <!-- U+0070: LATIN SMALL LETTER P -->
- <td>&#x0071;x <!-- U+0071: LATIN SMALL LETTER Q -->
- <td>&#x0072;x <!-- U+0072: LATIN SMALL LETTER R -->
- <td>&#x0073;x <!-- U+0073: LATIN SMALL LETTER S -->
- <td>&#x0074;x <!-- U+0074: LATIN SMALL LETTER T -->
- <td>&#x0075;x <!-- U+0075: LATIN SMALL LETTER U -->
- <tr>
- <td>&#x0076;x <!-- U+0076: LATIN SMALL LETTER V -->
- <td>&#x0077;x <!-- U+0077: LATIN SMALL LETTER W -->
- <td>&#x0078;x <!-- U+0078: LATIN SMALL LETTER X -->
- <td>&#x0079;x <!-- U+0079: LATIN SMALL LETTER Y -->
- <td>&#x007A;x <!-- U+007A: LATIN SMALL LETTER Z -->
- <td>&#x007B;x <!-- U+007B: LEFT CURLY BRACKET -->
- <td>&#x007C;x <!-- U+007C: VERTICAL LINE -->
- <td>&#x007D;x <!-- U+007D: RIGHT CURLY BRACKET -->
- <td>&#x007E;x <!-- U+007E: TILDE -->
- <td>&#x00A0;x <!-- U+00A0: NO-BREAK SPACE -->
- <td>&#x00A1;x <!-- U+00A1: INVERTED EXCLAMATION MARK -->
- <td>&#x00A2;x <!-- U+00A2: CENT SIGN -->
- <td>&#x00A3;x <!-- U+00A3: POUND SIGN -->
- <td>&#x00A4;x <!-- U+00A4: CURRENCY SIGN -->
- <td>&#x00A5;x <!-- U+00A5: YEN SIGN -->
- <td>&#x00A6;x <!-- U+00A6: BROKEN BAR -->
- <td>&#x00A7;x <!-- U+00A7: SECTION SIGN -->
- <tr>
- <td>&#x00A8;x <!-- U+00A8: DIAERESIS -->
- <td>&#x00A9;x <!-- U+00A9: COPYRIGHT SIGN -->
- <td>&#x00AA;x <!-- U+00AA: FEMININE ORDINAL INDICATOR -->
- <td>&#x00AB;x <!-- U+00AB: LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -->
- <td>&#x00AC;x <!-- U+00AC: NOT SIGN -->
- <td>&#x00AD;x <!-- U+00AD: SOFT HYPHEN -->
- <td>&#x00AE;x <!-- U+00AE: REGISTERED SIGN -->
- <td>&#x00AF;x <!-- U+00AF: MACRON -->
- <td>&#x00B0;x <!-- U+00B0: DEGREE SIGN -->
- <td>&#x00B1;x <!-- U+00B1: PLUS-MINUS SIGN -->
- <td>&#x00B2;x <!-- U+00B2: SUPERSCRIPT TWO -->
- <td>&#x00B3;x <!-- U+00B3: SUPERSCRIPT THREE -->
- <td>&#x00B4;x <!-- U+00B4: ACUTE ACCENT -->
- <td>&#x00B5;x <!-- U+00B5: MICRO SIGN -->
- <td>&#x00B6;x <!-- U+00B6: PILCROW SIGN -->
- <td>&#x00B7;x <!-- U+00B7: MIDDLE DOT -->
- <td>&#x00B8;x <!-- U+00B8: CEDILLA -->
- <tr>
- <td>&#x00B9;x <!-- U+00B9: SUPERSCRIPT ONE -->
- <td>&#x00BA;x <!-- U+00BA: MASCULINE ORDINAL INDICATOR -->
- <td>&#x00BB;x <!-- U+00BB: RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
- <td>&#x00BC;x <!-- U+00BC: VULGAR FRACTION ONE QUARTER -->
- <td>&#x00BD;x <!-- U+00BD: VULGAR FRACTION ONE HALF -->
- <td>&#x00BE;x <!-- U+00BE: VULGAR FRACTION THREE QUARTERS -->
- <td>&#x00BF;x <!-- U+00BF: INVERTED QUESTION MARK -->
- <td>&#x00C0;x <!-- U+00C0: LATIN CAPITAL LETTER A WITH GRAVE -->
- <td>&#x00C1;x <!-- U+00C1: LATIN CAPITAL LETTER A WITH ACUTE -->
- <td>&#x00C2;x <!-- U+00C2: LATIN CAPITAL LETTER A WITH CIRCUMFLEX -->
- <td>&#x00C3;x <!-- U+00C3: LATIN CAPITAL LETTER A WITH TILDE -->
- <td>&#x00C4;x <!-- U+00C4: LATIN CAPITAL LETTER A WITH DIAERESIS -->
- <td>&#x00C5;x <!-- U+00C5: LATIN CAPITAL LETTER A WITH RING ABOVE -->
- <td>&#x00C6;x <!-- U+00C6: LATIN CAPITAL LETTER AE -->
- <td>&#x00C7;x <!-- U+00C7: LATIN CAPITAL LETTER C WITH CEDILLA -->
- <td>&#x00C8;x <!-- U+00C8: LATIN CAPITAL LETTER E WITH GRAVE -->
- <td>&#x00C9;x <!-- U+00C9: LATIN CAPITAL LETTER E WITH ACUTE -->
- <tr>
- <td>&#x00CA;x <!-- U+00CA: LATIN CAPITAL LETTER E WITH CIRCUMFLEX -->
- <td>&#x00CB;x <!-- U+00CB: LATIN CAPITAL LETTER E WITH DIAERESIS -->
- <td>&#x00CC;x <!-- U+00CC: LATIN CAPITAL LETTER I WITH GRAVE -->
- <td>&#x00CD;x <!-- U+00CD: LATIN CAPITAL LETTER I WITH ACUTE -->
- <td>&#x00CE;x <!-- U+00CE: LATIN CAPITAL LETTER I WITH CIRCUMFLEX -->
- <td>&#x00CF;x <!-- U+00CF: LATIN CAPITAL LETTER I WITH DIAERESIS -->
- <td>&#x00D0;x <!-- U+00D0: LATIN CAPITAL LETTER ETH -->
- <td>&#x00D1;x <!-- U+00D1: LATIN CAPITAL LETTER N WITH TILDE -->
- <td>&#x00D2;x <!-- U+00D2: LATIN CAPITAL LETTER O WITH GRAVE -->
- <td>&#x00D3;x <!-- U+00D3: LATIN CAPITAL LETTER O WITH ACUTE -->
- <td>&#x00D4;x <!-- U+00D4: LATIN CAPITAL LETTER O WITH CIRCUMFLEX -->
- <td>&#x00D5;x <!-- U+00D5: LATIN CAPITAL LETTER O WITH TILDE -->
- <td>&#x00D6;x <!-- U+00D6: LATIN CAPITAL LETTER O WITH DIAERESIS -->
- <td>&#x00D7;x <!-- U+00D7: MULTIPLICATION SIGN -->
- <td>&#x00D8;x <!-- U+00D8: LATIN CAPITAL LETTER O WITH STROKE -->
- <td>&#x00D9;x <!-- U+00D9: LATIN CAPITAL LETTER U WITH GRAVE -->
- <td>&#x00DA;x <!-- U+00DA: LATIN CAPITAL LETTER U WITH ACUTE -->
- <tr>
- <td>&#x00DB;x <!-- U+00DB: LATIN CAPITAL LETTER U WITH CIRCUMFLEX -->
- <td>&#x00DC;x <!-- U+00DC: LATIN CAPITAL LETTER U WITH DIAERESIS -->
- <td>&#x00DD;x <!-- U+00DD: LATIN CAPITAL LETTER Y WITH ACUTE -->
- <td>&#x00DE;x <!-- U+00DE: LATIN CAPITAL LETTER THORN -->
- <td>&#x00DF;x <!-- U+00DF: LATIN SMALL LETTER SHARP S -->
- <td>&#x00E0;x <!-- U+00E0: LATIN SMALL LETTER A WITH GRAVE -->
- <td>&#x00E1;x <!-- U+00E1: LATIN SMALL LETTER A WITH ACUTE -->
- <td>&#x00E2;x <!-- U+00E2: LATIN SMALL LETTER A WITH CIRCUMFLEX -->
- <td>&#x00E3;x <!-- U+00E3: LATIN SMALL LETTER A WITH TILDE -->
- <td>&#x00E4;x <!-- U+00E4: LATIN SMALL LETTER A WITH DIAERESIS -->
- <td>&#x00E5;x <!-- U+00E5: LATIN SMALL LETTER A WITH RING ABOVE -->
- <td>&#x00E6;x <!-- U+00E6: LATIN SMALL LETTER AE -->
- <td>&#x00E7;x <!-- U+00E7: LATIN SMALL LETTER C WITH CEDILLA -->
- <td>&#x00E8;x <!-- U+00E8: LATIN SMALL LETTER E WITH GRAVE -->
- <td>&#x00E9;x <!-- U+00E9: LATIN SMALL LETTER E WITH ACUTE -->
- <td>&#x00EA;x <!-- U+00EA: LATIN SMALL LETTER E WITH CIRCUMFLEX -->
- <td>&#x00EB;x <!-- U+00EB: LATIN SMALL LETTER E WITH DIAERESIS -->
- <tr>
- <td>&#x00EC;x <!-- U+00EC: LATIN SMALL LETTER I WITH GRAVE -->
- <td>&#x00ED;x <!-- U+00ED: LATIN SMALL LETTER I WITH ACUTE -->
- <td>&#x00EE;x <!-- U+00EE: LATIN SMALL LETTER I WITH CIRCUMFLEX -->
- <td>&#x00EF;x <!-- U+00EF: LATIN SMALL LETTER I WITH DIAERESIS -->
- <td>&#x00F0;x <!-- U+00F0: LATIN SMALL LETTER ETH -->
- <td>&#x00F1;x <!-- U+00F1: LATIN SMALL LETTER N WITH TILDE -->
- <td>&#x00F2;x <!-- U+00F2: LATIN SMALL LETTER O WITH GRAVE -->
- <td>&#x00F3;x <!-- U+00F3: LATIN SMALL LETTER O WITH ACUTE -->
- <td>&#x00F4;x <!-- U+00F4: LATIN SMALL LETTER O WITH CIRCUMFLEX -->
- <td>&#x00F5;x <!-- U+00F5: LATIN SMALL LETTER O WITH TILDE -->
- <td>&#x00F6;x <!-- U+00F6: LATIN SMALL LETTER O WITH DIAERESIS -->
- <td>&#x00F7;x <!-- U+00F7: DIVISION SIGN -->
- <td>&#x00F8;x <!-- U+00F8: LATIN SMALL LETTER O WITH STROKE -->
- <td>&#x00F9;x <!-- U+00F9: LATIN SMALL LETTER U WITH GRAVE -->
- <td>&#x00FA;x <!-- U+00FA: LATIN SMALL LETTER U WITH ACUTE -->
- <td>&#x00FB;x <!-- U+00FB: LATIN SMALL LETTER U WITH CIRCUMFLEX -->
- <td>&#x00FC;x <!-- U+00FC: LATIN SMALL LETTER U WITH DIAERESIS -->
- <tr>
- <td>&#x00FD;x <!-- U+00FD: LATIN SMALL LETTER Y WITH ACUTE -->
- <td>&#x00FE;x <!-- U+00FE: LATIN SMALL LETTER THORN -->
- <td>&#x00FF;x <!-- U+00FF: LATIN SMALL LETTER Y WITH DIAERESIS -->
- <td>&#x0131;x <!-- U+0131: LATIN SMALL LETTER DOTLESS I -->
- <td>&#x0152;x <!-- U+0152: LATIN CAPITAL LIGATURE OE -->
- <td>&#x0153;x <!-- U+0153: LATIN SMALL LIGATURE OE -->
- <td>&#x0178;x <!-- U+0178: LATIN CAPITAL LETTER Y WITH DIAERESIS -->
- <td>&#x0192;x <!-- U+0192: LATIN SMALL LETTER F WITH HOOK -->
- <td>&#x02C6;x <!-- U+02C6: MODIFIER LETTER CIRCUMFLEX ACCENT -->
- <td>&#x02C7;x <!-- U+02C7: CARON -->
- <td>&#x02C9;x <!-- U+02C9: MODIFIER LETTER MACRON -->
- <td>&#x02D8;x <!-- U+02D8: BREVE -->
- <td>&#x02D9;x <!-- U+02D9: DOT ABOVE -->
- <td>&#x02DA;x <!-- U+02DA: RING ABOVE -->
- <td>&#x02DB;x <!-- U+02DB: OGONEK -->
- <td>&#x02DC;x <!-- U+02DC: SMALL TILDE -->
- <td>&#x02DD;x <!-- U+02DD: DOUBLE ACUTE ACCENT -->
- <tr>
- <td>&#x0394;x <!-- U+0394: GREEK CAPITAL LETTER DELTA -->
- <td>&#x03A5;x <!-- U+03A5: GREEK CAPITAL LETTER UPSILON -->
- <td>&#x03A7;x <!-- U+03A7: GREEK CAPITAL LETTER CHI -->
- <td>&#x03A9;x <!-- U+03A9: GREEK CAPITAL LETTER OMEGA -->
- <td>&#x03BC;x <!-- U+03BC: GREEK SMALL LETTER MU -->
- <td>&#x03C0;x <!-- U+03C0: GREEK SMALL LETTER PI -->
- <td>&#x2002;x <!-- U+2002: EN SPACE -->
- <td>&#x2003;x <!-- U+2003: EM SPACE -->
- <td>&#x2004;x <!-- U+2004: THREE-PER-EM SPACE -->
- <td>&#x2005;x <!-- U+2005: FOUR-PER-EM SPACE -->
- <td>&#x2006;x <!-- U+2006: SIX-PER-EM SPACE -->
- <td>&#x2009;x <!-- U+2009: THIN SPACE -->
- <td>&#x200A;x <!-- U+200A: HAIR SPACE -->
- <td>&#x200B;x <!-- U+200B: ZERO WIDTH SPACE -->
- <td>&#x200C;x <!-- U+200C: ZERO WIDTH NON-JOINER -->
- <td>&#x200D;x <!-- U+200D: ZERO WIDTH JOINER -->
- <td>&#x2010;x <!-- U+2010: HYPHEN -->
- <tr>
- <td>&#x2013;x <!-- U+2013: EN DASH -->
- <td>&#x2014;x <!-- U+2014: EM DASH -->
- <td>&#x2018;x <!-- U+2018: LEFT SINGLE QUOTATION MARK -->
- <td>&#x2019;x <!-- U+2019: RIGHT SINGLE QUOTATION MARK -->
- <td>&#x201A;x <!-- U+201A: SINGLE LOW-9 QUOTATION MARK -->
- <td>&#x201C;x <!-- U+201C: LEFT DOUBLE QUOTATION MARK -->
- <td>&#x201D;x <!-- U+201D: RIGHT DOUBLE QUOTATION MARK -->
- <td>&#x201E;x <!-- U+201E: DOUBLE LOW-9 QUOTATION MARK -->
- <td>&#x2020;x <!-- U+2020: DAGGER -->
- <td>&#x2021;x <!-- U+2021: DOUBLE DAGGER -->
- <td>&#x2022;x <!-- U+2022: BULLET -->
- <td>&#x2026;x <!-- U+2026: HORIZONTAL ELLIPSIS -->
- <td>&#x2030;x <!-- U+2030: PER MILLE SIGN -->
- <td>&#x2039;x <!-- U+2039: SINGLE LEFT-POINTING ANGLE QUOTATION MARK -->
- <td>&#x203A;x <!-- U+203A: SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -->
- <td>&#x2044;x <!-- U+2044: FRACTION SLASH -->
- <td>&#x2122;x <!-- U+2122: TRADE MARK SIGN -->
- <tr>
- <td>&#x2126;x <!-- U+2126: OHM SIGN -->
- <td>&#x2202;x <!-- U+2202: PARTIAL DIFFERENTIAL -->
- <td>&#x2206;x <!-- U+2206: INCREMENT -->
- <td>&#x220F;x <!-- U+220F: N-ARY PRODUCT -->
- <td>&#x2211;x <!-- U+2211: N-ARY SUMMATION -->
- <td>&#x2212;x <!-- U+2212: MINUS SIGN -->
- <td>&#x2219;x <!-- U+2219: BULLET OPERATOR -->
- <td>&#x221A;x <!-- U+221A: SQUARE ROOT -->
- <td>&#x221E;x <!-- U+221E: INFINITY -->
- <td>&#x222B;x <!-- U+222B: INTEGRAL -->
- <td>&#x2248;x <!-- U+2248: ALMOST EQUAL TO -->
- <td>&#x2260;x <!-- U+2260: NOT EQUAL TO -->
- <td>&#x2264;x <!-- U+2264: LESS-THAN OR EQUAL TO -->
- <td>&#x2265;x <!-- U+2265: GREATER-THAN OR EQUAL TO -->
- <td>&#x22F2;x <!-- U+22F2: ELEMENT OF WITH LONG HORIZONTAL STROKE -->
- <td>&#x25CA;x <!-- U+25CA: LOZENGE -->
- <td>&#x3000;x <!-- U+3000: IDEOGRAPHIC SPACE -->
- <tr>
- <td>&#x3007;x <!-- U+3007: IDEOGRAPHIC NUMBER ZERO -->
- <td>&#x4E00;x <!-- U+4E00: CJK UNIFIED IDEOGRAPH-4E00 -->
- <td>&#x4E03;x <!-- U+4E03: CJK UNIFIED IDEOGRAPH-4E03 -->
- <td>&#x4E09;x <!-- U+4E09: CJK UNIFIED IDEOGRAPH-4E09 -->
- <td>&#x4E5D;x <!-- U+4E5D: CJK UNIFIED IDEOGRAPH-4E5D -->
- <td>&#x4E8C;x <!-- U+4E8C: CJK UNIFIED IDEOGRAPH-4E8C -->
- <td>&#x4E94;x <!-- U+4E94: CJK UNIFIED IDEOGRAPH-4E94 -->
- <td>&#x516B;x <!-- U+516B: CJK UNIFIED IDEOGRAPH-516B -->
- <td>&#x516D;x <!-- U+516D: CJK UNIFIED IDEOGRAPH-516D -->
- <td>&#x5341;x <!-- U+5341: CJK UNIFIED IDEOGRAPH-5341 -->
- <td>&#x56D7;x <!-- U+56D7: CJK UNIFIED IDEOGRAPH-56D7 -->
- <td>&#x56DB;x <!-- U+56DB: CJK UNIFIED IDEOGRAPH-56DB -->
- <td>&#x571F;x <!-- U+571F: CJK UNIFIED IDEOGRAPH-571F -->
- <td>&#x6728;x <!-- U+6728: CJK UNIFIED IDEOGRAPH-6728 -->
- <td>&#x6A2A;x <!-- U+6A2A: CJK UNIFIED IDEOGRAPH-6A2A -->
- <td>&#x6C34;x <!-- U+6C34: CJK UNIFIED IDEOGRAPH-6C34 -->
- <td>&#x706B;x <!-- U+706B: CJK UNIFIED IDEOGRAPH-706B -->
- <tr>
- <td>&#x7EB5;x <!-- U+7EB5: CJK UNIFIED IDEOGRAPH-7EB5 -->
- <td>&#x91D1;x <!-- U+91D1: CJK UNIFIED IDEOGRAPH-91D1 -->
- <td>&#xF000;x <!-- U+F000 -->
- <td>&#xF001;x <!-- U+F001 -->
- <td>&#xF002;x <!-- U+F002 -->
- <td>&#xFEFF;x <!-- U+FEFF: ZERO WIDTH NO-BREAK SPACE -->
-</table>
diff --git a/tests/wpt/tests/infrastructure/assumptions/ahem.html b/tests/wpt/tests/infrastructure/assumptions/ahem.html
index 068c1d4dee6..0607f9afb64 100644
--- a/tests/wpt/tests/infrastructure/assumptions/ahem.html
+++ b/tests/wpt/tests/infrastructure/assumptions/ahem.html
@@ -1,6 +1,6 @@
<!doctype html>
<title>Ahem checker</title>
-<link rel="match" href="ahem-ref.html">
+<link rel="mismatch" href="ahem-notref.html">
<style>
* {
padding: 0;
diff --git a/tests/wpt/tests/infrastructure/assumptions/tools/ahem-generate-table.py b/tests/wpt/tests/infrastructure/assumptions/tools/ahem-generate-table.py
index 314279f6710..0898ab78c18 100644
--- a/tests/wpt/tests/infrastructure/assumptions/tools/ahem-generate-table.py
+++ b/tests/wpt/tests/infrastructure/assumptions/tools/ahem-generate-table.py
@@ -109,8 +109,7 @@ def build_table():
cases = [
# file, is_test, rel
- ("../ahem.html", True, "match"),
- ("../ahem-ref.html", False, "mismatch"),
+ ("../ahem.html", True, "mismatch"),
("../ahem-notref.html", False, None),
]
diff --git a/tests/wpt/tests/jpegxl/3x3_jpeg_recompression-ref.html b/tests/wpt/tests/jpegxl/3x3_jpeg_recompression-ref.html
index 070243d6a7e..e0fb0f319ff 100644
--- a/tests/wpt/tests/jpegxl/3x3_jpeg_recompression-ref.html
+++ b/tests/wpt/tests/jpegxl/3x3_jpeg_recompression-ref.html
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<title>JPEG XL test reference</title>
-<img src="./resources/3x3_jpeg_recompression.png">
+<img src="./resources/3x3_jpeg_recompression.png" style="height:525px;image-rendering:crisp-edges;">
diff --git a/tests/wpt/tests/jpegxl/3x3_jpeg_recompression.html b/tests/wpt/tests/jpegxl/3x3_jpeg_recompression.html
index f28fca8fdce..7d484635b53 100644
--- a/tests/wpt/tests/jpegxl/3x3_jpeg_recompression.html
+++ b/tests/wpt/tests/jpegxl/3x3_jpeg_recompression.html
@@ -1,8 +1,8 @@
<!DOCTYPE html>
<title>JPEG XL test</title>
-<meta name=fuzzy content="0-1;0-9">
+<meta name=fuzzy content="0-1;0-275625">
<link rel="help" href="https://jpeg.org/jpegxl/">
<link rel="match" href="3x3_jpeg_recompression-ref.html">
<meta name="assert" content="JPEG XL image is rendered correctly">
-<img src="./resources/3x3_jpeg_recompression.jxl">
+<img src="./resources/3x3_jpeg_recompression.jxl" style="height:525px;image-rendering:crisp-edges;">
diff --git a/tests/wpt/tests/jpegxl/3x3_srgb_lossless-ref.html b/tests/wpt/tests/jpegxl/3x3_srgb_lossless-ref.html
index 1bb50832409..498cbf3944a 100644
--- a/tests/wpt/tests/jpegxl/3x3_srgb_lossless-ref.html
+++ b/tests/wpt/tests/jpegxl/3x3_srgb_lossless-ref.html
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<title>JPEG XL test reference</title>
-<img src="./resources/3x3_srgb_lossless.png">
+<img src="./resources/3x3_srgb_lossless.png" style="height:525px;image-rendering:crisp-edges;">
diff --git a/tests/wpt/tests/jpegxl/3x3_srgb_lossless.html b/tests/wpt/tests/jpegxl/3x3_srgb_lossless.html
index 589f11c68c4..da70067ca67 100644
--- a/tests/wpt/tests/jpegxl/3x3_srgb_lossless.html
+++ b/tests/wpt/tests/jpegxl/3x3_srgb_lossless.html
@@ -1,8 +1,8 @@
<!DOCTYPE html>
<title>JPEG XL test</title>
-<meta name=fuzzy content="0-4;0-9">
+<meta name=fuzzy content="0-4;0-275625">
<link rel="help" href="https://jpeg.org/jpegxl/">
<link rel="match" href="3x3_srgb_lossless-ref.html">
<meta name="assert" content="JPEG XL image is rendered correctly">
-<img src="./resources/3x3_srgb_lossless.jxl">
+<img src="./resources/3x3_srgb_lossless.jxl" style="height:525px;image-rendering:crisp-edges;">
diff --git a/tests/wpt/tests/jpegxl/3x3_srgb_lossy-ref.html b/tests/wpt/tests/jpegxl/3x3_srgb_lossy-ref.html
index a5e95baba3b..ad43c9d00b9 100644
--- a/tests/wpt/tests/jpegxl/3x3_srgb_lossy-ref.html
+++ b/tests/wpt/tests/jpegxl/3x3_srgb_lossy-ref.html
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<title>JPEG XL test reference</title>
-<img src="./resources/3x3_srgb_lossy.png">
+<img src="./resources/3x3_srgb_lossy.png" style="height:525px;image-rendering:crisp-edges;">
diff --git a/tests/wpt/tests/jpegxl/3x3_srgb_lossy.html b/tests/wpt/tests/jpegxl/3x3_srgb_lossy.html
index 3a92b2b7301..83cd8eec351 100644
--- a/tests/wpt/tests/jpegxl/3x3_srgb_lossy.html
+++ b/tests/wpt/tests/jpegxl/3x3_srgb_lossy.html
@@ -1,8 +1,8 @@
<!DOCTYPE html>
<title>JPEG XL test</title>
-<meta name=fuzzy content="0-10;0-9">
+<meta name=fuzzy content="0-10;0-275625">
<link rel="help" href="https://jpeg.org/jpegxl/">
<link rel="match" href="3x3_srgb_lossy-ref.html">
<meta name="assert" content="JPEG XL image is rendered correctly">
-<img src="./resources/3x3_srgb_lossy.jxl">
+<img src="./resources/3x3_srgb_lossy.jxl" style="height:525px;image-rendering:crisp-edges;">
diff --git a/tests/wpt/tests/jpegxl/3x3a_srgb_lossless-ref.html b/tests/wpt/tests/jpegxl/3x3a_srgb_lossless-ref.html
index 75d8ba7452e..1a5ad157df9 100644
--- a/tests/wpt/tests/jpegxl/3x3a_srgb_lossless-ref.html
+++ b/tests/wpt/tests/jpegxl/3x3a_srgb_lossless-ref.html
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<title>JPEG XL test reference</title>
-<img src="./resources/3x3a_srgb_lossless.png">
+<img src="./resources/3x3a_srgb_lossless.png" style="height:525px;image-rendering:crisp-edges;">
diff --git a/tests/wpt/tests/jpegxl/3x3a_srgb_lossless.html b/tests/wpt/tests/jpegxl/3x3a_srgb_lossless.html
index 1de61a5ba27..47c297fd46f 100644
--- a/tests/wpt/tests/jpegxl/3x3a_srgb_lossless.html
+++ b/tests/wpt/tests/jpegxl/3x3a_srgb_lossless.html
@@ -1,8 +1,8 @@
<!DOCTYPE html>
<title>JPEG XL test</title>
-<meta name=fuzzy content="0-4;0-9">
+<meta name=fuzzy content="0-4;0-275625">
<link rel="help" href="https://jpeg.org/jpegxl/">
<link rel="match" href="3x3a_srgb_lossless-ref.html">
<meta name="assert" content="JPEG XL image is rendered correctly">
-<img src="./resources/3x3a_srgb_lossless.jxl">
+<img src="./resources/3x3a_srgb_lossless.jxl" style="height:525px;image-rendering:crisp-edges;">
diff --git a/tests/wpt/tests/jpegxl/3x3a_srgb_lossy-ref.html b/tests/wpt/tests/jpegxl/3x3a_srgb_lossy-ref.html
index 3a1c22e8a27..602c3aa9618 100644
--- a/tests/wpt/tests/jpegxl/3x3a_srgb_lossy-ref.html
+++ b/tests/wpt/tests/jpegxl/3x3a_srgb_lossy-ref.html
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<title>JPEG XL test reference</title>
-<img src="./resources/3x3a_srgb_lossy.png">
+<img src="./resources/3x3a_srgb_lossy.png" style="height:525px;image-rendering:crisp-edges;">
diff --git a/tests/wpt/tests/jpegxl/3x3a_srgb_lossy.html b/tests/wpt/tests/jpegxl/3x3a_srgb_lossy.html
index 59583a11a9a..894b4ddf7bc 100644
--- a/tests/wpt/tests/jpegxl/3x3a_srgb_lossy.html
+++ b/tests/wpt/tests/jpegxl/3x3a_srgb_lossy.html
@@ -1,8 +1,8 @@
<!DOCTYPE html>
<title>JPEG XL test</title>
-<meta name=fuzzy content="0-10;0-9">
+<meta name=fuzzy content="0-10;0-275625">
<link rel="help" href="https://jpeg.org/jpegxl/">
<link rel="match" href="3x3a_srgb_lossy-ref.html">
<meta name="assert" content="JPEG XL image is rendered correctly">
-<img src="./resources/3x3a_srgb_lossy.jxl">
+<img src="./resources/3x3a_srgb_lossy.jxl" style="height:525px;image-rendering:crisp-edges;">
diff --git a/tests/wpt/tests/largest-contentful-paint/resources/largest-contentful-paint-helpers.js b/tests/wpt/tests/largest-contentful-paint/resources/largest-contentful-paint-helpers.js
index 52f7036466c..d206beaef99 100644
--- a/tests/wpt/tests/largest-contentful-paint/resources/largest-contentful-paint-helpers.js
+++ b/tests/wpt/tests/largest-contentful-paint/resources/largest-contentful-paint-helpers.js
@@ -40,20 +40,12 @@ function checkImage(entry, expectedUrl, expectedID, expectedSize, timeLowerBound
if (options.includes('skip')) {
return;
}
- if (options.includes('renderTimeIs0')) {
- assert_equals(entry.renderTime, 0, 'renderTime should be 0');
- assert_between_exclusive(entry.loadTime, timeLowerBound, performance.now(),
- 'loadTime should be between the lower bound and the current time');
- assert_approx_equals(entry.startTime, entry.loadTime, 0.001,
- 'startTime should be equal to renderTime to the precision of 1 millisecond.');
- } else {
- assert_between_exclusive(entry.loadTime, timeLowerBound, entry.renderTime,
- 'loadTime should occur between the lower bound and the renderTime');
- assert_greater_than_equal(performance.now(), entry.renderTime,
- 'renderTime should occur before the entry is dispatched to the observer.');
- assert_approx_equals(entry.startTime, entry.renderTime, 0.001,
- 'startTime should be equal to renderTime to the precision of 1 millisecond.');
- }
+ assert_between_inclusive(entry.loadTime, timeLowerBound, entry.renderTime,
+ 'loadTime should occur between the lower bound and the renderTime');
+ assert_greater_than_equal(performance.now(), entry.renderTime,
+ 'renderTime should occur before the entry is dispatched to the observer.');
+ assert_approx_equals(entry.startTime, entry.renderTime, 0.001,
+ 'startTime should be equal to renderTime to the precision of 1 millisecond.');
if (options.includes('sizeLowerBound')) {
assert_greater_than(entry.size, expectedSize);
} else if (options.includes('approximateSize')) {
@@ -72,9 +64,6 @@ function checkImage(entry, expectedUrl, expectedID, expectedSize, timeLowerBound
assert_greater_than(entry.firstAnimatedFrameTime, 0,
'firstAnimatedFrameTime should be larger than 0');
}
- if (options.includes('animated-zero')) {
- assert_equals(entry.firstAnimatedFrameTime, 0, 'firstAnimatedFrameTime should be 0');
- }
}
const load_and_observe = url => {
diff --git a/tests/wpt/tests/lint.ignore b/tests/wpt/tests/lint.ignore
index cee60ba906e..ee19f061a74 100644
--- a/tests/wpt/tests/lint.ignore
+++ b/tests/wpt/tests/lint.ignore
@@ -802,12 +802,6 @@ TESTDRIVER-IN-UNSUPPORTED-TYPE: file-system-access/local_FileSystemWritableFileS
TESTDRIVER-IN-UNSUPPORTED-TYPE: file-system-access/showDirectoryPicker-manual.https.html
TESTDRIVER-IN-UNSUPPORTED-TYPE: file-system-access/showOpenFilePicker-manual.https.html
TESTDRIVER-IN-UNSUPPORTED-TYPE: file-system-access/showSaveFilePicker-manual.https.html
-TESTDRIVER-IN-UNSUPPORTED-TYPE: fullscreen/crashtests/chrome-1312699.html
-TESTDRIVER-IN-UNSUPPORTED-TYPE: fullscreen/crashtests/content-visibility-crash.html
-TESTDRIVER-IN-UNSUPPORTED-TYPE: fullscreen/rendering/backdrop-iframe.html
-TESTDRIVER-IN-UNSUPPORTED-TYPE: fullscreen/rendering/backdrop-inherit.html
-TESTDRIVER-IN-UNSUPPORTED-TYPE: fullscreen/rendering/backdrop-object.html
-TESTDRIVER-IN-UNSUPPORTED-TYPE: fullscreen/rendering/fullscreen-root-fills-page.html
TESTDRIVER-IN-UNSUPPORTED-TYPE: html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/crashtests/fieldset-middleclick.html
TESTDRIVER-IN-UNSUPPORTED-TYPE: infrastructure/testdriver/click_child_crossorigin.html
TESTDRIVER-IN-UNSUPPORTED-TYPE: infrastructure/testdriver/click_child_testdriver.html
diff --git a/tests/wpt/tests/media-capabilities/decodingInfo.webrtc.html b/tests/wpt/tests/media-capabilities/decodingInfo-webrtc.any.js
index f2839561006..0f3a4fa0f2d 100644
--- a/tests/wpt/tests/media-capabilities/decodingInfo.webrtc.html
+++ b/tests/wpt/tests/media-capabilities/decodingInfo-webrtc.any.js
@@ -1,8 +1,7 @@
-<!DOCTYPE html>
-<title>MediaCapabilities.decodingInfo() for webrtc</title>
-<script src=/resources/testharness.js></script>
-<script src="/resources/testharnessreport.js"></script>
-<script>
+// META: timeout=long
+'use strict';
+
+const isWorkerEnvironment = typeof self.WorkerGlobalScope !== 'undefined';
// Minimal VideoConfiguration that will be allowed per spec. All optional
// properties are missing.
@@ -154,12 +153,18 @@ const validAudioCodecs = (() => {
// exclude these from the test.
const excludeList = [ 'audio/CN', 'audio/telephone-event', 'audio/red' ];
const audioCodecs = [];
- RTCRtpReceiver.getCapabilities("audio")['codecs'].forEach(codec => {
- if (excludeList.indexOf(codec.mimeType) < 0 &&
- audioCodecs.indexOf(codec.mimeType) < 0) {
- audioCodecs.push(codec.mimeType);
- }
- });
+ if (isWorkerEnvironment) {
+ // Test with one specific codec since RTCRtpReceiver is not exposed to workers.
+ audioCodecs.push(minimalAudioConfiguration.contentType);
+ }
+ else {
+ RTCRtpReceiver.getCapabilities("audio")['codecs'].forEach(codec => {
+ if (excludeList.indexOf(codec.mimeType) < 0 &&
+ audioCodecs.indexOf(codec.mimeType) < 0) {
+ audioCodecs.push(codec.mimeType);
+ }
+ });
+ }
return audioCodecs;
})();
@@ -173,7 +178,7 @@ validAudioCodecs.forEach(codec => {
}).then(ability => {
assert_true(ability.supported);
});
-}, "Test that decodingInfo returns supported true for the codec " + codec + " returned by RTCRtpReceiver.getCapabilities()")}
+}, "Test that decodingInfo returns supported true for the codec " + codec + (isWorkerEnvironment ? "" : " returned by RTCRtpReceiver.getCapabilities()"))}
);
const validVideoCodecs = (() => {
@@ -183,17 +188,23 @@ const validVideoCodecs = (() => {
'video/flexfec-03' ];
const videoCodecs = [];
- RTCRtpReceiver.getCapabilities("video")['codecs'].forEach(codec => {
- if (excludeList.indexOf(codec.mimeType) < 0) {
- let mimeType = codec.mimeType;
- if ('sdpFmtpLine' in codec) {
- mimeType += "; " + codec.sdpFmtpLine;
+ if (isWorkerEnvironment) {
+ // Test with one specific codec since RTCRtpReceiver is not exposed to workers.
+ videoCodecs.push(minimalVideoConfiguration.contentType);
+ }
+ else {
+ RTCRtpReceiver.getCapabilities("video")['codecs'].forEach(codec => {
+ if (excludeList.indexOf(codec.mimeType) < 0) {
+ let mimeType = codec.mimeType;
+ if ('sdpFmtpLine' in codec) {
+ mimeType += "; " + codec.sdpFmtpLine;
+ }
+ if (!(mimeType in videoCodecs)) {
+ videoCodecs.push(mimeType);
+ }
}
- if (!(mimeType in videoCodecs)) {
- videoCodecs.push(mimeType);
- }
- }
- });
+ });
+ }
return videoCodecs;
})();
@@ -211,7 +222,6 @@ validVideoCodecs.forEach(codec => {
}).then(ability => {
assert_true(ability.supported);
});
-}, "Test that decodingInfo returns supported true for the codec " + codec + " returned by RTCRtpReceiver.getCapabilities()")}
+}, "Test that decodingInfo returns supported true for the codec " + codec + (isWorkerEnvironment ? "" : " returned by RTCRtpReceiver.getCapabilities()"))}
);
-</script>
diff --git a/tests/wpt/tests/media-capabilities/encodingInfo.webrtc.html b/tests/wpt/tests/media-capabilities/encodingInfo-webrtc.any.js
index 414b7944f61..635801c9f1a 100644
--- a/tests/wpt/tests/media-capabilities/encodingInfo.webrtc.html
+++ b/tests/wpt/tests/media-capabilities/encodingInfo-webrtc.any.js
@@ -1,8 +1,7 @@
-<!DOCTYPE html>
-<title>MediaCapabilities.encodingInfo() for webrtc</title>
-<script src=/resources/testharness.js></script>
-<script src="/resources/testharnessreport.js"></script>
-<script>
+// META: timeout=long
+'use strict';
+
+const isWorkerEnvironment = typeof self.WorkerGlobalScope !== 'undefined';
// Minimal VideoConfiguration that will be allowed per spec. All optional
// properties are missing.
@@ -154,12 +153,19 @@ const validAudioCodecs = (() => {
// exclude these from the test.
const excludeList = [ 'audio/CN', 'audio/telephone-event', 'audio/red' ];
const audioCodecs = [];
- RTCRtpSender.getCapabilities("audio")['codecs'].forEach(codec => {
- if (excludeList.indexOf(codec.mimeType) < 0 &&
- audioCodecs.indexOf(codec.mimeType) < 0) {
- audioCodecs.push(codec.mimeType);
- }
- });
+
+ if (isWorkerEnvironment) {
+ // Test with one specific codec since RTCRtpSender is not exposed to workers.
+ audioCodecs.push(minimalAudioConfiguration.contentType);
+ }
+ else {
+ RTCRtpSender.getCapabilities("audio")['codecs'].forEach(codec => {
+ if (excludeList.indexOf(codec.mimeType) < 0 &&
+ audioCodecs.indexOf(codec.mimeType) < 0) {
+ audioCodecs.push(codec.mimeType);
+ }
+ });
+ }
return audioCodecs;
})();
@@ -173,7 +179,7 @@ validAudioCodecs.forEach(codec => {
}).then(ability => {
assert_true(ability.supported);
});
-}, "Test that encodingInfo returns supported true for the codec " + codec + " returned by RTCRtpSender.getCapabilities()")}
+}, "Test that encodingInfo returns supported true for the codec " + codec + (isWorkerEnvironment ? "" : " returned by RTCRtpSender.getCapabilities()"))}
);
const validVideoCodecs = (() => {
@@ -183,17 +189,23 @@ const validVideoCodecs = (() => {
'video/flexfec-03' ];
const videoCodecs = [];
- RTCRtpSender.getCapabilities("video")['codecs'].forEach(codec => {
- if (excludeList.indexOf(codec.mimeType) < 0) {
- let mimeType = codec.mimeType;
- if ('sdpFmtpLine' in codec) {
- mimeType += "; " + codec.sdpFmtpLine;
- }
- if (!(mimeType in videoCodecs)) {
- videoCodecs.push(mimeType);
+ if (isWorkerEnvironment) {
+ // Test with one specific codec since RTCRtpSender is not exposed to workers.
+ videoCodecs.push(minimalVideoConfiguration.contentType);
+ }
+ else {
+ RTCRtpSender.getCapabilities("video")['codecs'].forEach(codec => {
+ if (excludeList.indexOf(codec.mimeType) < 0) {
+ let mimeType = codec.mimeType;
+ if ('sdpFmtpLine' in codec) {
+ mimeType += "; " + codec.sdpFmtpLine;
+ }
+ if (!(mimeType in videoCodecs)) {
+ videoCodecs.push(mimeType);
+ }
}
- }
- });
+ });
+ }
return videoCodecs;
})();
@@ -211,7 +223,6 @@ validVideoCodecs.forEach(codec => {
}).then(ability => {
assert_true(ability.supported);
});
-}, "Test that encodingInfo returns supported true for the codec " + codec + " returned by RTCRtpSender.getCapabilities()")}
+}, "Test that encodingInfo returns supported true for the codec " + codec + (isWorkerEnvironment ? "" : " returned by RTCRtpSender.getCapabilities()"))}
);
-</script>
diff --git a/tests/wpt/tests/navigation-api/focus-reset/resources/helpers.mjs b/tests/wpt/tests/navigation-api/focus-reset/resources/helpers.mjs
index 0a8a0439e1c..fd611e80629 100644
--- a/tests/wpt/tests/navigation-api/focus-reset/resources/helpers.mjs
+++ b/tests/wpt/tests/navigation-api/focus-reset/resources/helpers.mjs
@@ -10,6 +10,7 @@ export function testFocusWasReset(setupFunc, description) {
const button = document.body.appendChild(document.createElement("button"));
const button2 = document.body.appendChild(document.createElement("button"));
+ button.tabIndex = 0;
button2.tabIndex = 0;
t.add_cleanup(() => {
button.remove();
diff --git a/tests/wpt/tests/paint-timing/with-first-paint/paint-visited.html b/tests/wpt/tests/paint-timing/with-first-paint/paint-visited.html
index c02ea240525..eb61d51eeac 100644
--- a/tests/wpt/tests/paint-timing/with-first-paint/paint-visited.html
+++ b/tests/wpt/tests/paint-timing/with-first-paint/paint-visited.html
@@ -28,7 +28,7 @@ async_test(function(t) {
if (bufferedEntries.length < 2) {
t.step_timeout(function() {
testPaintEntries();
- }, 20);
+ }, 100);
return;
}
t.step(function() {
diff --git a/tests/wpt/tests/permissions-policy/experimental-features/focus-without-user-activation-default-permissions-policy.tentative.https.sub.html b/tests/wpt/tests/permissions-policy/experimental-features/focus-without-user-activation-default-permissions-policy.tentative.https.sub.html
new file mode 100644
index 00000000000..9ca1426040c
--- /dev/null
+++ b/tests/wpt/tests/permissions-policy/experimental-features/focus-without-user-activation-default-permissions-policy.tentative.https.sub.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<title>Focus without user activation container policy test</title>
+
+<body>
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+ <script src=/permissions-policy/resources/permissions-policy.js></script>
+ <script>
+ 'use strict';
+ var same_origin_src = '/permissions-policy/experimental-features/resources/permissions-policy-focus-without-user-activation.html';
+ var cross_origin_src = 'https://{{domains[www]}}:{{ports[https][0]}}' +
+ same_origin_src;
+ const header = 'Default "focus-without-user-activation" permissions policy [self]';
+ async_test(t => {
+ test_feature_availability(
+ 'focus-without-user-activation', t, same_origin_src, expect_feature_available_default);
+ }, header + " allows same-origin iframes.");
+
+ async_test(t => {
+ test_feature_availability(
+ 'focus-without-user-activation', t, cross_origin_src, expect_feature_unavailable_default);
+ }, header + " doesn't allow cross-origin iframes.");
+ </script>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/permissions-policy/experimental-features/resources/permissions-policy-focus-without-user-activation.html b/tests/wpt/tests/permissions-policy/experimental-features/resources/permissions-policy-focus-without-user-activation.html
new file mode 100644
index 00000000000..c802d6f0699
--- /dev/null
+++ b/tests/wpt/tests/permissions-policy/experimental-features/resources/permissions-policy-focus-without-user-activation.html
@@ -0,0 +1,11 @@
+<!doctype html>
+<script>
+ 'use strict';
+ function post_result(enabled) {
+ parent.postMessage({ type: 'availability-result', enabled }, "*");
+ }
+
+ window.onload = function () {
+ post_result(document.featurePolicy.allowedFeatures().includes("focus-without-user-activation"));
+ }
+</script> \ No newline at end of file
diff --git a/tests/wpt/tests/pointerevents/pointerevent_sequence_at_implicit_release_on_click.html b/tests/wpt/tests/pointerevents/pointerevent_sequence_at_implicit_release_on_click.html
index bfcc8ad54a8..1895765cd55 100644
--- a/tests/wpt/tests/pointerevents/pointerevent_sequence_at_implicit_release_on_click.html
+++ b/tests/wpt/tests/pointerevents/pointerevent_sequence_at_implicit_release_on_click.html
@@ -29,16 +29,24 @@
}
function run() {
- var test_pointer_event = setup_pointerevent_test("Event sequence at implicit release on click", [inputSource]);
+ var test_pointer_event = setup_pointerevent_test("Boundary events are emitted after lostpointercapture", [inputSource]);
+ var no_extra_event_test = async_test("No extra events are emitted");
on_event(document.getElementById("done"), "click", function() {
+ var expected_events = "pointerup, lostpointercapture, pointerout, pointerleave";
test_pointer_event.step(function () {
- var expected_events = "pointerup, lostpointercapture, pointerout, pointerleave";
- assert_equals(event_log.join(", "), expected_events);
+ assert_true(event_log.join(", ").startsWith(expected_events));
});
+
// Make sure the test finishes after all the input actions are completed.
actions_promise.then( () => {
+ let extra_events = event_log.join(", ").replace(new RegExp(`^${expected_events}(, )?`), "");
test_pointer_event.done();
+
+ no_extra_event_test.step(() => {
+ assert_equals(extra_events, "");
+ });
+ no_extra_event_test.done();
});
});
diff --git a/tests/wpt/tests/pointerevents/pointerevent_styles.css b/tests/wpt/tests/pointerevents/pointerevent_styles.css
index 1ee3b0b3965..f5ed4828f69 100644
--- a/tests/wpt/tests/pointerevents/pointerevent_styles.css
+++ b/tests/wpt/tests/pointerevents/pointerevent_styles.css
@@ -83,7 +83,7 @@ color: white;
div {
margin: 0em;
-padding: 2em;
+padding: 1.2em;
}
#complete-notice {
diff --git a/tests/wpt/tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html b/tests/wpt/tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html
index d927ed94b32..828864602c4 100644
--- a/tests/wpt/tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html
+++ b/tests/wpt/tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html
@@ -24,26 +24,16 @@
<body>
<h1>Pointer Events: effective touch-action is "none" when parent has "none"
and target has "auto"</h1>
- <h4 id="desc">
- Try to scroll DOWN then RIGHT from inside blue rectangle.
- Tap Complete button under the rectangle when done.
- Expectation: no panning
- </h4>
- <p>Note: this test is for touch-devices only</p>
<div class="scroller" id="target0">
<div id="scrollTarget">
Try to scroll DOWN then RIGHT from here.
</div>
</div>
<input type="button" id="btnComplete" value="Complete test">
- <h1>behavior: none</h1>
- <div id="complete-notice">
- <p>The following pointer types were detected:
- <span id="pointertype-log"></span>.</p>
- </div>
<div id="log"></div>
</body>
<script type='text/javascript'>
+ "use strict";
window.onload = async () => {
const target0 = document.getElementById("target0");
const btnComplete = document.getElementById("btnComplete");
@@ -62,9 +52,6 @@
target0.addEventListener("scroll",
() => scroll_received = true);
- let detected_pointertypes = {};
- add_completion_callback(showPointerTypes);
-
promise_test(async () => {
const button_complete_click = getEvent("click", btnComplete);
@@ -89,8 +76,6 @@
"expected scrollLeft 0 in the end of the test");
assert_equals(target0.scrollTop, 0,
"expected scrollTop 0 in the end of the test");
-
- updateDescriptionComplete();
}, "touch-action attribute test");
};
</script>
diff --git a/tests/wpt/tests/pointerevents/pointerevent_touch-action-modified_touch.html b/tests/wpt/tests/pointerevents/pointerevent_touch-action-modified_touch.html
index a91022504a7..9f0abd68370 100644
--- a/tests/wpt/tests/pointerevents/pointerevent_touch-action-modified_touch.html
+++ b/tests/wpt/tests/pointerevents/pointerevent_touch-action-modified_touch.html
@@ -24,10 +24,6 @@
</head>
<body>
<h1>Deleting touch-action elem after pointerdown has no effect</h1>
- <h4 id="desc">
- Try to scroll up/down starting at the green element. Expectation: the
- green element would vanish immediately and the content won't scroll.
- </h4>
<p>Note: this test is for touch-devices only</p>
<div class="box"></div>
<div class="box"></div>
@@ -36,14 +32,14 @@
<div class="box"></div>
</body>
<script>
+ "use strict";
let target = document.getElementById("target");
let pointercancel_received = false;
- document.body.addEventListener("pointerdown", () => target.parentElement.removeChild(target));
- document.body.addEventListener("pointercancel", () => pointercancel_received = true);
-
- let detected_pointertypes = {};
- add_completion_callback(showPointerTypes);
+ document.body.addEventListener("pointerdown",
+ () => target.parentElement.removeChild(target));
+ document.body.addEventListener("pointercancel",
+ () => pointercancel_received = true);
promise_test(async () => {
let pointerup_event = getEvent("pointerup", document.body);
@@ -52,9 +48,7 @@
await pointerup_event;
assert_false(pointercancel_received,
- "a pointercancel event is unexpected because there should be no scrolling");
-
- updateDescriptionComplete();
- }, "Deleting touch-action elem after pointerdown");
+ "a pointercancel event is unexpected");
+ }, "No scrolling after deleting touch-action:none elem after pointerdown");
</script>
</html>
diff --git a/tests/wpt/tests/push-api/supported-encodings.https.any.js b/tests/wpt/tests/push-api/supported-encodings.https.any.js
new file mode 100644
index 00000000000..45b5ed1cba4
--- /dev/null
+++ b/tests/wpt/tests/push-api/supported-encodings.https.any.js
@@ -0,0 +1,26 @@
+// META: global=window,worker
+
+"use strict"
+// (for FrozenArray assign test)
+
+test(() => {
+ assert_true(
+ PushManager.supportedContentEncodings.includes("aes128gcm"),
+ "PushManager.supportedContentEncodings must include aes128gcm"
+ );
+}, "aes128gcm must be supported");
+
+test(() => {
+ assert_throws_js(
+ TypeError,
+ () => PushManager.supportedContentEncodings[0] = "aes1024gcm",
+ "supportedContentEncodings must be frozen"
+ );
+
+ // Intentionally not using assert_array_equals to check same-object
+ assert_equals(
+ PushManager.supportedContentEncodings,
+ PushManager.supportedContentEncodings,
+ "supportedContentEncodings must be cached"
+ );
+}, "supportedContentEncodings must be FrozenArray")
diff --git a/tests/wpt/tests/resize-observer/resize-loop-cancel-error-notification-console-manual.tentative.html b/tests/wpt/tests/resize-observer/resize-loop-cancel-error-notification-console-manual.tentative.html
new file mode 100644
index 00000000000..2c0fe2c0f28
--- /dev/null
+++ b/tests/wpt/tests/resize-observer/resize-loop-cancel-error-notification-console-manual.tentative.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<title>ResizeObserver - Console Logging Manual Test</title>
+<meta name="assert" content="Canceled resize loop error notifications should not appear in the console.">
+<link rel="help" href="https://www.w3.org/TR/resize-observer/#deliver-resize-loop-error-notification">
+
+<p>Open the console inside the developer tools. It should contain no entries about ResizeObserver.</p>
+
+<div id="resizer" style="width: 100px; height: 100px;"></div>
+<script>
+ // Cancel all window error events.
+ window.onerror = () => true;
+
+ const observer = new ResizeObserver(entries => {
+ resizer.style.width = '200px';
+ });
+ observer.observe(resizer);
+</script>
diff --git a/tests/wpt/tests/resize-observer/resize-loop-error-notification-console-manual.tentative.html b/tests/wpt/tests/resize-observer/resize-loop-error-notification-console-manual.tentative.html
new file mode 100644
index 00000000000..ef7dba83866
--- /dev/null
+++ b/tests/wpt/tests/resize-observer/resize-loop-error-notification-console-manual.tentative.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<title>ResizeObserver - Console Logging Manual Test</title>
+<meta name="assert" content="The resize loop error notification should appear in the console.">
+<link rel="help" href="https://www.w3.org/TR/resize-observer/#deliver-resize-loop-error-notification">
+
+<p>Open the console inside the developer tools. It should contain one entry with contents:</p>
+<p><code>ResizeObserver loop completed with undelivered notifications.</code></p>
+
+<div id="resizer" style="width: 100px; height: 100px;"></div>
+<script>
+ const observer = new ResizeObserver(entries => {
+ resizer.style.width = '200px';
+ });
+ observer.observe(resizer);
+</script>
diff --git a/tests/wpt/tests/resources/check-layout.js b/tests/wpt/tests/resources/check-layout.js
deleted file mode 100644
index 8634481497d..00000000000
--- a/tests/wpt/tests/resources/check-layout.js
+++ /dev/null
@@ -1,245 +0,0 @@
-(function() {
-
-function insertAfter(nodeToAdd, referenceNode)
-{
- if (referenceNode == document.body) {
- document.body.appendChild(nodeToAdd);
- return;
- }
-
- if (referenceNode.nextSibling)
- referenceNode.parentNode.insertBefore(nodeToAdd, referenceNode.nextSibling);
- else
- referenceNode.parentNode.appendChild(nodeToAdd);
-}
-
-function positionedAncestor(node)
-{
- var ancestor = node.parentNode;
- while (getComputedStyle(ancestor).position == 'static')
- ancestor = ancestor.parentNode;
- return ancestor;
-}
-
-function checkSubtreeExpectedValues(parent, failures)
-{
- var checkedLayout = checkExpectedValues(parent, failures);
- Array.prototype.forEach.call(parent.childNodes, function(node) {
- checkedLayout |= checkSubtreeExpectedValues(node, failures);
- });
- return checkedLayout;
-}
-
-function checkAttribute(output, node, attribute)
-{
- var result = node.getAttribute && node.getAttribute(attribute);
- output.checked |= !!result;
- return result;
-}
-
-function checkExpectedValues(node, failures)
-{
- var output = { checked: false };
- var expectedWidth = checkAttribute(output, node, "data-expected-width");
- if (expectedWidth) {
- if (isNaN(expectedWidth) || Math.abs(node.offsetWidth - expectedWidth) >= 1)
- failures.push("Expected " + expectedWidth + " for width, but got " + node.offsetWidth + ". ");
- }
-
- var expectedHeight = checkAttribute(output, node, "data-expected-height");
- if (expectedHeight) {
- if (isNaN(expectedHeight) || Math.abs(node.offsetHeight - expectedHeight) >= 1)
- failures.push("Expected " + expectedHeight + " for height, but got " + node.offsetHeight + ". ");
- }
-
- var expectedOffset = checkAttribute(output, node, "data-offset-x");
- if (expectedOffset) {
- if (isNaN(expectedOffset) || Math.abs(node.offsetLeft - expectedOffset) >= 1)
- failures.push("Expected " + expectedOffset + " for offsetLeft, but got " + node.offsetLeft + ". ");
- }
-
- var expectedOffset = checkAttribute(output, node, "data-offset-y");
- if (expectedOffset) {
- if (isNaN(expectedOffset) || Math.abs(node.offsetTop - expectedOffset) >= 1)
- failures.push("Expected " + expectedOffset + " for offsetTop, but got " + node.offsetTop + ". ");
- }
-
- var expectedOffset = checkAttribute(output, node, "data-positioned-offset-x");
- if (expectedOffset) {
- var actualOffset = node.getBoundingClientRect().left - positionedAncestor(node).getBoundingClientRect().left;
- if (isNaN(expectedOffset) || Math.abs(actualOffset - expectedOffset) >= 1)
- failures.push("Expected " + expectedOffset + " for getBoundingClientRect().left offset, but got " + actualOffset + ". ");
- }
-
- var expectedOffset = checkAttribute(output, node, "data-positioned-offset-y");
- if (expectedOffset) {
- var actualOffset = node.getBoundingClientRect().top - positionedAncestor(node).getBoundingClientRect().top;
- if (isNaN(expectedOffset) || Math.abs(actualOffset - expectedOffset) >= 1)
- failures.push("Expected " + expectedOffset + " for getBoundingClientRect().top offset, but got " + actualOffset + ". ");
- }
-
- var expectedWidth = checkAttribute(output, node, "data-expected-client-width");
- if (expectedWidth) {
- if (isNaN(expectedWidth) || Math.abs(node.clientWidth - expectedWidth) >= 1)
- failures.push("Expected " + expectedWidth + " for clientWidth, but got " + node.clientWidth + ". ");
- }
-
- var expectedHeight = checkAttribute(output, node, "data-expected-client-height");
- if (expectedHeight) {
- if (isNaN(expectedHeight) || Math.abs(node.clientHeight - expectedHeight) >= 1)
- failures.push("Expected " + expectedHeight + " for clientHeight, but got " + node.clientHeight + ". ");
- }
-
- var expectedWidth = checkAttribute(output, node, "data-expected-scroll-width");
- if (expectedWidth) {
- if (isNaN(expectedWidth) || Math.abs(node.scrollWidth - expectedWidth) >= 1)
- failures.push("Expected " + expectedWidth + " for scrollWidth, but got " + node.scrollWidth + ". ");
- }
-
- var expectedHeight = checkAttribute(output, node, "data-expected-scroll-height");
- if (expectedHeight) {
- if (isNaN(expectedHeight) || Math.abs(node.scrollHeight - expectedHeight) >= 1)
- failures.push("Expected " + expectedHeight + " for scrollHeight, but got " + node.scrollHeight + ". ");
- }
-
- var expectedOffset = checkAttribute(output, node, "data-total-x");
- if (expectedOffset) {
- var totalLeft = node.clientLeft + node.offsetLeft;
- if (isNaN(expectedOffset) || Math.abs(totalLeft - expectedOffset) >= 1)
- failures.push("Expected " + expectedOffset + " for clientLeft+offsetLeft, but got " + totalLeft + ", clientLeft: " + node.clientLeft + ", offsetLeft: " + node.offsetLeft + ". ");
- }
-
- var expectedOffset = checkAttribute(output, node, "data-total-y");
- if (expectedOffset) {
- var totalTop = node.clientTop + node.offsetTop;
- if (isNaN(expectedOffset) || Math.abs(totalTop - expectedOffset) >= 1)
- failures.push("Expected " + expectedOffset + " for clientTop+offsetTop, but got " + totalTop + ", clientTop: " + node.clientTop + ", + offsetTop: " + node.offsetTop + ". ");
- }
-
- var expectedDisplay = checkAttribute(output, node, "data-expected-display");
- if (expectedDisplay) {
- var actualDisplay = getComputedStyle(node).display;
- if (actualDisplay != expectedDisplay)
- failures.push("Expected " + expectedDisplay + " for display, but got " + actualDisplay + ". ");
- }
-
- var expectedPaddingTop = checkAttribute(output, node, "data-expected-padding-top");
- if (expectedPaddingTop) {
- var actualPaddingTop = getComputedStyle(node).paddingTop;
- // Trim the unit "px" from the output.
- actualPaddingTop = actualPaddingTop.substring(0, actualPaddingTop.length - 2);
- if (actualPaddingTop != expectedPaddingTop)
- failures.push("Expected " + expectedPaddingTop + " for padding-top, but got " + actualPaddingTop + ". ");
- }
-
- var expectedPaddingBottom = checkAttribute(output, node, "data-expected-padding-bottom");
- if (expectedPaddingBottom) {
- var actualPaddingBottom = getComputedStyle(node).paddingBottom;
- // Trim the unit "px" from the output.
- actualPaddingBottom = actualPaddingBottom.substring(0, actualPaddingBottom.length - 2);
- if (actualPaddingBottom != expectedPaddingBottom)
- failures.push("Expected " + expectedPaddingBottom + " for padding-bottom, but got " + actualPaddingBottom + ". ");
- }
-
- var expectedPaddingLeft = checkAttribute(output, node, "data-expected-padding-left");
- if (expectedPaddingLeft) {
- var actualPaddingLeft = getComputedStyle(node).paddingLeft;
- // Trim the unit "px" from the output.
- actualPaddingLeft = actualPaddingLeft.substring(0, actualPaddingLeft.length - 2);
- if (actualPaddingLeft != expectedPaddingLeft)
- failures.push("Expected " + expectedPaddingLeft + " for padding-left, but got " + actualPaddingLeft + ". ");
- }
-
- var expectedPaddingRight = checkAttribute(output, node, "data-expected-padding-right");
- if (expectedPaddingRight) {
- var actualPaddingRight = getComputedStyle(node).paddingRight;
- // Trim the unit "px" from the output.
- actualPaddingRight = actualPaddingRight.substring(0, actualPaddingRight.length - 2);
- if (actualPaddingRight != expectedPaddingRight)
- failures.push("Expected " + expectedPaddingRight + " for padding-right, but got " + actualPaddingRight + ". ");
- }
-
- var expectedMarginTop = checkAttribute(output, node, "data-expected-margin-top");
- if (expectedMarginTop) {
- var actualMarginTop = getComputedStyle(node).marginTop;
- // Trim the unit "px" from the output.
- actualMarginTop = actualMarginTop.substring(0, actualMarginTop.length - 2);
- if (actualMarginTop != expectedMarginTop)
- failures.push("Expected " + expectedMarginTop + " for margin-top, but got " + actualMarginTop + ". ");
- }
-
- var expectedMarginBottom = checkAttribute(output, node, "data-expected-margin-bottom");
- if (expectedMarginBottom) {
- var actualMarginBottom = getComputedStyle(node).marginBottom;
- // Trim the unit "px" from the output.
- actualMarginBottom = actualMarginBottom.substring(0, actualMarginBottom.length - 2);
- if (actualMarginBottom != expectedMarginBottom)
- failures.push("Expected " + expectedMarginBottom + " for margin-bottom, but got " + actualMarginBottom + ". ");
- }
-
- var expectedMarginLeft = checkAttribute(output, node, "data-expected-margin-left");
- if (expectedMarginLeft) {
- var actualMarginLeft = getComputedStyle(node).marginLeft;
- // Trim the unit "px" from the output.
- actualMarginLeft = actualMarginLeft.substring(0, actualMarginLeft.length - 2);
- if (actualMarginLeft != expectedMarginLeft)
- failures.push("Expected " + expectedMarginLeft + " for margin-left, but got " + actualMarginLeft + ". ");
- }
-
- var expectedMarginRight = checkAttribute(output, node, "data-expected-margin-right");
- if (expectedMarginRight) {
- var actualMarginRight = getComputedStyle(node).marginRight;
- // Trim the unit "px" from the output.
- actualMarginRight = actualMarginRight.substring(0, actualMarginRight.length - 2);
- if (actualMarginRight != expectedMarginRight)
- failures.push("Expected " + expectedMarginRight + " for margin-right, but got " + actualMarginRight + ". ");
- }
-
- return output.checked;
-}
-
-window.checkLayout = function(selectorList, outputContainer)
-{
- var result = true;
- if (!selectorList) {
- document.body.appendChild(document.createTextNode("You must provide a CSS selector of nodes to check."));
- return;
- }
- var nodes = document.querySelectorAll(selectorList);
- nodes = Array.prototype.slice.call(nodes);
- nodes.reverse();
- var checkedLayout = false;
- Array.prototype.forEach.call(nodes, function(node) {
- var failures = [];
- checkedLayout |= checkExpectedValues(node.parentNode, failures);
- checkedLayout |= checkSubtreeExpectedValues(node, failures);
-
- var container = node.parentNode.className == 'container' ? node.parentNode : node;
-
- var pre = document.createElement('pre');
- if (failures.length) {
- pre.className = 'FAIL';
- result = false;
- }
- pre.appendChild(document.createTextNode(failures.length ? "FAIL:\n" + failures.join('\n') + '\n\n' + container.outerHTML : "PASS"));
-
- var referenceNode = container;
- if (outputContainer) {
- if (!outputContainer.lastChild) {
- // Inserting a text node so we have something to insertAfter.
- outputContainer.textContent = " ";
- }
- referenceNode = outputContainer.lastChild;
- }
- insertAfter(pre, referenceNode);
- });
-
- if (!checkedLayout) {
- document.body.appendChild(document.createTextNode("FAIL: No valid data-* attributes found in selector list : " + selectorList));
- return false;
- }
-
- return result;
-}
-
-})();
diff --git a/tests/wpt/tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html b/tests/wpt/tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html
index ceb9a2ca3ff..3a2b3571147 100644
--- a/tests/wpt/tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html
+++ b/tests/wpt/tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html
@@ -62,8 +62,8 @@ window.onload = function() {
</script>
<style>
.scroll-section {
- /* 1000px margin on top and bottom so only one section can be in view. */
- margin: 1000px 0px;
+ /* 100vh margin on top and bottom so only one section can be in view. */
+ margin: 100vh 0px;
}
#hidden {
visibility: hidden;
diff --git a/tests/wpt/tests/shared-storage-selecturl-limit/resources/select-url-saved-query-multi-frame-inner.https.sub.html b/tests/wpt/tests/shared-storage-selecturl-limit/resources/select-url-saved-query-multi-frame-inner.https.sub.html
new file mode 100644
index 00000000000..549eec0fbfb
--- /dev/null
+++ b/tests/wpt/tests/shared-storage-selecturl-limit/resources/select-url-saved-query-multi-frame-inner.https.sub.html
@@ -0,0 +1,98 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/shared-storage-selecturl-limit/resources/utils.js"></script>
+<script src="/shared-storage/resources/util.js"></script>
+<script src="/fenced-frame/resources/utils.js"></script>
+
+<body>
+<script>
+'use strict';
+
+async function init() {
+ const url = new URL(location.href);
+ const queryName = url.searchParams.get("query") ?
+ url.searchParams.get("query") : "";
+ const mockResult = url.searchParams.get("mockresult") ?
+ parseInt(url.searchParams.get("mockresult")) : 1;
+ const innerKey = token();
+ let parentOrOpener = window.opener || window.parent;
+
+ // Note that we have set the site page bit limit to 3 and the overall page
+ // bit limit to 6. A single saved query with 8 URLs (i.e. log2(8) = 3 bits)
+ // will be permitted by a site's page budget, plus re-uses of the saved
+ // query. Two saved queries with 8 URLs (and their re-uses) will be
+ // permitted by the overall page budget.
+ const numUrls = 8;
+ const urls = generateUrls(numUrls, "/shared-storage/resources/frame",
+ [innerKey]);
+
+ await sharedStorage.worklet.addModule(
+ "/shared-storage/resources/simple-module.js");
+
+ function processSavedQuery(optionalData = {}) {
+ return sharedStorage.selectURL(
+ "test-url-selection-operation", urls,
+ {data: optionalData, keepAlive: true, resolveToConfig: true,
+ savedQuery: queryName});
+ }
+
+ const expected_result = `frame${mockResult}_loaded`;
+ const message = {selectURLStatus: `success`, origin: `${location.origin}`,
+ query: queryName, mockResultIndex: mockResult};
+
+ let config0 = await processSavedQuery({'mockResult': mockResult});
+ assert_true(config0 instanceof FencedFrameConfig);
+ attachFencedFrame(config0, 'opaque-ads');
+ try {
+ const result0 = await nextValueFromServer(innerKey);
+ assert_equals(result0, expected_result,
+ `for origin ${location.origin} when budget should remain;`);
+ } catch (error) {
+ message.selectURLStatus = `${error}`;
+ parentOrOpener.postMessage(message, "*");
+ return;
+ }
+
+ // Either the per-site per-pageload bit limit or the overall per-pageload
+ // bit limit for `selectURL()` has been reached. The next non-saved-query
+ // call should return the default URL.
+ let config1 = await sharedStorage.selectURL(
+ "test-url-selection-operation", urls,
+ {data: {'mockResult': mockResult}, keepAlive: true,
+ resolveToConfig: true});
+ assert_true(config1 instanceof FencedFrameConfig);
+ attachFencedFrame(config1, 'opaque-ads');
+ try {
+ const result1 = await nextValueFromServer(innerKey);
+ assert_equals(result1, "frame0_loaded",
+ `for origin ${location.origin} when budget should be exhausted;`);
+ } catch (error) {
+ message.selectURLStatus = `${error}`;
+ parentOrOpener.postMessage(message, "*");
+ return;
+ }
+
+ // Query should be saved and not cost any budget.
+ let config2 = await processSavedQuery();
+ assert_true(config2 instanceof FencedFrameConfig);
+ attachFencedFrame(config2, 'opaque-ads');
+ try {
+ const result2 = await nextValueFromServer(innerKey);
+ assert_equals(result2, expected_result,
+ `for origin ${location.origin} when budget should remain`
+ + ` for saved query ${queryName}.`);
+ } catch (error) {
+ message.selectURLStatus = `${error}`;
+ parentOrOpener.postMessage(message, "*");
+ return;
+ }
+
+ // No errors were caught, so this portion of the test succeeded.
+ parentOrOpener.postMessage(message, "*");
+}
+
+init();
+</script>
+</body>
diff --git a/tests/wpt/tests/shared-storage-selecturl-limit/select-url-saved-query-async.tentative.https.sub.html b/tests/wpt/tests/shared-storage-selecturl-limit/select-url-saved-query-async.tentative.https.sub.html
new file mode 100644
index 00000000000..f0d35f658b1
--- /dev/null
+++ b/tests/wpt/tests/shared-storage-selecturl-limit/select-url-saved-query-async.tentative.https.sub.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/shared-storage-selecturl-limit/resources/utils.js"></script>
+<script src="/shared-storage/resources/util.js"></script>
+<script src="/fenced-frame/resources/utils.js"></script>
+
+<body>
+<script>
+'use strict';
+
+promise_test(async () => {
+ const ancestorKey = token();
+
+ // Note that we have set the site page bit limit to 3 and the overall page
+ // bit limit to 6. A single saved query with 8 URLs (i.e. log2(8) = 3 bits)
+ // will be permitted by the site's page budget, plus re-uses of the saved
+ // query.
+ const numUrls = 8;
+ const urls = generateUrls(numUrls, "/shared-storage/resources/frame",
+ [ancestorKey]);
+
+ await sharedStorage.worklet.addModule(
+ "/shared-storage/resources/simple-module.js");
+
+ function processSavedQuery() {
+ return sharedStorage.selectURL(
+ "test-slow-url-selection-operation", urls,
+ {data: {'mockResult': 1}, keepAlive: true, resolveToConfig: true,
+ savedQuery: "query"});
+ }
+
+ // Start initial query.
+ const savedQueryPromise = processSavedQuery();
+
+ // This query will be received before the initial query finishes processing.
+ let config0 = await processSavedQuery();
+ assert_true(config0 instanceof FencedFrameConfig);
+ attachFencedFrame(config0, 'opaque-ads');
+ const result0 = await nextValueFromServer(ancestorKey);
+ assert_equals(result0, "frame1_loaded", 'when budget should remain;');
+
+ // Wait for the initial query to finish processing.
+ let config1 = await savedQueryPromise;
+ assert_true(config1 instanceof FencedFrameConfig);
+ attachFencedFrame(config1, 'opaque-ads');
+ const result1 = await nextValueFromServer(ancestorKey);
+ assert_equals(result1, "frame1_loaded", 'when budget should not be charged;');
+
+ // The per-site per-pageload bit limit for `selectURL()` has been
+ // reached. The next call that doesn't reuse a query should return the
+ // default URL.
+ let config2 = await sharedStorage.selectURL(
+ "test-url-selection-operation", urls,
+ {data: {'mockResult': 1}, keepAlive: true, resolveToConfig: true});
+ assert_true(config2 instanceof FencedFrameConfig);
+ attachFencedFrame(config2, 'opaque-ads');
+ const result2 = await nextValueFromServer(ancestorKey);
+ assert_equals(result2, "frame0_loaded", 'when budget should be exhausted;');
+
+ // Reuse the saved query after processing is finished.
+ let config3 = await processSavedQuery();;
+ assert_true(config3 instanceof FencedFrameConfig);
+ attachFencedFrame(config3, 'opaque-ads');
+ const result3 = await nextValueFromServer(ancestorKey);
+ assert_equals(result3, "frame1_loaded",
+ 'when budget still should not be charged;');
+}, 'selectURL() saved query does not deduct budget on re-use, even if the '
+ + 'initial query has not yet resolved.');
+</script>
+</body>
diff --git a/tests/wpt/tests/shared-storage-selecturl-limit/select-url-saved-query-different-operation.tentative.https.sub.html b/tests/wpt/tests/shared-storage-selecturl-limit/select-url-saved-query-different-operation.tentative.https.sub.html
new file mode 100644
index 00000000000..aec53bfccfe
--- /dev/null
+++ b/tests/wpt/tests/shared-storage-selecturl-limit/select-url-saved-query-different-operation.tentative.https.sub.html
@@ -0,0 +1,50 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/shared-storage-selecturl-limit/resources/utils.js"></script>
+<script src="/shared-storage/resources/util.js"></script>
+<script src="/fenced-frame/resources/utils.js"></script>
+
+<body>
+<script>
+'use strict';
+
+promise_test(async () => {
+ const ancestorKey = token();
+
+ // Note that we have set the site page bit limit to 3 and the overall page
+ // bit limit to 6. A single saved query with 8 URLs (i.e. log2(8) = 3 bits)
+ // will be permitted by the site's page budget, plus re-uses of the saved
+ // query.
+ const numUrls = 8;
+ const urls = generateUrls(numUrls, "/shared-storage/resources/frame",
+ [ancestorKey]);
+
+ await sharedStorage.worklet.addModule(
+ "/shared-storage/resources/simple-module.js");
+
+ let config = await sharedStorage.selectURL(
+ "test-url-selection-operation", urls,
+ {data: {'mockResult': 1}, keepAlive: true, resolveToConfig: true,
+ savedQuery: "query"});
+ assert_true(config instanceof FencedFrameConfig);
+ attachFencedFrame(config, 'opaque-ads');
+ const result = await nextValueFromServer(ancestorKey);
+ assert_equals(result, "frame1_loaded",
+ `when budget should remain;`);
+
+ // The per-site per-pageload bit limit for `selectURL()` has been
+ // reached. No previously saved query can be retrieved for operation
+ // "test-url-selection-operation-2". The following call should return
+ // the default URL.
+ let config1 = await sharedStorage.selectURL(
+ "test-url-selection-operation-2", urls,
+ {data: {'mockResult': 2}, resolveToConfig: true, savedQuery: "query"});
+ assert_true(config1 instanceof FencedFrameConfig);
+ attachFencedFrame(config1, 'opaque-ads');
+ const result1 = await nextValueFromServer(ancestorKey);
+ assert_equals(result1, "frame0_loaded", 'when budget should be exhausted;');
+}, 'selectURL() saved query not reused across different operations');
+</script>
+</body>
diff --git a/tests/wpt/tests/shared-storage-selecturl-limit/select-url-saved-query-multi-frame.tentative.https.sub.html b/tests/wpt/tests/shared-storage-selecturl-limit/select-url-saved-query-multi-frame.tentative.https.sub.html
new file mode 100644
index 00000000000..c33e1d346aa
--- /dev/null
+++ b/tests/wpt/tests/shared-storage-selecturl-limit/select-url-saved-query-multi-frame.tentative.https.sub.html
@@ -0,0 +1,49 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/shared-storage-selecturl-limit/resources/utils.js"></script>
+<script src="/shared-storage/resources/util.js"></script>
+<script src="/fenced-frame/resources/utils.js"></script>
+
+<body>
+<script>
+'use strict';
+
+promise_test(async () => {
+ // Note that we have set the site page bit limit to 3 and the overall page
+ // bit limit to 6. A single saved query with 8 URLs (i.e. log2(8) = 3 bits)
+ // will be permitted by a site's page budget, plus re-uses of the saved
+ // query. Two saved queries with 8 URLs (and their re-uses) will be
+ // permitted by the overall page budget.
+ const queryKey = "query";
+ const mockResultKey = "mockresult";
+
+ let url0 = new URL(
+ "/shared-storage-selecturl-limit/" +
+ "resources/select-url-saved-query-multi-frame-inner.https.sub.html",
+ location.href);
+
+ url0.searchParams.append(queryKey, "query");
+ url0.searchParams.append(mockResultKey, "1");
+ await attachIFrameWithEventListenerForSelectURLStatus(url0);
+
+ // The same origin can re-use the saved query with ths same name "query".
+ await attachIFrameWithEventListenerForSelectURLStatus(url0);
+
+ // The same saved query name "query" will refer to a different query when
+ // used by a different origin, as evidenced by having a different index
+ // result. Set a new index result for the iframe to send to selectURL.
+ const crossOrigin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+ let url1 = updateUrlToUseNewOrigin(url0, crossOrigin);
+ url1.searchParams.delete(mockResultKey);
+ url1.searchParams.append(mockResultKey, "2");
+ await attachIFrameWithEventListenerForSelectURLStatus(url1);
+
+ // `crossOrigin` can re-use its own query from a separate frame.
+ await attachIFrameWithEventListenerForSelectURLStatus(url1);
+
+}, 'selectURL() with saved queries across mutliple frames.');
+</script>
+</body>
diff --git a/tests/wpt/tests/shared-storage-selecturl-limit/select-url-saved-query.tentative.https.sub.html b/tests/wpt/tests/shared-storage-selecturl-limit/select-url-saved-query.tentative.https.sub.html
new file mode 100644
index 00000000000..0c33bd74fe9
--- /dev/null
+++ b/tests/wpt/tests/shared-storage-selecturl-limit/select-url-saved-query.tentative.https.sub.html
@@ -0,0 +1,62 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/shared-storage-selecturl-limit/resources/utils.js"></script>
+<script src="/shared-storage/resources/util.js"></script>
+<script src="/fenced-frame/resources/utils.js"></script>
+
+<body>
+<script>
+'use strict';
+
+promise_test(async () => {
+ const ancestorKey = token();
+
+ // Note that we have set the site page bit limit to 3 and the overall page
+ // bit limit to 6. A single saved query with 8 URLs (i.e. log2(8) = 3 bits)
+ // will be permitted by the site's page budget, plus re-uses of the saved
+ // query.
+ const numUrls = 8;
+ const urls = generateUrls(numUrls, "/shared-storage/resources/frame",
+ [ancestorKey]);
+
+ await sharedStorage.worklet.addModule(
+ "/shared-storage/resources/simple-module.js");
+
+ function processSavedQuery(optionalData = {}) {
+ return sharedStorage.selectURL(
+ "test-url-selection-operation", urls,
+ {data: optionalData, keepAlive: true, resolveToConfig: true,
+ savedQuery: "query"});
+ }
+
+ let config0 = await processSavedQuery({'mockResult': 1});
+ assert_true(config0 instanceof FencedFrameConfig);
+ attachFencedFrame(config0, 'opaque-ads');
+ const result0 = await nextValueFromServer(ancestorKey);
+ assert_equals(result0, "frame1_loaded",
+ `when budget should remain;`);
+
+ // The per-site per-pageload bit limit for `selectURL()` has been
+ // reached, but a saved query should not trigger a page-budget charge.
+ // Moreover, index 1 should be retrieved even though we omit providing
+ // `data: {'mockResult': 1}` here.
+ let config1 = await processSavedQuery();;
+ assert_true(config1 instanceof FencedFrameConfig);
+ attachFencedFrame(config1, 'opaque-ads');
+ const result1 = await nextValueFromServer(ancestorKey);
+ assert_equals(result1, "frame1_loaded", 'when budget should not be charged;');
+
+ // The per-site per-pageload bit limit for `selectURL()` has been
+ // reached. The next call should return the default URL.
+ let config2 = await sharedStorage.selectURL(
+ "test-url-selection-operation", urls,
+ {data: {'mockResult': 1}, resolveToConfig: true});
+ assert_true(config2 instanceof FencedFrameConfig);
+ attachFencedFrame(config2, 'opaque-ads');
+ const result2 = await nextValueFromServer(ancestorKey);
+ assert_equals(result2, "frame0_loaded", 'when budget should be exhausted;');
+}, 'selectURL() saved query does not deduct budget on re-use');
+</script>
+</body>
diff --git a/tests/wpt/tests/shared-storage/resources/erroneous-function-module.js b/tests/wpt/tests/shared-storage/resources/erroneous-function-module.js
new file mode 100644
index 00000000000..6d463055255
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/resources/erroneous-function-module.js
@@ -0,0 +1,24 @@
+// Copyright 2024 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+class TestURLSelectionOperation {
+ async run(urls, data) {
+ await sharedStorage.append('run-attempt', '1');
+ undefinedVariable;
+ return -1;
+ }
+}
+
+class VerifyRunAttempts {
+ async run(urls, data) {
+ const attempts = await sharedStorage.get('run-attempt');
+ if (!attempts) {
+ return -1;
+ }
+ return attempts.length;
+ }
+}
+
+register('test-url-selection-operation', TestURLSelectionOperation);
+register('verify-run-attempts', VerifyRunAttempts);
diff --git a/tests/wpt/tests/shared-storage/resources/frame2.html b/tests/wpt/tests/shared-storage/resources/frame2.html
new file mode 100644
index 00000000000..bbbc067ce01
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/resources/frame2.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<script src="/fenced-frame/resources/utils.js"></script>
+<body>
+<script>
+async function init() {
+ const [ancestor_key] = parseKeylist();
+ writeValueToServer(ancestor_key, "frame2_loaded");
+}
+
+init();
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/shared-storage/resources/frame2.html.headers b/tests/wpt/tests/shared-storage/resources/frame2.html.headers
new file mode 100644
index 00000000000..1b63235b7cd
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/resources/frame2.html.headers
@@ -0,0 +1 @@
+Supports-Loading-Mode: fenced-frame
diff --git a/tests/wpt/tests/shared-storage/resources/frame3.html b/tests/wpt/tests/shared-storage/resources/frame3.html
new file mode 100644
index 00000000000..e12a2ad909a
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/resources/frame3.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<script src="/fenced-frame/resources/utils.js"></script>
+<body>
+<script>
+async function init() {
+ const [ancestor_key] = parseKeylist();
+ writeValueToServer(ancestor_key, "frame3_loaded");
+}
+
+init();
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/shared-storage/resources/frame3.html.headers b/tests/wpt/tests/shared-storage/resources/frame3.html.headers
new file mode 100644
index 00000000000..1b63235b7cd
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/resources/frame3.html.headers
@@ -0,0 +1 @@
+Supports-Loading-Mode: fenced-frame
diff --git a/tests/wpt/tests/shared-storage/resources/frame4.html b/tests/wpt/tests/shared-storage/resources/frame4.html
new file mode 100644
index 00000000000..716e803da0a
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/resources/frame4.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<script src="/fenced-frame/resources/utils.js"></script>
+<body>
+<script>
+async function init() {
+ const [ancestor_key] = parseKeylist();
+ writeValueToServer(ancestor_key, "frame4_loaded");
+}
+
+init();
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/shared-storage/resources/frame4.html.headers b/tests/wpt/tests/shared-storage/resources/frame4.html.headers
new file mode 100644
index 00000000000..1b63235b7cd
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/resources/frame4.html.headers
@@ -0,0 +1 @@
+Supports-Loading-Mode: fenced-frame
diff --git a/tests/wpt/tests/shared-storage/resources/select-url-saved-query-inner.https.sub.html b/tests/wpt/tests/shared-storage/resources/select-url-saved-query-inner.https.sub.html
new file mode 100644
index 00000000000..9d5efe388d0
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/resources/select-url-saved-query-inner.https.sub.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/shared-storage-selecturl-limit/resources/utils.js"></script>
+<script src="/shared-storage/resources/util.js"></script>
+<script src="/fenced-frame/resources/utils.js"></script>
+
+<body>
+<script>
+'use strict';
+
+async function init() {
+ const url = new URL(location.href);
+ const queryName = url.searchParams.get("query") ?
+ url.searchParams.get("query") : "";
+ const mockResult = url.searchParams.get("mockresult") ?
+ parseInt(url.searchParams.get("mockresult")) : 1;
+ const numUrls = url.searchParams.get("urlcount") ?
+ parseInt(url.searchParams.get("urlcount")) : 8;
+ const moduleName = url.searchParams.get("module") ?
+ url.searchParams.get("module") : "simple-module";
+ const operationName = url.searchParams.get("operation") ?
+ url.searchParams.get("operation") : "test-url-selection-operation";
+ const expectSaved = url.searchParams.get("expectsaved") ?
+ (url.searchParams.get("expectsaved") !== "false") : false;
+ const expectSuccess = url.searchParams.get("expectsuccess") ?
+ (url.searchParams.get("expectsuccess") !== "false") : true;
+ const innerKey = token();
+ let parentOrOpener = window.opener || window.parent;
+
+ // Note that we have set the site page bit limit to 6 and the overall page
+ // bit limit to 12.
+ const urls = generateUrls(numUrls, "/shared-storage/resources/frame",
+ [innerKey]);
+
+ await sharedStorage.worklet.addModule(
+ `/shared-storage/resources/${moduleName}.js`);
+
+ function processSavedQuery(optionalData) {
+ return sharedStorage.selectURL(
+ operationName, urls,
+ {data: optionalData, resolveToConfig: true, savedQuery: queryName});
+ }
+
+ const expected_result = expectSuccess ? `frame${mockResult}_loaded` :
+ `frame0_loaded`;
+ let frameMessage = {selectURLStatus: `success`, origin: `${location.origin}`,
+ query: queryName, mockResultIndex: mockResult,
+ module: moduleName, operation: operationName,
+ urlCount: numUrls, savedExpected: expectSaved,
+ successExpected: expectSuccess};
+
+ // When we expect the query to be saved, omit specfying the index to return
+ // in the data passed to `selectURL`, so that we can see that this data is
+ // not relevant in the saved case.
+ const queryData = expectSaved ? {} : {'mockResult': mockResult};
+ let config0 = await processSavedQuery(queryData);
+ assert_true(config0 instanceof FencedFrameConfig);
+ attachFencedFrame(config0, 'opaque-ads');
+ try {
+ const result0 = await nextValueFromServer(innerKey);
+ assert_equals(result0, expected_result);
+ } catch (error) {
+ frameMessage.selectURLStatus = `${error}`;
+ parentOrOpener.postMessage(frameMessage, "*");
+ return;
+ }
+
+ // No errors were caught, so this portion of the test succeeded.
+ parentOrOpener.postMessage(frameMessage, "*");
+}
+
+init();
+</script>
+</body>
diff --git a/tests/wpt/tests/shared-storage/resources/simple-module.js b/tests/wpt/tests/shared-storage/resources/simple-module.js
index eeb0ce95b04..e639f470008 100644
--- a/tests/wpt/tests/shared-storage/resources/simple-module.js
+++ b/tests/wpt/tests/shared-storage/resources/simple-module.js
@@ -25,6 +25,27 @@ class TestURLSelectionOperation {
}
}
+class TestURLSelectionOperationTwo {
+ async run(urls, data) {
+ if (data && data.hasOwnProperty('mockResult')) {
+ return data['mockResult'];
+ }
+
+ return -1;
+ }
+}
+
+class TestSlowURLSelectionOperation {
+ async run(urls, data) {
+ await busyWaitMs(100);
+ if (data && data.hasOwnProperty('mockResult')) {
+ return data['mockResult'];
+ }
+
+ return -1;
+ }
+}
+
class IncrementGlobalVariableAndReturnOriginalValueOperation {
async run(urls, data) {
return globalVar++;
@@ -102,6 +123,8 @@ class GetWaitIncrementWithinLockOperation {
}
register('test-url-selection-operation', TestURLSelectionOperation);
+register('test-url-selection-operation-2', TestURLSelectionOperationTwo);
+register('test-slow-url-selection-operation', TestSlowURLSelectionOperation);
register('increment-global-variable-and-return-original-value-operation',
IncrementGlobalVariableAndReturnOriginalValueOperation);
register('verify-key-value', VerifyKeyValue);
diff --git a/tests/wpt/tests/shared-storage/resources/util.js b/tests/wpt/tests/shared-storage/resources/util.js
index 09eb45c591b..b1456fc01db 100644
--- a/tests/wpt/tests/shared-storage/resources/util.js
+++ b/tests/wpt/tests/shared-storage/resources/util.js
@@ -193,3 +193,25 @@ function checkInterceptedUrls(worker, expectedRequests) {
JSON.stringify(actualRequests), JSON.stringify(expectedRequests));
});
}
+
+function attachIFrameWithEventListenerForSelectURLStatus(url) {
+ const frame = document.createElement('iframe');
+ frame.src = url;
+
+ const promise = new Promise((resolve, reject) => {
+ window.addEventListener('message', async function handler(evt) {
+ if (evt.source === frame.contentWindow && evt.data.selectURLStatus) {
+ document.body.removeChild(frame);
+ window.removeEventListener('message', handler);
+ if (evt.data.selectURLStatus === 'success') {
+ resolve(evt.data);
+ } else {
+ reject(new Error(JSON.stringify(evt.data)));
+ }
+ }
+ });
+ });
+
+ document.body.appendChild(frame);
+ return promise;
+}
diff --git a/tests/wpt/tests/shared-storage/select-url-saved-query-cross-origin-multi-query.tentative.https.sub.html b/tests/wpt/tests/shared-storage/select-url-saved-query-cross-origin-multi-query.tentative.https.sub.html
new file mode 100644
index 00000000000..7738d90fa69
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/select-url-saved-query-cross-origin-multi-query.tentative.https.sub.html
@@ -0,0 +1,67 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/shared-storage-selecturl-limit/resources/utils.js"></script>
+<script src="/shared-storage/resources/util.js"></script>
+<script src="/fenced-frame/resources/utils.js"></script>
+
+<body>
+<script>
+'use strict';
+
+// Note that we have set the site page bit limit to 6 and the overall page
+// bit limit to 12.
+
+promise_test(async () => {
+ const queryKey = "query";
+ const mockResultKey = "mockresult";
+ const urlCountKey = "urlcount";
+ const moduleNameKey = "module";
+ const operationNameKey = "operation";
+ const expectSavedKey = "expectsaved";
+ const expectSuccessKey = "expectsuccess";
+
+ const crossOrigin = 'https://{{domains[www]}}:{{ports[https][0]}}';
+ let url0 = new URL(crossOrigin +
+ "/shared-storage/" +
+ "resources/select-url-saved-query-inner.https.sub.html",
+ location.href);
+
+ // Initiate a query to be saved.
+ url0.searchParams.append(queryKey, "query0");
+ url0.searchParams.append(mockResultKey, "2");
+ url0.searchParams.append(moduleNameKey, "simple-module");
+ url0.searchParams.append(operationNameKey, "test-slow-url-selection-operation");
+ url0.searchParams.append(urlCountKey, "4");
+ url0.searchParams.append(expectSavedKey, "false");
+ url0.searchParams.append(expectSuccessKey, "true");
+ const promise0 = attachIFrameWithEventListenerForSelectURLStatus(url0);
+
+ // Initiate a second query to be saved without waiting for the first.
+ let url1 = url0;
+ url1.searchParams.delete(queryKey);
+ url1.searchParams.append(queryKey, "query1");
+ url1.searchParams.delete(mockResultKey);
+ url1.searchParams.append(mockResultKey, "1");
+ const promise1 = attachIFrameWithEventListenerForSelectURLStatus(url1);
+
+ // Reuse the first query while the initial two queries are still resolving.
+ let url2 = url0;
+ url2.searchParams.delete(expectSavedKey);
+ url2.searchParams.append(expectSavedKey, "true");
+ const promise2 = attachIFrameWithEventListenerForSelectURLStatus(url2);
+
+ // Reuse the second query.
+ let url3 = url1;
+ url3.searchParams.delete(expectSavedKey);
+ url3.searchParams.append(expectSavedKey, "true");
+ const promise3 = attachIFrameWithEventListenerForSelectURLStatus(url3);
+
+ // Wait for all the promises to resolve.
+ await Promise.all([promise0, promise1, promise2, promise3]);
+
+}, 'for selectURL(), multiple saved queries can be handled simultaneously.');
+</script>
+</body>
diff --git a/tests/wpt/tests/shared-storage/select-url-saved-query-key-tuples.tentative.https.sub.html b/tests/wpt/tests/shared-storage/select-url-saved-query-key-tuples.tentative.https.sub.html
new file mode 100644
index 00000000000..05bc807b868
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/select-url-saved-query-key-tuples.tentative.https.sub.html
@@ -0,0 +1,87 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/shared-storage-selecturl-limit/resources/utils.js"></script>
+<script src="/shared-storage/resources/util.js"></script>
+<script src="/fenced-frame/resources/utils.js"></script>
+
+<body>
+<script>
+'use strict';
+
+// Note that we have set the site page bit limit to 6 and the overall page
+// bit limit to 12.
+
+// Saved query results are stored in a map keyed by tuples as follows:
+// <data origin, script source URL, operation name, query name>.
+// If two queries share the same name, but the full tuple doesn't match,
+// then the queries are seen as distinct. In particular, queries cannot be
+// shared across different data origins, worklet script source URLs, or
+// worklet operation names.
+
+promise_test(async () => {
+ const queryKey = "query";
+ const mockResultKey = "mockresult";
+ const urlCountKey = "urlcount";
+ const moduleNameKey = "module";
+ const operationNameKey = "operation";
+ const expectSavedKey = "expectsaved";
+ const expectSuccessKey = "expectsuccess";
+
+ let url0 = new URL(
+ "/shared-storage/" +
+ "resources/select-url-saved-query-inner.https.sub.html",
+ location.href);
+
+ // Initiate a query to be saved.
+ url0.searchParams.append(queryKey, "query");
+ url0.searchParams.append(mockResultKey, "1");
+ url0.searchParams.append(moduleNameKey, "simple-module");
+ url0.searchParams.append(operationNameKey, "test-url-selection-operation");
+ url0.searchParams.append(urlCountKey, "4");
+ url0.searchParams.append(expectSavedKey, "false");
+ url0.searchParams.append(expectSuccessKey, "true");
+ await attachIFrameWithEventListenerForSelectURLStatus(url0);
+
+ // This second query will be distinct because its operation name differs. We
+ // set a new mock result that differs from all previous results to verify
+ // that we return this new result instead of re-using any previous result.
+ let url1 = url0;
+ url1.searchParams.delete(operationNameKey);
+ url1.searchParams.append(operationNameKey, "test-url-selection-operation-2");
+ url1.searchParams.delete(mockResultKey);
+ url1.searchParams.append(mockResultKey, "2");
+ await attachIFrameWithEventListenerForSelectURLStatus(url1);
+
+ // This third query will be distinct because its script source URL differs. We
+ // set a new mock result that differs from all previous results to verify
+ // that we return this new result instead of re-using any previous result.
+ let url2 = url0;
+ url2.searchParams.delete(moduleNameKey);
+ url2.searchParams.append(moduleNameKey, "simple-module2");
+ url2.searchParams.delete(operationNameKey);
+ url2.searchParams.append(operationNameKey , "test-url-selection-operation");
+ url2.searchParams.delete(mockResultKey);
+ url2.searchParams.append(mockResultKey, "3");
+ await attachIFrameWithEventListenerForSelectURLStatus(url2);
+
+ // This fourth query will be distinct because its data origin differs. We
+ // set a new mock result that differs from all previous results to verify
+ // that we return this new result instead of re-using any previous result.
+ const crossOrigin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+ let url3 = updateUrlToUseNewOrigin(url0, crossOrigin);
+ url3.searchParams.delete(moduleNameKey);
+ url3.searchParams.append(moduleNameKey , "simple-module");
+ url3.searchParams.delete(operationNameKey);
+ url3.searchParams.append(operationNameKey, "test-url-selection-operation");
+ url3.searchParams.delete(mockResultKey);
+ url3.searchParams.append(mockResultKey, "4");
+ url3.searchParams.delete(urlCountKey);
+ url3.searchParams.append(urlCountKey, "5");
+ await attachIFrameWithEventListenerForSelectURLStatus(url3);
+
+}, 'for selectURL(), saved queries are keyed on <origin, URL, operation, query>.');
+</script>
+</body>
diff --git a/tests/wpt/tests/shared-storage/select-url-saved-query-rejection.tentative.https.sub.html b/tests/wpt/tests/shared-storage/select-url-saved-query-rejection.tentative.https.sub.html
new file mode 100644
index 00000000000..819b5e5166a
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/select-url-saved-query-rejection.tentative.https.sub.html
@@ -0,0 +1,62 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/shared-storage-selecturl-limit/resources/utils.js"></script>
+<script src="/shared-storage/resources/util.js"></script>
+<script src="/fenced-frame/resources/utils.js"></script>
+
+<body>
+<script>
+'use strict';
+
+// Note that we have set the site page bit limit to 6 and the overall page
+// bit limit to 12.
+
+promise_test(async () => {
+ const queryKey = "query";
+ const mockResultKey = "mockresult";
+ const urlCountKey = "urlcount";
+ const moduleNameKey = "module";
+ const expectSavedKey = "expectsaved";
+ const expectSuccessKey = "expectsuccess";
+
+ let url0 = new URL(
+ "/shared-storage/" +
+ "resources/select-url-saved-query-inner.https.sub.html",
+ location.href);
+
+ // We don't expect success because the operation definition has an
+ // intentional error and will reject. Hence the default index (0) will be
+ // returned and will also be stored for later use.
+ url0.searchParams.append(queryKey, "query");
+ url0.searchParams.append(mockResultKey, "2");
+ url0.searchParams.append(moduleNameKey, "erroneous-function-module");
+ url0.searchParams.append(urlCountKey, "4");
+ url0.searchParams.append(expectSavedKey, "false");
+ url0.searchParams.append(expectSuccessKey, "false");
+ await attachIFrameWithEventListenerForSelectURLStatus(url0);
+
+ // Re-using the query will retrieve the default index.
+ let url1 = url0;
+ url1.searchParams.delete(expectSavedKey);
+ url1.searchParams.append(expectSavedKey, "true");
+ await attachIFrameWithEventListenerForSelectURLStatus(url1);
+
+ // Verify that worklet was run exactly once.
+ const ancestorKey = token();
+ const urls = generateUrls(2, "/shared-storage/resources/frame",
+ [ancestorKey]);
+ const worklet = await sharedStorage.createWorklet(
+ '/shared-storage/resources/erroneous-function-module.js');
+ let config = await worklet.selectURL('verify-run-attempts', urls,
+ {resolveToConfig: true});
+ assert_true(config instanceof FencedFrameConfig);
+ attachFencedFrame(config, 'opaque-ads');
+ const result = await nextValueFromServer(ancestorKey);
+ assert_equals(result, 'frame1_loaded', "expected 1 run attempt");
+
+}, 'for selectURL(), a saved query stores the default index on rejection.');
+</script>
+</body>
diff --git a/tests/wpt/tests/shared-storage/select-url-saved-query-same-origin-multi-query.tentative.https.sub.html b/tests/wpt/tests/shared-storage/select-url-saved-query-same-origin-multi-query.tentative.https.sub.html
new file mode 100644
index 00000000000..9ee49bb2b25
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/select-url-saved-query-same-origin-multi-query.tentative.https.sub.html
@@ -0,0 +1,66 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/shared-storage-selecturl-limit/resources/utils.js"></script>
+<script src="/shared-storage/resources/util.js"></script>
+<script src="/fenced-frame/resources/utils.js"></script>
+
+<body>
+<script>
+'use strict';
+
+// Note that we have set the site page bit limit to 6 and the overall page
+// bit limit to 12.
+
+promise_test(async () => {
+ const queryKey = "query";
+ const mockResultKey = "mockresult";
+ const urlCountKey = "urlcount";
+ const moduleNameKey = "module";
+ const operationNameKey = "operation";
+ const expectSavedKey = "expectsaved";
+ const expectSuccessKey = "expectsuccess";
+
+ let url0 = new URL(
+ "/shared-storage/" +
+ "resources/select-url-saved-query-inner.https.sub.html",
+ location.href);
+
+ // Initiate a query to be saved.
+ url0.searchParams.append(queryKey, "query0");
+ url0.searchParams.append(mockResultKey, "2");
+ url0.searchParams.append(moduleNameKey, "simple-module");
+ url0.searchParams.append(operationNameKey, "test-slow-url-selection-operation");
+ url0.searchParams.append(urlCountKey, "4");
+ url0.searchParams.append(expectSavedKey, "false");
+ url0.searchParams.append(expectSuccessKey, "true");
+ const promise0 = attachIFrameWithEventListenerForSelectURLStatus(url0);
+
+ // Initiate a second query to be saved without waiting for the first.
+ let url1 = url0;
+ url1.searchParams.delete(queryKey);
+ url1.searchParams.append(queryKey, "query1");
+ url1.searchParams.delete(mockResultKey);
+ url1.searchParams.append(mockResultKey, "1");
+ const promise1 = attachIFrameWithEventListenerForSelectURLStatus(url1);
+
+ // Reuse the first query while the initial two queries are still resolving.
+ let url2 = url0;
+ url2.searchParams.delete(expectSavedKey);
+ url2.searchParams.append(expectSavedKey, "true");
+ const promise2 = attachIFrameWithEventListenerForSelectURLStatus(url2);
+
+ // Reuse the second query.
+ let url3 = url1;
+ url3.searchParams.delete(expectSavedKey);
+ url3.searchParams.append(expectSavedKey, "true");
+ const promise3 = attachIFrameWithEventListenerForSelectURLStatus(url3);
+
+ // Wait for all the promises to resolve.
+ await Promise.all([promise0, promise1, promise2, promise3]);
+
+}, 'for selectURL(), multiple saved queries can be handled simultaneously.');
+</script>
+</body>
diff --git a/tests/wpt/tests/shared-storage/select-url-saved-query-validate-index-after-retrieving.tentative.https.sub.html b/tests/wpt/tests/shared-storage/select-url-saved-query-validate-index-after-retrieving.tentative.https.sub.html
new file mode 100644
index 00000000000..f45ce4957c4
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/select-url-saved-query-validate-index-after-retrieving.tentative.https.sub.html
@@ -0,0 +1,55 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/shared-storage-selecturl-limit/resources/utils.js"></script>
+<script src="/shared-storage/resources/util.js"></script>
+<script src="/fenced-frame/resources/utils.js"></script>
+
+<body>
+<script>
+'use strict';
+
+// Note that we have set the site page bit limit to 6 and the overall page
+// bit limit to 12.
+
+promise_test(async () => {
+ const queryKey = "query";
+ const mockResultKey = "mockresult";
+ const urlCountKey = "urlcount";
+ const moduleNameKey = "module";
+ const expectSavedKey = "expectsaved";
+ const expectSuccessKey = "expectsuccess";
+
+ let url0 = new URL(
+ "/shared-storage/" +
+ "resources/select-url-saved-query-inner.https.sub.html",
+ location.href);
+
+ // We expect success because the returned index (2) is in range.
+ url0.searchParams.append(queryKey, "query");
+ url0.searchParams.append(mockResultKey, "2");
+ url0.searchParams.append(moduleNameKey, "simple-module");
+ url0.searchParams.append(urlCountKey, "4");
+ url0.searchParams.append(expectSavedKey, "false");
+ url0.searchParams.append(expectSuccessKey, "true");
+ await attachIFrameWithEventListenerForSelectURLStatus(url0);
+
+ // Re-using the query on a URL list of smaller size may affect the
+ // returned result, since 2 is out of range for a URL list
+ // of size 1. This verifies that the default index (0) is returned in this
+ // case.
+ let url1 = url0;
+ url1.searchParams.delete(urlCountKey);
+ url1.searchParams.append(urlCountKey, "1");
+ url1.searchParams.delete(expectSavedKey);
+ url1.searchParams.append(expectSavedKey, "true");
+ url1.searchParams.delete(expectSuccessKey);
+ url1.searchParams.append(expectSuccessKey, "false");
+ await attachIFrameWithEventListenerForSelectURLStatus(url1);
+
+}, 'for selectURL(), a saved query result index is verified after retrieval,'
+ + ' and the default is returned if the index is out of range.');
+</script>
+</body>
diff --git a/tests/wpt/tests/shared-storage/select-url-saved-query-validate-index-before-storing.tentative.https.sub.html b/tests/wpt/tests/shared-storage/select-url-saved-query-validate-index-before-storing.tentative.https.sub.html
new file mode 100644
index 00000000000..5cb906e61d5
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/select-url-saved-query-validate-index-before-storing.tentative.https.sub.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/shared-storage-selecturl-limit/resources/utils.js"></script>
+<script src="/shared-storage/resources/util.js"></script>
+<script src="/fenced-frame/resources/utils.js"></script>
+
+<body>
+<script>
+'use strict';
+
+// Note that we have set the site page bit limit to 6 and the overall page
+// bit limit to 12.
+
+promise_test(async () => {
+ const queryKey = "query";
+ const mockResultKey = "mockresult";
+ const urlCountKey = "urlcount";
+ const moduleNameKey = "module";
+ const expectSavedKey = "expectsaved";
+ const expectSuccessKey = "expectsuccess";
+
+ let url0 = new URL(
+ "/shared-storage/" +
+ "resources/select-url-saved-query-inner.https.sub.html",
+ location.href);
+
+ // We don't expect success because the returned index (2) is out of range for
+ // a URL list of size 1. Hence the default index (0) will be returned.
+ url0.searchParams.append(queryKey, "query");
+ url0.searchParams.append(mockResultKey, "2");
+ url0.searchParams.append(moduleNameKey, "simple-module");
+ url0.searchParams.append(urlCountKey, "1");
+ url0.searchParams.append(expectSavedKey, "false");
+ url0.searchParams.append(expectSuccessKey, "false");
+ await attachIFrameWithEventListenerForSelectURLStatus(url0);
+
+ // Re-using the query on a URL list of larger size doesn't affect the
+ // returned result even though 2 would have been in-range for a URL list
+ // of size 4. This verifies that the default index (0) is stored
+ // and retrieved in this case.
+ let url1 = url0;
+ url1.searchParams.delete(urlCountKey);
+ url1.searchParams.append(urlCountKey, "4");
+ url1.searchParams.delete(expectSavedKey);
+ url1.searchParams.append(expectSavedKey, "true");
+ await attachIFrameWithEventListenerForSelectURLStatus(url1);
+
+}, 'for selectURL(), a saved query result index is verified before storing,'
+ + ' and the default is stored if the index is out of range.');
+</script>
+</body>
diff --git a/tests/wpt/tests/svg/text/scripted/getcharnumatposition-slr.tentative.html b/tests/wpt/tests/svg/text/scripted/getcharnumatposition-slr.tentative.html
new file mode 100644
index 00000000000..a929d58ba14
--- /dev/null
+++ b/tests/wpt/tests/svg/text/scripted/getcharnumatposition-slr.tentative.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>SVGTextContentElement.getCharNumAtPosition</title>
+<link rel="help" href="https://svgwg.org/svg2-draft/text.html#__svg__SVGTextContentElement__getCharNumAtPosition">
+<link rel="help" href="https://github.com/w3c/svgwg/issues/955">
+<link rel="stylesheet" href="/fonts/ahem.css">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<svg width="800" height="600">
+<style>
+text {
+ font: 20px/1 Ahem;
+}
+</style>
+<text><tspan id="htb" x="40" y="100">abc</tspan></text>
+<text style="writing-mode:sideways-lr"><tspan id="slr" x="40" y="200">abc</tspan></text>
+</svg>
+
+<script>
+function newPoint(x, y) {
+ const p = document.querySelector('svg').createSVGPoint();
+ p.x = x;
+ p.y = y;
+ return p;
+}
+
+test(() => {
+ const element = document.querySelector('#slr');
+ assert_equals(element.getNumberOfChars(), 3);
+ const start = 200;
+ assert_equals(element.getCharNumAtPosition(newPoint(40, start + 10)), -1);
+ assert_equals(element.getCharNumAtPosition(newPoint(40, start - 10)), 0);
+ assert_equals(element.getCharNumAtPosition(newPoint(40, start - 30)), 1);
+ assert_equals(element.getCharNumAtPosition(newPoint(40, start - 50)), 2);
+ assert_equals(element.getCharNumAtPosition(newPoint(40, start - 70)), -1);
+}, 'sideways-lr');
+</script>
diff --git a/tests/wpt/tests/svg/text/scripted/getcharnumatposition.html b/tests/wpt/tests/svg/text/scripted/getcharnumatposition.html
index 779fb477b95..f17369b3742 100644
--- a/tests/wpt/tests/svg/text/scripted/getcharnumatposition.html
+++ b/tests/wpt/tests/svg/text/scripted/getcharnumatposition.html
@@ -15,7 +15,6 @@ text {
<text><tspan id="htb" x="40" y="100">abc</tspan></text>
<text style="writing-mode:vertical-lr"><tspan id="vlr" x="40" y="120">abc</tspan></text>
<text style="writing-mode:vertical-rl"><tspan id="vrl" x="80" y="120">abc</tspan></text>
-<text style="writing-mode:sideways-lr"><tspan id="slr" x="40" y="200">abc</tspan></text>
<text style="writing-mode:sideways-rl"><tspan id="srl" x="80" y="200">abc</tspan></text>
</svg>
@@ -61,20 +60,6 @@ test(() => {
}, 'virtical-rl');
test(() => {
- const element = document.querySelector('#slr');
- assert_equals(element.getNumberOfChars(), 3);
- // If UAs follow the current SVG specification,
- // - The text starts below (40,200), and grows upwards.
- // - It ends at (40,200).
- const start = 200;
- assert_equals(element.getCharNumAtPosition(newPoint(40, start - 10)), -1);
- assert_equals(element.getCharNumAtPosition(newPoint(40, start + 10)), 2);
- assert_equals(element.getCharNumAtPosition(newPoint(40, start + 30)), 1);
- assert_equals(element.getCharNumAtPosition(newPoint(40, start + 50)), 0);
- assert_equals(element.getCharNumAtPosition(newPoint(40, start + 70)), -1);
-}, 'sideways-lr');
-
-test(() => {
const element = document.querySelector('#srl');
assert_equals(element.getNumberOfChars(), 3);
const start = 200;
diff --git a/tests/wpt/tests/svg/text/scripted/getstartpositionofchar.html b/tests/wpt/tests/svg/text/scripted/getstartpositionofchar.html
new file mode 100644
index 00000000000..5b09ea198a2
--- /dev/null
+++ b/tests/wpt/tests/svg/text/scripted/getstartpositionofchar.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<title>SVGTextContentElement.getStartPositionOfChar and getEndPositionOfChar</title>
+<link rel="help" href="https://svgwg.org/svg2-draft/text.html#__svg__SVGTextContentElement__getStartPositionOfChar">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="stylesheet" href="/fonts/ahem.css">
+<style>
+text {
+ font: 10px/1 Ahem;
+}
+#vrl {
+ writing-mode: vertical-rl;
+}
+#vlr {
+ writing-mode: vertical-lr;
+}
+#srl {
+ writing-mode: sideways-rl;
+}
+#slr {
+ writing-mode: sideways-lr;
+}
+</style>
+
+<svg>
+ <text id="vrl" x="100" y="100">ABC</text>
+ <text id="vlr" x="100" y="100">ABC</text>
+ <text id="srl" x="100" y="100">ABC</text>
+ <text id="slr" x="100" y="100">ABC</text>
+</svg>
+
+<script>
+const FONT_SIZE = 10;
+function $(sel) { return document.querySelector(sel); }
+
+test(() => {
+ const target = $('#vrl');
+ const base = target.getStartPositionOfChar(0).y;
+ assert_equals(base + FONT_SIZE, target.getEndPositionOfChar(0).y);
+ assert_equals(base + FONT_SIZE, target.getStartPositionOfChar(1).y);
+ assert_equals(base + FONT_SIZE * 2, target.getEndPositionOfChar(1).y);
+ assert_equals(base + FONT_SIZE * 2, target.getStartPositionOfChar(2).y);
+ assert_equals(base + FONT_SIZE * 3, target.getEndPositionOfChar(2).y);
+}, 'vertical-rl');
+
+test(() => {
+ const target = $('#vlr');
+ const base = target.getStartPositionOfChar(0).y;
+ assert_equals(base + FONT_SIZE, target.getEndPositionOfChar(0).y);
+ assert_equals(base + FONT_SIZE, target.getStartPositionOfChar(1).y);
+ assert_equals(base + FONT_SIZE * 2, target.getEndPositionOfChar(1).y);
+ assert_equals(base + FONT_SIZE * 2, target.getStartPositionOfChar(2).y);
+ assert_equals(base + FONT_SIZE * 3, target.getEndPositionOfChar(2).y);
+}, 'vertical-lr');
+
+test(() => {
+ const target = $('#srl');
+ const base = target.getStartPositionOfChar(0).y;
+ assert_equals(base + FONT_SIZE, target.getEndPositionOfChar(0).y);
+ assert_equals(base + FONT_SIZE, target.getStartPositionOfChar(1).y);
+ assert_equals(base + FONT_SIZE * 2, target.getEndPositionOfChar(1).y);
+ assert_equals(base + FONT_SIZE * 2, target.getStartPositionOfChar(2).y);
+ assert_equals(base + FONT_SIZE * 3, target.getEndPositionOfChar(2).y);
+}, 'sideways-rl');
+
+test(() => {
+ const target = $('#slr');
+ const base = target.getStartPositionOfChar(0).y;
+ assert_equals(base - FONT_SIZE, target.getEndPositionOfChar(0).y);
+ assert_equals(base - FONT_SIZE, target.getStartPositionOfChar(1).y);
+ assert_equals(base - FONT_SIZE * 2, target.getEndPositionOfChar(1).y);
+ assert_equals(base - FONT_SIZE * 2, target.getStartPositionOfChar(2).y);
+ assert_equals(base - FONT_SIZE * 3, target.getEndPositionOfChar(2).y);
+}, 'sideways-lr');
+</script>
diff --git a/tests/wpt/tests/tools/ci/run_tc.py b/tests/wpt/tests/tools/ci/run_tc.py
index 446afadac88..9def3bebcab 100755
--- a/tests/wpt/tests/tools/ci/run_tc.py
+++ b/tests/wpt/tests/tools/ci/run_tc.py
@@ -141,10 +141,15 @@ def install_certificates():
def start_dbus():
+ # Start system bus
run(["sudo", "service", "dbus", "start"])
- # Enable dbus autolaunch for Chrome
- # https://source.chromium.org/chromium/chromium/src/+/main:content/app/content_main.cc;l=220;drc=0bcc023b8cdbc073aa5c48db373810db3f765c87.
- os.environ["DBUS_SESSION_BUS_ADDRESS"] = "autolaunch:"
+ # Start user bus and set env
+ dbus_env = run(["dbus-launch"], return_stdout=True)
+ for dbus_env_line in dbus_env.splitlines():
+ dbus_env_name, dbus_env_value = dbus_env_line.split("=", 1)
+ assert (dbus_env_name.startswith("DBUS_SESSION"))
+ os.environ[dbus_env_name] = dbus_env_value
+ assert ("DBUS_SESSION_BUS_ADDRESS" in os.environ)
def install_chrome(channel):
@@ -267,7 +272,9 @@ def setup_environment(args):
if "chrome" in args.browser:
assert args.channel is not None
install_chrome(args.channel)
- # Chrome is using dbus for various features.
+
+ # These browsers use dbus for various features.
+ if any(b in args.browser for b in ["chrome", "webkitgtk_minibrowser"]):
start_dbus()
if args.xvfb:
diff --git a/tests/wpt/tests/tools/serve/serve.py b/tests/wpt/tests/tools/serve/serve.py
index a11e15db98d..2fe8c3dc546 100644
--- a/tests/wpt/tests/tools/serve/serve.py
+++ b/tests/wpt/tests/tools/serve/serve.py
@@ -602,6 +602,7 @@ class RoutesBuilder:
("*", "/.well-known/attribution-reporting/debug/report-aggregate-debug", handlers.PythonScriptHandler),
("*", "/.well-known/attribution-reporting/debug/verbose", handlers.PythonScriptHandler),
("GET", "/.well-known/interest-group/permissions/", handlers.PythonScriptHandler),
+ ("*", "/.well-known/interest-group/real-time-report", handlers.PythonScriptHandler),
("*", "/.well-known/private-aggregation/*", handlers.PythonScriptHandler),
("*", "/.well-known/web-identity", handlers.PythonScriptHandler),
("*", "*.py", handlers.PythonScriptHandler),
diff --git a/tests/wpt/tests/tools/webdriver/webdriver/error.py b/tests/wpt/tests/tools/webdriver/webdriver/error.py
index b19693e2d25..bd2b31728ec 100644
--- a/tests/wpt/tests/tools/webdriver/webdriver/error.py
+++ b/tests/wpt/tests/tools/webdriver/webdriver/error.py
@@ -2,6 +2,7 @@
import collections
import json
+import string
from typing import ClassVar, DefaultDict, Type
@@ -32,11 +33,10 @@ class WebDriverException(Exception):
message = f"{self.status_code} ({self.http_status})"
if self.message is not None:
- message += ": %s" % self.message
- message += "\n"
+ message += ": %s" % self.message.strip(string.whitespace)
- if self.stacktrace:
- message += ("\nRemote-end stacktrace:\n\n%s" % self.stacktrace)
+ if self.stacktrace is not None:
+ message += ("\n\nRemote-end stacktrace:\n\n%s" % self.stacktrace.strip("\n"))
return message
@@ -209,9 +209,10 @@ def from_response(response):
"Expected 'value' key in response body:\n"
"%s" % json.dumps(response.body))
- # all fields must exist, but stacktrace can be an empty string
+ # all fields must exist, but both message and stacktrace are
+ # implementation-defined and could be empty
code = value["error"]
- message = value["message"]
+ message = value["message"] or None
stack = value["stacktrace"] or None
cls = get(code)
diff --git a/tests/wpt/tests/tools/wpt/browser.py b/tests/wpt/tests/tools/wpt/browser.py
index 93260439701..923bf9904f1 100644
--- a/tests/wpt/tests/tools/wpt/browser.py
+++ b/tests/wpt/tests/tools/wpt/browser.py
@@ -10,7 +10,7 @@ from abc import ABCMeta, abstractmethod
from datetime import datetime, timedelta, timezone
from shutil import which
from typing import Optional
-from urllib.parse import urlsplit
+from urllib.parse import urlsplit, quote
import html5lib
import requests
@@ -2375,34 +2375,20 @@ class WebKitTestRunner(Browser):
class WebKitGTKMiniBrowser(WebKit):
- def _get_osidversion(self):
- with open('/etc/os-release') as osrelease_handle:
- for line in osrelease_handle.readlines():
- if line.startswith('ID='):
- os_id = line.split('=')[1].strip().strip('"')
- if line.startswith('VERSION_ID='):
- version_id = line.split('=')[1].strip().strip('"')
- assert os_id
- assert version_id
- osidversion = os_id + '-' + version_id
- assert ' ' not in osidversion
- assert len(osidversion) > 3
- return osidversion.capitalize()
-
def download(self, dest=None, channel=None, rename=None):
base_dowload_uri = "https://webkitgtk.org/built-products/"
- base_download_dir = base_dowload_uri + "x86_64/release/" + channel + "/" + self._get_osidversion() + "/MiniBrowser/"
+ base_download_dir = base_dowload_uri + platform.machine() + "/release/" + channel + "/MiniBrowser/"
try:
response = get(base_download_dir + "LAST-IS")
except requests.exceptions.HTTPError as e:
if e.response.status_code == 404:
raise RuntimeError("Can't find a WebKitGTK MiniBrowser %s bundle for %s at %s"
- % (channel, self._get_osidversion(), base_dowload_uri))
+ % (channel, platform.machine(), base_dowload_uri))
raise
bundle_filename = response.text.strip()
- bundle_url = base_download_dir + bundle_filename
+ bundle_url = base_download_dir + quote(bundle_filename)
dest = self._get_browser_download_dir(dest, channel)
bundle_file_path = os.path.join(dest, bundle_filename)
@@ -2411,13 +2397,14 @@ class WebKitGTKMiniBrowser(WebKit):
with open(bundle_file_path, "w+b") as f:
get_download_to_descriptor(f, bundle_url)
- bundle_filename_no_ext, _ = os.path.splitext(bundle_filename)
+ ext_ndots = 2 if '.tar.' in bundle_filename else 1
+ bundle_filename_no_ext = '.'.join(bundle_filename.split('.')[:-ext_ndots])
bundle_hash_url = base_download_dir + bundle_filename_no_ext + ".sha256sum"
bundle_expected_hash = get(bundle_hash_url).text.strip().split(" ")[0]
bundle_computed_hash = sha256sum(bundle_file_path)
if bundle_expected_hash != bundle_computed_hash:
- self.logger.error("Calculated SHA256 hash is %s but was expecting %s" % (bundle_computed_hash,bundle_expected_hash))
+ self.logger.error("Calculated SHA256 hash is %s but was expecting %s" % (bundle_computed_hash, bundle_expected_hash))
raise RuntimeError("The WebKitGTK MiniBrowser bundle at %s has incorrect SHA256 hash." % bundle_file_path)
return bundle_file_path
@@ -2431,26 +2418,26 @@ class WebKitGTKMiniBrowser(WebKit):
rmtree(bundle_uncompress_directory)
os.mkdir(bundle_uncompress_directory)
+ bundle_file_name = os.path.basename(bundle_path)
with open(bundle_path, "rb") as f:
- unzip(f, bundle_uncompress_directory)
+ if bundle_file_name.endswith(".zip"):
+ unzip(f, bundle_uncompress_directory)
+ elif ".tar." in bundle_file_name:
+ untar(f, bundle_uncompress_directory)
+ else:
+ raise NotImplementedError("Unable to install WebKitGTK MiniBrowser bundle from file:" % bundle_file_name)
+ os.remove(bundle_path)
- install_dep_script = os.path.join(bundle_uncompress_directory, "install-dependencies.sh")
- if os.path.isfile(install_dep_script):
- self.logger.info("Executing install-dependencies.sh script from bundle.")
- install_dep_cmd = [install_dep_script]
- if not prompt:
- install_dep_cmd.append("--autoinstall")
- # use subprocess.check_call() directly to display unbuffered stdout/stderr in real-time.
- subprocess.check_call(install_dep_cmd)
+ for expected_binary in ["MiniBrowser", "WebKitWebDriver"]:
+ binary_path = os.path.join(bundle_uncompress_directory, expected_binary)
+ if not (os.path.isfile(binary_path) and os.access(binary_path, os.X_OK)):
+ raise RuntimeError("Can't find a %s binary at %s" % (expected_binary, binary_path))
minibrowser_path = os.path.join(bundle_uncompress_directory, "MiniBrowser")
- if not os.path.isfile(minibrowser_path):
- raise RuntimeError("Can't find a MiniBrowser binary at %s" % minibrowser_path)
-
- os.remove(bundle_path)
+ version_str = subprocess.check_output([minibrowser_path, "--version"]).decode("utf-8").strip()
+ self.logger.info("WebKitGTK MiniBrowser bundle for channel %s installed: %s" % (channel, version_str))
install_ok_file = os.path.join(bundle_uncompress_directory, ".installation-ok")
open(install_ok_file, "w").close() # touch
- self.logger.info("WebKitGTK MiniBrowser bundle for channel %s installed." % channel)
return minibrowser_path
def _find_executable_in_channel_bundle(self, binary, venv_path=None, channel=None):
@@ -2467,7 +2454,6 @@ class WebKitGTKMiniBrowser(WebKit):
if minibrowser_path:
return minibrowser_path
- libexecpaths = ["/usr/libexec/webkit2gtk-4.0"] # Fedora path
triplet = "x86_64-linux-gnu"
# Try to use GCC to detect this machine triplet
gcc = which("gcc")
@@ -2476,8 +2462,16 @@ class WebKitGTKMiniBrowser(WebKit):
triplet = call(gcc, "-dumpmachine").strip()
except subprocess.CalledProcessError:
pass
- # Add Debian/Ubuntu path
- libexecpaths.append("/usr/lib/%s/webkit2gtk-4.0" % triplet)
+
+ versions = ["4.0", "4.1"]
+ libexecpaths = []
+
+ for version in versions:
+ # Fedora paths.
+ libexecpaths.append(f"/usr/libexec/webkit2gtk-{version}")
+ # Debian/Ubuntu paths
+ libexecpaths.append(f"/usr/lib/{triplet}/webkit2gtk-{version}")
+
return which("MiniBrowser", path=os.pathsep.join(libexecpaths))
def find_webdriver(self, venv_path=None, channel=None):
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox.py b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox.py
index 964ed8337a0..e55036ecc48 100644
--- a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox.py
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/firefox.py
@@ -221,8 +221,9 @@ def run_info_extras(logger, default_prefs=None, **kwargs):
"sessionHistoryInParent": (not kwargs.get("disable_fission") or
not bool_pref("fission.disableSessionHistoryInParent")),
"swgl": bool_pref("gfx.webrender.software"),
- "privateBrowsing": (kwargs["tags"] is not None and ("privatebrowsing" in kwargs["tags"]))}
-
+ "privateBrowsing": (kwargs["tags"] is not None and ("privatebrowsing" in kwargs["tags"])),
+ "remoteAsyncEvents": bool_pref("remote.events.async.enabled"),
+ }
rv.update(run_info_browser_version(**kwargs))
return rv
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/base.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/base.py
index 45d3af3bbc9..1dba97d9476 100644
--- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/base.py
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/base.py
@@ -782,12 +782,13 @@ class CallbackHandler:
except self.unimplemented_exc:
self.logger.warning("Action %s not implemented" % action)
self._send_message(cmd_id, "complete", "error", f"Action {action} not implemented")
- except self.expected_exc:
- self.logger.debug(f"Action {action} failed with an expected exception")
- self._send_message(cmd_id, "complete", "error", f"Action {action} failed")
+ except self.expected_exc as e:
+ self.logger.debug(f"Action {action} failed with an expected exception", exc_info=True)
+ self._send_message(cmd_id, "complete", "error", f"Action {action} failed: {e!s}")
except Exception:
- self.logger.warning(f"Action {action} failed")
- self._send_message(cmd_id, "complete", "error")
+ self.logger.warning(f"Action {action} failed with an unexpected exception", exc_info=True)
+ exception_string = traceback.format_exc()
+ self._send_message(cmd_id, "complete", "error", f"Action {action} failed:\n{exception_string}")
raise
else:
self.logger.debug(f"Action {action} completed with result {result}")
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorchrome.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorchrome.py
index 6ba361ee4c5..95e367a683d 100644
--- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorchrome.py
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorchrome.py
@@ -261,8 +261,12 @@ class ChromeDriverTestharnessExecutor(WebDriverTestharnessExecutor, _SanitizerMi
# with no other browsing history.
protocol.base.set_window(test_window)
protocol.base.load("about:blank")
+ # DevTools can very rarely fail with "History cannot be pruned".
+ # The test window will be replaced in that case.
protocol.cdp.execute_cdp_command("Page.resetNavigationHistory")
- except error.NoSuchWindowException:
+ except error.WebDriverException:
+ protocol.testharness.close_windows([test_window])
+ protocol.base.set_window(protocol.testharness.runner_handle)
test_window = self.protocol.testharness.persistent_test_window = None
if not test_window:
test_window = super().get_or_create_test_window(protocol)
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
index 22aaf031a73..ca7b531227b 100644
--- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
@@ -73,12 +73,7 @@ class WebDriverBaseProtocolPart(BaseProtocolPart):
return method(script, args=args)
def set_timeout(self, timeout):
- try:
- self.webdriver.timeouts.script = timeout
- except webdriver_error.WebDriverException:
- # workaround https://bugs.chromium.org/p/chromedriver/issues/detail?id=2057
- body = {"type": "script", "ms": timeout * 1000}
- self.webdriver.send_session_command("POST", "timeouts", body)
+ self.webdriver.timeouts.script = timeout
def create_window(self, type="tab", **kwargs):
return self.webdriver.new_window(type_hint=type)
@@ -245,19 +240,23 @@ class WebDriverTestharnessProtocolPart(TestharnessProtocolPart):
def close_old_windows(self):
self.webdriver.actions.release()
- for handle in self.webdriver.handles:
- if handle not in {self.runner_handle, self.persistent_test_window}:
- self._close_window(handle)
+ self.close_windows(set(self.webdriver.handles) - {
+ self.runner_handle,
+ self.persistent_test_window,
+ })
self.webdriver.window_handle = self.runner_handle
self.reset_browser_state()
return self.runner_handle
- def _close_window(self, window_handle):
- try:
- self.webdriver.window_handle = window_handle
- self.webdriver.window.close()
- except webdriver_error.NoSuchWindowException:
- pass
+ def close_windows(self, window_handles):
+ for window_handle in window_handles:
+ try:
+ self.webdriver.window_handle = window_handle
+ remaining_windows = self.webdriver.window.close()
+ if window_handle in remaining_windows:
+ raise Exception("the window remained open after sending the window close command")
+ except webdriver_error.NoSuchWindowException:
+ pass
def reset_browser_state(self):
"""Reset browser-wide state that normally persists between tests."""
@@ -898,8 +897,19 @@ class WebDriverTestharnessExecutor(TestharnessExecutor):
protocol.loop.run_until_complete(protocol.bidi_events.unsubscribe_all())
extra = {}
- if (leak_part := getattr(protocol, "leak", None)) and (counters := leak_part.check()):
- extra["leak_counters"] = counters
+ if leak_part := getattr(protocol, "leak", None):
+ testharness_window = protocol.base.current_window
+ extra_windows = set(protocol.base.window_handles())
+ extra_windows -= {protocol.testharness.runner_handle, testharness_window}
+ protocol.testharness.close_windows(extra_windows)
+ try:
+ protocol.base.set_window(testharness_window)
+ if counters := leak_part.check():
+ extra["leak_counters"] = counters
+ except webdriver_error.NoSuchWindowException:
+ pass
+ finally:
+ protocol.base.set_window(protocol.testharness.runner_handle)
# Attempt to clean up any leftover windows, if allowed. This is
# preferable as it will blame the correct test if something goes wrong
diff --git a/tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/navigation.py b/tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/navigation.py
new file mode 100644
index 00000000000..825bca7e994
--- /dev/null
+++ b/tests/wpt/tests/webdriver/tests/bidi/input/perform_actions/navigation.py
@@ -0,0 +1,99 @@
+import asyncio
+import time
+
+import pytest
+import webdriver.bidi.error as error
+from webdriver.bidi.modules.input import Actions, get_element_origin
+
+from tests.support.keys import Keys
+from . import get_element_rect
+from .. import get_events
+
+pytestmark = pytest.mark.asyncio
+
+PAGE_CONTENT = """
+ <input></input>
+ <script>
+ "use strict;"
+
+ var allEvents = { events: [] };
+
+ const input = document.querySelector("input");
+ input.focus();
+
+ window.addEventListener("keydown", e => allEvents.events.push([e.key]));
+ window.addEventListener("mousemove", e => {
+ allEvents.events.push([
+ e.clientX,
+ e.clientY,
+ ]);
+ });
+ </script>
+"""
+
+
+async def test_key(bidi_session, inline, top_context, get_element):
+ await bidi_session.browsing_context.navigate(
+ context=top_context["context"],
+ url=inline(f"""
+ <input onkeydown="window.location = '{inline(PAGE_CONTENT)}'"/>
+ <script>
+ const input = document.querySelector("input");
+ input.focus();
+ </script>
+ """),
+ wait="complete"
+ )
+ input = await get_element("input")
+
+ actions = Actions()
+ (
+ actions.add_key()
+ .key_down("1")
+ .key_up("1")
+ .pause(1000)
+ .key_down("2")
+ .key_up("2")
+ )
+
+ await bidi_session.input.perform_actions(
+ actions=actions, context=top_context["context"]
+ )
+
+ with pytest.raises(error.NoSuchNodeException):
+ await get_element_rect(bidi_session, context=top_context, element=input)
+
+ events = await get_events(bidi_session, top_context["context"])
+ assert len(events) == 1
+ assert events[0] == ["2"]
+
+
+async def test_pointer(bidi_session, inline, top_context, get_element):
+ await bidi_session.browsing_context.navigate(
+ context=top_context["context"],
+ url=inline(
+ f"""<input onmousedown="window.location = '{inline(PAGE_CONTENT)}'"/>"""),
+ wait="complete"
+ )
+ input = await get_element("input")
+
+ actions = Actions()
+ (
+ actions.add_pointer()
+ .pointer_move(x=0, y=0, origin=get_element_origin(input))
+ .pointer_down(button=0)
+ .pointer_up(button=0)
+ .pause(1000)
+ .pointer_move(x=200, y=200)
+ )
+
+ await bidi_session.input.perform_actions(
+ actions=actions, context=top_context["context"]
+ )
+
+ with pytest.raises(error.NoSuchNodeException):
+ await get_element_rect(bidi_session, context=top_context, element=input)
+
+ events = await get_events(bidi_session, top_context["context"])
+ assert len(events) == 1
+ assert events[0] == [200, 200]
diff --git a/tests/wpt/tests/webdriver/tests/classic/fullscreen_window/fullscreen.py b/tests/wpt/tests/webdriver/tests/classic/fullscreen_window/fullscreen.py
index f6e9e879236..eb170369627 100644
--- a/tests/wpt/tests/webdriver/tests/classic/fullscreen_window/fullscreen.py
+++ b/tests/wpt/tests/webdriver/tests/classic/fullscreen_window/fullscreen.py
@@ -1,5 +1,5 @@
from tests.support.asserts import assert_error, assert_success
-from tests.support.helpers import is_fullscreen, is_maximized
+from tests.support.helpers import is_fullscreen, is_maximized, is_not_maximized
def fullscreen(session):
@@ -44,13 +44,14 @@ def test_fullscreen_from_normal_window(session, screen_size):
def test_fullscreen_from_maximized_window(session, screen_size):
assert not is_fullscreen(session)
+ original = session.window.rect
session.window.maximize()
- assert is_maximized(session)
+ assert is_maximized(session, original)
response = fullscreen(session)
assert_success(response, session.window.rect)
- assert not is_maximized(session)
+ assert is_not_maximized(session)
assert session.window.size == screen_size
diff --git a/tests/wpt/tests/webdriver/tests/classic/maximize_window/from_minimized_window.py b/tests/wpt/tests/webdriver/tests/classic/maximize_window/from_minimized_window.py
new file mode 100644
index 00000000000..ab33aeb963a
--- /dev/null
+++ b/tests/wpt/tests/webdriver/tests/classic/maximize_window/from_minimized_window.py
@@ -0,0 +1,26 @@
+from tests.support.asserts import assert_success
+from tests.support.helpers import document_hidden, is_maximized, is_not_maximized
+
+
+def maximize(session):
+ return session.transport.send(
+ "POST", "session/{session_id}/window/maximize".format(**vars(session))
+ )
+
+
+# This test is moved to a separate file to not affect other test results
+# on Wayland, since at least for Firefox restoring from minimized state
+# doesn't work.
+def test_restore_from_minimized(session):
+ assert is_not_maximized(session)
+ original = session.window.rect
+
+ session.window.minimize()
+ assert document_hidden(session)
+ assert is_not_maximized(session)
+
+ response = maximize(session)
+ assert_success(response, session.window.rect)
+
+ assert is_maximized(session, original)
+ assert not document_hidden(session)
diff --git a/tests/wpt/tests/webdriver/tests/classic/maximize_window/maximize.py b/tests/wpt/tests/webdriver/tests/classic/maximize_window/maximize.py
index 3a20a0d5589..6b9fc680b85 100644
--- a/tests/wpt/tests/webdriver/tests/classic/maximize_window/maximize.py
+++ b/tests/wpt/tests/webdriver/tests/classic/maximize_window/maximize.py
@@ -8,6 +8,7 @@ from tests.support.helpers import (
document_hidden,
is_fullscreen,
is_maximized,
+ is_not_maximized
)
@@ -27,12 +28,13 @@ def test_no_browsing_context(session, closed_frame):
def test_response_payload(session):
- assert not is_maximized(session)
+ assert is_not_maximized(session)
+ original = session.window.rect
response = maximize(session)
value = assert_success(response, session.window.rect)
- assert is_maximized(session)
+ assert is_maximized(session, original)
assert isinstance(value, dict)
assert isinstance(value.get("x"), int)
@@ -42,7 +44,8 @@ def test_response_payload(session):
def test_fully_exit_fullscreen(session):
- assert not is_maximized(session)
+ assert is_not_maximized(session)
+ original = session.window.rect
session.window.fullscreen()
assert is_fullscreen(session)
@@ -50,36 +53,24 @@ def test_fully_exit_fullscreen(session):
response = maximize(session)
assert_success(response, session.window.rect)
- assert is_maximized(session)
- assert not document_hidden(session)
-
-
-def test_restore_from_minimized(session):
- assert not is_maximized(session)
-
- session.window.minimize()
- assert document_hidden(session)
- assert not is_maximized(session)
-
- response = maximize(session)
- assert_success(response, session.window.rect)
-
- assert is_maximized(session)
+ assert is_maximized(session, original)
assert not document_hidden(session)
def test_maximize_from_normal_window(session):
- assert not is_maximized(session)
+ assert is_not_maximized(session)
+ original = session.window.rect
response = maximize(session)
assert_success(response, session.window.rect)
- assert is_maximized(session)
+ assert is_maximized(session, original)
assert not document_hidden(session)
def test_maximize_with_window_already_at_maximum_size(session, available_screen_size):
- assert not is_maximized(session)
+ assert is_not_maximized(session)
+ original = session.window.rect
# Resize the window to the maximum available size.
session.window.size = available_screen_size
@@ -93,21 +84,22 @@ def test_maximize_with_window_already_at_maximum_size(session, available_screen_
response = maximize(session)
assert_success(response, session.window.rect)
- assert is_maximized(session)
+ assert is_maximized(session, original)
assert not document_hidden(session)
def test_maximize_twice_is_idempotent(session):
- assert not is_maximized(session)
+ assert is_not_maximized(session)
+ original = session.window.rect
first_response = maximize(session)
assert_success(first_response, session.window.rect)
- assert is_maximized(session)
+ assert is_maximized(session, original)
assert not document_hidden(session)
second_response = maximize(session)
assert_success(second_response, session.window.rect)
- assert is_maximized(session)
+ assert is_maximized(session, original)
assert not document_hidden(session)
diff --git a/tests/wpt/tests/webdriver/tests/classic/minimize_window/minimize.py b/tests/wpt/tests/webdriver/tests/classic/minimize_window/minimize.py
index 2ad5333ec54..c4e15ad9a9c 100644
--- a/tests/wpt/tests/webdriver/tests/classic/minimize_window/minimize.py
+++ b/tests/wpt/tests/webdriver/tests/classic/minimize_window/minimize.py
@@ -4,7 +4,12 @@
# https://bugs.chromium.org/p/chromedriver/issues/detail?id=4642#c4
from tests.support.asserts import assert_error, assert_success
-from tests.support.helpers import document_hidden, is_fullscreen, is_maximized
+from tests.support.helpers import (
+ document_hidden,
+ is_fullscreen,
+ is_maximized,
+ is_not_maximized,
+)
def minimize(session):
@@ -52,14 +57,15 @@ def test_restore_from_fullscreen(session):
def test_restore_from_maximized(session):
assert not document_hidden(session)
+ original = session.window.rect
session.window.maximize()
- assert is_maximized(session)
+ assert is_maximized(session, original)
assert not document_hidden(session)
response = minimize(session)
assert_success(response, session.window.rect)
- assert not is_maximized(session)
+ assert is_not_maximized(session)
assert document_hidden(session)
diff --git a/tests/wpt/tests/webdriver/tests/classic/new_session/create_alwaysMatch.py b/tests/wpt/tests/webdriver/tests/classic/new_session/create_alwaysMatch.py
index 64fd0a74256..7a7f007dabb 100644
--- a/tests/wpt/tests/webdriver/tests/classic/new_session/create_alwaysMatch.py
+++ b/tests/wpt/tests/webdriver/tests/classic/new_session/create_alwaysMatch.py
@@ -13,3 +13,10 @@ def test_valid(new_session, add_browser_capabilities, key, value):
response, _ = new_session({"capabilities": {
"alwaysMatch": add_browser_capabilities({key: value})}})
assert_success(response)
+ response_capabilities = response.body["value"]["capabilities"]
+ if ":" not in key and value is not None:
+ if key == "timeouts":
+ for timeout_key, timeout_value in value.items():
+ assert response_capabilities[key][timeout_key] == timeout_value
+ else:
+ assert response_capabilities[key] == value
diff --git a/tests/wpt/tests/webdriver/tests/classic/new_session/create_firstMatch.py b/tests/wpt/tests/webdriver/tests/classic/new_session/create_firstMatch.py
index d4523f4330c..22c74bcfbd7 100644
--- a/tests/wpt/tests/webdriver/tests/classic/new_session/create_firstMatch.py
+++ b/tests/wpt/tests/webdriver/tests/classic/new_session/create_firstMatch.py
@@ -14,3 +14,10 @@ def test_valid(new_session, add_browser_capabilities, key, value):
response, _ = new_session({"capabilities": {
"firstMatch": [add_browser_capabilities({key: value})]}})
assert_success(response)
+ response_capabilities = response.body["value"]["capabilities"]
+ if ":" not in key and value is not None:
+ if key == "timeouts":
+ for timeout_key, timeout_value in value.items():
+ assert response_capabilities[key][timeout_key] == timeout_value
+ else:
+ assert response_capabilities[key] == value
diff --git a/tests/wpt/tests/webdriver/tests/classic/set_window_rect/set.py b/tests/wpt/tests/webdriver/tests/classic/set_window_rect/set.py
index 9e15d02b0d1..51cddffed51 100644
--- a/tests/wpt/tests/webdriver/tests/classic/set_window_rect/set.py
+++ b/tests/wpt/tests/webdriver/tests/classic/set_window_rect/set.py
@@ -5,12 +5,15 @@
import pytest
-import mozinfo
-
from webdriver.transport import Response
from tests.support.asserts import assert_error, assert_success
-from tests.support.helpers import is_fullscreen, is_maximized
+from tests.support.helpers import (
+ is_fullscreen,
+ is_maximized,
+ is_not_maximized,
+ is_wayland,
+)
def set_window_rect(session, rect):
@@ -116,7 +119,7 @@ def test_restore_from_fullscreen(session):
def test_restore_from_maximized(session):
- assert not is_maximized(session)
+ assert is_not_maximized(session)
original = session.window.rect
target_rect = {
@@ -127,12 +130,12 @@ def test_restore_from_maximized(session):
}
session.window.maximize()
- assert is_maximized(session)
+ assert is_maximized(session, original)
response = set_window_rect(session, target_rect)
value = assert_success(response, session.window.rect)
- assert not is_maximized(session)
+ assert is_not_maximized(session)
assert value == target_rect
@@ -141,7 +144,7 @@ def test_x_y_floats(session):
value = assert_success(response)
# Wayland doesn't return correct coordinates after changing window position.
- if mozinfo.display != "wayland":
+ if not is_wayland():
assert value["x"] == 150
assert value["y"] == 250
@@ -149,7 +152,7 @@ def test_x_y_floats(session):
value = assert_success(response, session.window.rect)
# Wayland doesn't return correct coordinates after changing window position.
- if mozinfo.display != "wayland":
+ if not is_wayland():
assert value["x"] == 150
assert value["y"] == 250
@@ -215,7 +218,7 @@ def test_set_to_available_size(
value = assert_success(response, session.window.rect)
# Wayland doesn't return correct coordinates after changing window position.
- if mozinfo.display != "wayland":
+ if not is_wayland():
assert value == target_rect
else:
target_rect["width"] == available_width
@@ -335,7 +338,7 @@ def test_x_y(session):
assert value["height"] == original["height"]
# Wayland doesn't return correct coordinates after changing window position.
- if mozinfo.display != "wayland":
+ if not is_wayland():
assert value["x"] == original["x"] + 10
assert value["y"] == original["y"] + 10
@@ -369,7 +372,7 @@ def test_x_as_current(session):
assert value["height"] == original["height"]
# Wayland doesn't return correct coordinates after changing window position.
- if mozinfo.display != "wayland":
+ if not is_wayland():
assert value["x"] == original["x"]
assert value["y"] == original["y"] + 10
@@ -386,7 +389,7 @@ def test_y_as_current(session):
assert value["width"] == original["width"]
assert value["height"] == original["height"]
# Wayland doesn't return correct coordinates after changing window position.
- if mozinfo.display != "wayland":
+ if not is_wayland():
assert value["x"] == original["x"] + 10
assert value["y"] == original["y"]
@@ -404,7 +407,7 @@ def test_negative_x_y(session, minimal_screen_position):
assert value["height"] == original["height"]
# Wayland doesn't return correct coordinates after changing window position.
- if mozinfo.display != "wayland":
+ if not is_wayland():
assert value["x"] <= 0
assert value["y"] <= 0
diff --git a/tests/wpt/tests/webdriver/tests/support/helpers.py b/tests/wpt/tests/webdriver/tests/support/helpers.py
index 0ca5bd28269..1cb5b801da2 100644
--- a/tests/wpt/tests/webdriver/tests/support/helpers.py
+++ b/tests/wpt/tests/webdriver/tests/support/helpers.py
@@ -1,6 +1,7 @@
import collections
import math
import sys
+import os
from urllib.parse import urlparse
import webdriver
@@ -208,7 +209,7 @@ def is_fullscreen(session):
""")
-def is_maximized(session):
+def _get_maximized_state(session):
dimensions = session.execute_script("""
return {
availWidth: screen.availWidth,
@@ -218,16 +219,48 @@ def is_maximized(session):
}
""")
- return (
- # The maximized window can still have a border attached which would
- # cause its dimensions to exceed the whole available screen.
- dimensions["windowWidth"] >= dimensions["availWidth"] and
+ # The maximized window can still have a border attached which would
+ # cause its dimensions to exceed the whole available screen.
+ return (dimensions["windowWidth"] >= dimensions["availWidth"] and
dimensions["windowHeight"] >= dimensions["availHeight"] and
# Only return true if the window is not in fullscreen mode
not is_fullscreen(session)
)
+def is_maximized(session, original_rect):
+ if _get_maximized_state(session):
+ return True
+
+ # Wayland doesn't guarantee that the window will get maximized
+ # to the screen, so check if the dimensions got larger.
+ elif is_wayland():
+ dimensions = session.execute_script("""
+ return {
+ windowWidth: window.outerWidth,
+ windowHeight: window.outerHeight,
+ }
+ """)
+ return (
+ dimensions["windowWidth"] > original_rect["width"] and
+ dimensions["windowHeight"] > original_rect["height"] and
+ # Only return true if the window is not in fullscreen mode
+ not is_fullscreen(session)
+ )
+ else:
+ return False
+
+
+def is_not_maximized(session):
+ return not _get_maximized_state(session)
+
+
+def is_wayland():
+ # We don't use mozinfo.display here to make sure it also
+ # works upstream in wpt Github repo.
+ return os.environ.get("WAYLAND_DISPLAY", "") != ""
+
+
def filter_dict(source, d):
"""Filter `source` dict to only contain same keys as `d` dict.
diff --git a/tests/wpt/tests/webnn/conformance_tests/byob_readtensor.https.any.js b/tests/wpt/tests/webnn/conformance_tests/byob_readtensor.https.any.js
index f43cca0ea4e..97bd666fa2c 100644
--- a/tests/wpt/tests/webnn/conformance_tests/byob_readtensor.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/byob_readtensor.https.any.js
@@ -95,6 +95,23 @@ promise_test(async () => {
}, `readTensor() with an ArrayBuffer`);
promise_test(async () => {
+ const sharedArrayBuffer = new SharedArrayBuffer(testContents.byteLength);
+
+ await mlContext.readTensor(mlTensor, sharedArrayBuffer);
+
+ assert_array_equals(new Uint32Array(sharedArrayBuffer), testContents);
+}, `readTensor() with a SharedArrayBuffer`);
+
+promise_test(async () => {
+ const sharedArrayBuffer = new SharedArrayBuffer(testContents.byteLength);
+ const typedArray = new Uint32Array(sharedArrayBuffer);
+
+ await mlContext.readTensor(mlTensor, typedArray);
+
+ assert_array_equals(typedArray, testContents);
+}, `readTensor() with a typeArray from a SharedArrayBuffer`);
+
+promise_test(async () => {
// Create a slightly larger ArrayBuffer and set up the TypedArray at an
// offset to make sure the MLTensor contents are written to the correct
// offset.
diff --git a/tests/wpt/tests/webnn/conformance_tests/byob_readtensor.https.any.js.headers b/tests/wpt/tests/webnn/conformance_tests/byob_readtensor.https.any.js.headers
new file mode 100644
index 00000000000..5f8621ef836
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/byob_readtensor.https.any.js.headers
@@ -0,0 +1,2 @@
+Cross-Origin-Embedder-Policy: require-corp
+Cross-Origin-Opener-Policy: same-origin
diff --git a/tests/wpt/tests/webnn/conformance_tests/dequantizeLinear.https.any.js b/tests/wpt/tests/webnn/conformance_tests/dequantizeLinear.https.any.js
index 8a04d0e6b8a..73dd916b976 100644
--- a/tests/wpt/tests/webnn/conformance_tests/dequantizeLinear.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/dequantizeLinear.https.any.js
@@ -32,6 +32,43 @@ const dequantizeLinearTests = [
'dequantizeLinearInput': {
'data': [123],
'descriptor': {shape: [], dataType: 'int8'},
+ 'constant': false
+ },
+ 'dequantizeLinearScale': {
+ 'data': [1.1202747821807861],
+ 'descriptor': {shape: [], dataType: 'float32'},
+ 'constant': true
+ },
+ 'dequantizeLinearZeroPoint': {
+ 'data': [3],
+ 'descriptor': {shape: [], dataType: 'int8'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'dequantizeLinear',
+ 'arguments': [
+ {'input': 'dequantizeLinearInput'},
+ {'scale': 'dequantizeLinearScale'},
+ {'zeroPoint': 'dequantizeLinearZeroPoint'}
+ ],
+ 'outputs': 'dequantizeLinearOutput'
+ }],
+ 'expectedOutputs': {
+ 'dequantizeLinearOutput': {
+ 'data': [134.43296813964844],
+ 'descriptor': {shape: [], dataType: 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'dequantizeLinear constant input',
+ 'graph': {
+ 'inputs': {
+ 'dequantizeLinearInput': {
+ 'data': [123],
+ 'descriptor': {shape: [], dataType: 'int8'},
'constant': true
},
'dequantizeLinearScale': {
diff --git a/tests/wpt/tests/webnn/conformance_tests/tensor.https.any.js b/tests/wpt/tests/webnn/conformance_tests/tensor.https.any.js
index 0bc51614608..582ecdb9d68 100644
--- a/tests/wpt/tests/webnn/conformance_tests/tensor.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/tensor.https.any.js
@@ -167,51 +167,63 @@ const testWriteTensor = (testName) => {
promise_test(async () => {
const tensorDescriptor = {
dataType: 'int32',
- shape: [1],
+ shape: [4],
+ readable: true,
writable: true,
};
- let mlTensor = await mlContext.createTensor(tensorDescriptor);
-
const tensorByteLength = sizeOfDescriptor(tensorDescriptor);
- let arrayBuffer = new ArrayBuffer(tensorByteLength);
- // Writing with a size that goes past that source tensor length.
- assert_throws_js(
- TypeError,
- () => mlContext.writeTensor(
- mlTensor, new Uint8Array(arrayBuffer), /*srcOffset=*/ 0,
- /*srcSize=*/ tensorByteLength + 1));
- assert_throws_js(
- TypeError,
- () => mlContext.writeTensor(
- mlTensor, new Uint8Array(arrayBuffer), /*srcOffset=*/ 3,
- /*srcSize=*/ tensorByteLength));
+ // Required to use SharedArrayBuffer.
+ assert_true(
+ self.crossOriginIsolated,
+ 'The page is served with COOP and COEP, it should be cross-origin-isolated.');
- // Writing with a source offset that is out of range of the source size.
- assert_throws_js(
- TypeError,
- () => mlContext.writeTensor(
- mlTensor, new Uint8Array(arrayBuffer),
- /*srcOffset=*/ tensorByteLength + 1));
+ let arrayBuffer = new ArrayBuffer(tensorByteLength);
+ let arrayBufferView = new Int32Array(arrayBuffer);
+ arrayBufferView.fill(7);
+
+ let sharedArrayBuffer = new SharedArrayBuffer(tensorByteLength);
+ let sharedArrayBufferView = new Int32Array(sharedArrayBuffer);
+ sharedArrayBufferView.fill(7);
+
+ const tensors = await Promise.all([
+ mlContext.createTensor(tensorDescriptor),
+ mlContext.createTensor(tensorDescriptor),
+ mlContext.createTensor(tensorDescriptor),
+ mlContext.createTensor(tensorDescriptor)
+ ]);
+
+ mlContext.writeTensor(tensors[0], arrayBuffer);
+ mlContext.writeTensor(tensors[2], arrayBufferView);
+ mlContext.writeTensor(tensors[1], sharedArrayBuffer);
+ mlContext.writeTensor(tensors[3], sharedArrayBufferView);
+
+ await Promise.all(tensors.map(async (tensor) => {
+ assert_tensor_data_equals(mlContext, tensor, arrayBufferView);
+ }));
+ }, `${testName} / write with different kinds of buffers`);
- // Writing with a source offset that is out of range of implicit copy size.
- assert_throws_js(
- TypeError,
- () => mlContext.writeTensor(
- mlTensor, new Uint8Array(arrayBuffer),
- /*srcOffset=*/ tensorByteLength + 1, /*srcSize=*/ undefined));
+ promise_test(async () => {
+ const tensorDescriptor = {
+ dataType: 'int32',
+ shape: [1],
+ writable: true,
+ };
+ let mlTensor = await mlContext.createTensor(tensorDescriptor);
+
+ const tensorByteLength = sizeOfDescriptor(tensorDescriptor);
+ // Writing with a buffer larger than the source tensor.
assert_throws_js(
TypeError,
() => mlContext.writeTensor(
- mlTensor, new Uint8Array(arrayBuffer), /*srcOffset=*/ undefined,
- /*srcSize=*/ tensorByteLength + 1));
-
+ mlTensor, new ArrayBuffer(tensorByteLength + 1)));
+ // Writing with a buffer smaller than the source tensor.
assert_throws_js(
TypeError,
() => mlContext.writeTensor(
- mlTensor, Uint8Array.from([0xEE, 0xEE, 0xEE, 0xEE, 0xEE])));
- }, `${testName} / error`);
+ mlTensor, new ArrayBuffer(tensorByteLength - 1)));
+ }, `${testName} / write with buffer of wrong size`);
promise_test(async () => {
const tensorDescriptor = {
@@ -252,26 +264,15 @@ const testWriteTensor = (testName) => {
promise_test(async () => {
let mlTensor = await mlContext.createTensor({
dataType: 'int32',
- shape: [1],
+ shape: [],
readable: true,
writable: true,
});
- // Initialize the tensor.
- const inputData = Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA]);
+ const inputData = Int32Array.from([0xAAAABBBB]);
mlContext.writeTensor(mlTensor, inputData);
-
- // Writing zero bytes from a zero write size.
- mlContext.writeTensor(mlTensor, Uint8Array.from([0xBB]), 0, 0);
-
- await assert_tensor_data_equals(mlContext, mlTensor, inputData);
-
- // Writing zero bytes at the end of the tensor.
- mlContext.writeTensor(
- mlTensor, Uint32Array.from([0xBBBBBBBB]), /*srcOffset=*/ 1);
-
await assert_tensor_data_equals(mlContext, mlTensor, inputData);
- }, `${testName} / zero_write`);
+ }, `${testName} / scalar`);
promise_test(async () => {
const tensorDescriptor = {
@@ -285,17 +286,17 @@ const testWriteTensor = (testName) => {
const tensorByteLength = sizeOfDescriptor(tensorDescriptor);
let inputBuffer = new ArrayBuffer(tensorByteLength);
- // Initialize the tensor.
const int32View = new Int32Array(inputBuffer);
int32View.fill(0xBBBBBBBB);
mlContext.writeTensor(mlTensor, int32View);
- // Writing to a detached buffer should be ignored.
+ // Writing to a detached buffer should fail.
const detachedBuffer = inputBuffer.transfer();
assert_true(inputBuffer.detached, 'array buffer should be detached.');
- mlContext.writeTensor(mlTensor, inputBuffer);
+ assert_throws_js(
+ TypeError, () => mlContext.writeTensor(mlTensor, inputBuffer));
await assert_tensor_data_equals(
mlContext, mlTensor, new Int32Array(detachedBuffer));
@@ -373,89 +374,14 @@ const testReadTensor = (testName) => {
writable: true,
});
- // Initialize the tensor.
mlContext.writeTensor(mlTensor, Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA]));
+ // Write over previously-written data.
mlContext.writeTensor(mlTensor, Uint32Array.from([0xBBBBBBBB]));
await assert_tensor_data_equals(
mlContext, mlTensor, Uint32Array.from([0xBBBBBBBB]));
;
- }, `${testName} / full_size`);
-
- promise_test(async () => {
- let mlTensor = await mlContext.createTensor({
- dataType: 'int32',
- shape: [1],
- readable: true,
- writable: true,
- });
-
- // Initialize the tensor.
- mlContext.writeTensor(mlTensor, Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA]));
-
- // Writing to the remainder of the tensor from source offset.
- mlContext.writeTensor(
- mlTensor, Uint8Array.from([0xCC, 0xCC, 0xBB, 0xBB]),
- /*srcOffset=*/ 2);
- await assert_tensor_data_equals(
- mlContext, mlTensor, Uint8Array.from([0xBB, 0xBB, 0xAA, 0xAA]));
- }, `${testName} / src_offset_only`);
-
- promise_test(async () => {
- let mlTensor = await mlContext.createTensor({
- dataType: 'int32',
- shape: [1],
- readable: true,
- writable: true,
- });
-
- // Initialize the tensor.
- mlContext.writeTensor(mlTensor, Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA]));
-
- // Writing with both a source offset and size.
- mlContext.writeTensor(
- mlTensor, Uint8Array.from([0xDD, 0xDD, 0xCC, 0xDD]),
- /*srcOffset=*/ 2, /*srcSize=*/ 1);
- await assert_tensor_data_equals(
- mlContext, mlTensor, Uint8Array.from([0xCC, 0xAA, 0xAA, 0xAA]));
- }, `${testName} / src_offset_and_size`);
-
- promise_test(async () => {
- let mlTensor = await mlContext.createTensor({
- dataType: 'int32',
- shape: [1],
- readable: true,
- writable: true,
- });
-
- // Initialize the tensor.
- mlContext.writeTensor(mlTensor, Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA]));
-
- // Using an offset allows a larger source tensor to fit.
- mlContext.writeTensor(
- mlTensor, Uint8Array.from([0xEE, 0xEE, 0xEE, 0xEE, 0xEE]),
- /*srcOffset=*/ 1);
- await assert_tensor_data_equals(
- mlContext, mlTensor, Uint8Array.from([0xEE, 0xEE, 0xEE, 0xEE]));
- }, `${testName} / larger_src_data`);
-
- promise_test(async () => {
- let mlTensor = await mlContext.createTensor({
- dataType: 'int32',
- shape: [1],
- readable: true,
- writable: true,
- });
-
- const inputData = [0xAA, 0xAA, 0xAA, 0xAA];
-
- // Writing with a source offset of undefined should be treated as 0.
- mlContext.writeTensor(
- mlTensor, Uint8Array.from(inputData), /*srcOffset=*/ undefined,
- /*srcSize=*/ inputData.length);
- await assert_tensor_data_equals(
- mlContext, mlTensor, Uint8Array.from(inputData));
- }, `${testName} / no_src_offset`);
+ }, `${testName} / overwrite`);
promise_test(async t => {
const tensorDescriptor = {
diff --git a/tests/wpt/tests/webnn/conformance_tests/tensor.https.any.js.headers b/tests/wpt/tests/webnn/conformance_tests/tensor.https.any.js.headers
new file mode 100644
index 00000000000..5f8621ef836
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/tensor.https.any.js.headers
@@ -0,0 +1,2 @@
+Cross-Origin-Embedder-Policy: require-corp
+Cross-Origin-Opener-Policy: same-origin
diff --git a/tests/wpt/tests/webnn/resources/utils.js b/tests/wpt/tests/webnn/resources/utils.js
index 973c16baca7..112d4877486 100644
--- a/tests/wpt/tests/webnn/resources/utils.js
+++ b/tests/wpt/tests/webnn/resources/utils.js
@@ -26,7 +26,7 @@ const getSoftmaxPrecisionTolerance =
if (inputs[inputIndex]) {
inputShape = inputs[inputIndex].descriptor.shape;
} else {
- inputShape = intermediateOperands[inputIndex].shape();
+ inputShape = intermediateOperands[inputIndex].shape;
}
const axis = args.length === 2 ? args[1][Object.keys(args[1])[0]] : 1;
const tolerance = inputShape[axis] * 3 + 3;
@@ -132,10 +132,10 @@ const assertDescriptorsEquals = (outputOperand, expected) => {
const dataType =
expected.castedType ? expected.castedType : expected.dataType;
assert_true(
- outputOperand.dataType() === dataType,
+ outputOperand.dataType === dataType,
'actual output dataType should be equal to expected output dataType');
assert_array_equals(
- outputOperand.shape(), expected.shape,
+ outputOperand.shape, expected.shape,
'actual output shape should be equal to expected output shape');
};
@@ -634,7 +634,7 @@ const getGemmPrecisionTolerance =
if (inputs[indexA]) {
ShapeA = inputs[indexA].descriptor.shape;
} else {
- ShapeA = intermediateOperands[indexA].shape();
+ ShapeA = intermediateOperands[indexA].shape;
}
const options =
args.length === 3 ? {...args[2][Object.keys(args[2])[0]]} : {};
@@ -671,13 +671,13 @@ const getConv2dPrecisionTolerance =
if (inputs[inputIndex]) {
inputShape = inputs[inputIndex].descriptor.shape;
} else {
- inputShape = intermediateOperands[inputIndex].shape();
+ inputShape = intermediateOperands[inputIndex].shape;
}
let filterShape;
if (inputs[filterIndex]) {
filterShape = inputs[filterIndex].descriptor.shape;
} else {
- filterShape = intermediateOperands[filterIndex].shape();
+ filterShape = intermediateOperands[filterIndex].shape;
}
const options =
args.length === 3 ? {...args[2][Object.keys(args[2])[0]]} : {};
diff --git a/tests/wpt/tests/webnn/resources/utils_validation.js b/tests/wpt/tests/webnn/resources/utils_validation.js
index f491801bf3a..0f07b777def 100644
--- a/tests/wpt/tests/webnn/resources/utils_validation.js
+++ b/tests/wpt/tests/webnn/resources/utils_validation.js
@@ -438,8 +438,8 @@ function validateUnaryOperation(operationName, supportedDataTypes, label) {
const input = builder.input(`input`, {dataType, shape});
assert_equals(typeof builder[operationName], 'function');
const output = builder[operationName](input);
- assert_equals(output.dataType(), dataType);
- assert_array_equals(output.shape(), shape);
+ assert_equals(output.dataType, dataType);
+ assert_array_equals(output.shape, shape);
}
}
}, `[${operationName}] Test building an unary operator with supported type.`);
@@ -484,8 +484,8 @@ function validateSingleInputOperation(operationName, label) {
for (let shape of allWebNNShapesArray) {
const input = builder.input(`input`, {dataType, shape});
const output = builder[operationName](input);
- assert_equals(output.dataType(), dataType);
- assert_array_equals(output.shape(), shape);
+ assert_equals(output.dataType, dataType);
+ assert_array_equals(output.shape, shape);
}
}
}, `[${operationName}] Test building the operator with supported data type.`);
diff --git a/tests/wpt/tests/webnn/validation_tests/argMinMax.https.any.js b/tests/wpt/tests/webnn/validation_tests/argMinMax.https.any.js
index abd4e878a2a..a6c74f1fb41 100644
--- a/tests/wpt/tests/webnn/validation_tests/argMinMax.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/argMinMax.https.any.js
@@ -74,8 +74,8 @@ function runTests(operatorName, tests) {
if (context.opSupportLimits()[operatorName].output.dataTypes.includes(
test.options.outputDataType)) {
const output = builder[operatorName](input, axis, test.options);
- assert_equals(output.dataType(), test.options.outputDataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.options.outputDataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
assert_throws_js(
TypeError, () => builder[operatorName](input, axis, test.options));
@@ -84,8 +84,8 @@ function runTests(operatorName, tests) {
}
if (test.output) {
const output = builder[operatorName](input, axis, test.options);
- assert_equals(output.dataType(), 'int32');
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, 'int32');
+ assert_array_equals(output.shape, test.output.shape);
} else {
const regrexp = /\[arg_min_max_1_\!\]/;
assert_throws_with_label(
diff --git a/tests/wpt/tests/webnn/validation_tests/batchNormalization.https.any.js b/tests/wpt/tests/webnn/validation_tests/batchNormalization.https.any.js
index 636f803ecb7..d503899a193 100644
--- a/tests/wpt/tests/webnn/validation_tests/batchNormalization.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/batchNormalization.https.any.js
@@ -267,8 +267,8 @@ tests.forEach(
if (test.output) {
const output =
builder.batchNormalization(input, mean, variance, test.options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const regrexp = /\[batchNormalization_\?_123\]/;
assert_throws_with_label(
diff --git a/tests/wpt/tests/webnn/validation_tests/clamp.https.any.js b/tests/wpt/tests/webnn/validation_tests/clamp.https.any.js
index e76092daf43..787c40fea60 100644
--- a/tests/wpt/tests/webnn/validation_tests/clamp.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/clamp.https.any.js
@@ -18,8 +18,8 @@ promise_test(async t => {
const options = {minValue: 1.0, maxValue: 3.0};
const input = builder.input('input', {dataType: 'float32', shape: [1, 2, 3]});
const output = builder.clamp(input, options);
- assert_equals(output.dataType(), 'float32');
- assert_array_equals(output.shape(), [1, 2, 3]);
+ assert_equals(output.dataType, 'float32');
+ assert_array_equals(output.shape, [1, 2, 3]);
}, '[clamp] Build with options');
promise_test(async t => {
@@ -28,8 +28,8 @@ promise_test(async t => {
const input =
builder.input('input', {dataType: 'float32', shape: [1, 2, 3, 4]});
const output = builder.clamp(input, options);
- assert_equals(output.dataType(), 'float32');
- assert_array_equals(output.shape(), [1, 2, 3, 4]);
+ assert_equals(output.dataType, 'float32');
+ assert_array_equals(output.shape, [1, 2, 3, 4]);
}, '[clamp] Build with options.minValue == options.maxValue');
promise_test(async t => {
diff --git a/tests/wpt/tests/webnn/validation_tests/concat.https.any.js b/tests/wpt/tests/webnn/validation_tests/concat.https.any.js
index 65c56a84246..6ccac4e7e8b 100644
--- a/tests/wpt/tests/webnn/validation_tests/concat.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/concat.https.any.js
@@ -97,8 +97,8 @@ tests.forEach(
}
if (test.output) {
const output = builder.concat(inputs, test.axis);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const options = {label};
const regrexp = new RegExp('\\[' + label + '\\]');
diff --git a/tests/wpt/tests/webnn/validation_tests/constant.https.any.js b/tests/wpt/tests/webnn/validation_tests/constant.https.any.js
index fc0243197db..dccb41d4b24 100644
--- a/tests/wpt/tests/webnn/validation_tests/constant.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/constant.https.any.js
@@ -129,8 +129,8 @@ tests.forEach(
const bufferView = new test.bufferView.type(buffer);
if (test.output) {
const constantOperand = builder.constant(test.descriptor, bufferView);
- assert_equals(constantOperand.dataType(), test.output.dataType);
- assert_array_equals(constantOperand.shape(), test.output.shape);
+ assert_equals(constantOperand.dataType, test.output.dataType);
+ assert_array_equals(constantOperand.shape, test.output.shape);
} else {
assert_throws_js(
TypeError, () => builder.constant(test.descriptor, bufferView));
diff --git a/tests/wpt/tests/webnn/validation_tests/conv2d.https.any.js b/tests/wpt/tests/webnn/validation_tests/conv2d.https.any.js
index 405538ff4d8..eda93e38b2b 100644
--- a/tests/wpt/tests/webnn/validation_tests/conv2d.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/conv2d.https.any.js
@@ -550,8 +550,8 @@ tests.forEach(
context.opSupportLimits().conv2d.input.dataTypes.includes(
test.input.dataType)) {
const output = builder.conv2d(input, filter, test.options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const regrexp = /\[conv_2d_\*\]/;
assert_throws_with_label(
diff --git a/tests/wpt/tests/webnn/validation_tests/convTranspose2d.https.any.js b/tests/wpt/tests/webnn/validation_tests/convTranspose2d.https.any.js
index c128903e9cc..cafb0e86e44 100644
--- a/tests/wpt/tests/webnn/validation_tests/convTranspose2d.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/convTranspose2d.https.any.js
@@ -565,8 +565,8 @@ tests.forEach(
context.opSupportLimits().convTranspose2d.input.dataTypes.includes(
test.input.dataType)) {
const output = builder.convTranspose2d(input, filter, test.options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const regrexp = new RegExp('\\[' + label + '\\]');
assert_throws_with_label(
diff --git a/tests/wpt/tests/webnn/validation_tests/cumulativeSum.https.any.js b/tests/wpt/tests/webnn/validation_tests/cumulativeSum.https.any.js
index 6381d674ab4..9e6a22d825b 100644
--- a/tests/wpt/tests/webnn/validation_tests/cumulativeSum.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/cumulativeSum.https.any.js
@@ -62,8 +62,8 @@ tests.forEach(
}
if (test.output) {
const output = builder.cumulativeSum(input, test.axis, options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const label = 'cumulative_sum';
options.label = label;
diff --git a/tests/wpt/tests/webnn/validation_tests/dequantizeLinear.https.any.js b/tests/wpt/tests/webnn/validation_tests/dequantizeLinear.https.any.js
index a5e6c8ea50e..d0dd2c15dff 100644
--- a/tests/wpt/tests/webnn/validation_tests/dequantizeLinear.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/dequantizeLinear.https.any.js
@@ -83,8 +83,8 @@ tests.forEach(
const zeroPoint = builder.input('zeroPoint', test.zeroPoint);
if (test.output) {
const output = builder.dequantizeLinear(input, scale, zeroPoint);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const label = 'dequantize_linear_123';
const options = {label};
diff --git a/tests/wpt/tests/webnn/validation_tests/elementwise-binary.https.any.js b/tests/wpt/tests/webnn/validation_tests/elementwise-binary.https.any.js
index e578a343468..32777f84681 100644
--- a/tests/wpt/tests/webnn/validation_tests/elementwise-binary.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/elementwise-binary.https.any.js
@@ -73,8 +73,8 @@ function runElementWiseBinaryTests(operatorName, tests) {
if (test.output) {
const output = builder[operatorName](a, b);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const options = {label};
assert_throws_with_label(
diff --git a/tests/wpt/tests/webnn/validation_tests/elu.https.any.js b/tests/wpt/tests/webnn/validation_tests/elu.https.any.js
index 4fe08b1b0ce..5ddcdaf8484 100644
--- a/tests/wpt/tests/webnn/validation_tests/elu.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/elu.https.any.js
@@ -19,8 +19,8 @@ promise_test(async t => {
const options = {alpha: 1.0};
const input = builder.input('input', {dataType: 'float32', shape: [1, 2, 3]});
const output = builder.elu(input, options);
- assert_equals(output.dataType(), 'float32');
- assert_array_equals(output.shape(), [1, 2, 3]);
+ assert_equals(output.dataType, 'float32');
+ assert_array_equals(output.shape, [1, 2, 3]);
}, '[elu] Build with options');
promise_test(async t => {
diff --git a/tests/wpt/tests/webnn/validation_tests/expand.https.any.js b/tests/wpt/tests/webnn/validation_tests/expand.https.any.js
index 23fe94aedc1..c9c60358917 100644
--- a/tests/wpt/tests/webnn/validation_tests/expand.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/expand.https.any.js
@@ -71,8 +71,8 @@ tests.forEach(
if (test.output) {
const output = builder.expand(input, test.newShape);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const options = {...test.options};
if (options.label) {
@@ -97,8 +97,8 @@ promise_test(async t => {
const input = builder.input(`input`, {dataType, shape});
if (context.opSupportLimits().expand.input.dataTypes.includes(dataType)) {
const output = builder.expand(input, newShape);
- assert_equals(output.dataType(), dataType);
- assert_array_equals(output.shape(), newShape);
+ assert_equals(output.dataType, dataType);
+ assert_array_equals(output.shape, newShape);
} else {
assert_throws_js(TypeError, () => builder.expand(input, newShape));
}
diff --git a/tests/wpt/tests/webnn/validation_tests/gather.https.any.js b/tests/wpt/tests/webnn/validation_tests/gather.https.any.js
index dbeacbfc279..e4a46a90d4b 100644
--- a/tests/wpt/tests/webnn/validation_tests/gather.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/gather.https.any.js
@@ -74,8 +74,8 @@ tests.forEach(
if (test.output) {
const output = builder.gather(input, indices, options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const label = 'gather_'
options.label = label;
diff --git a/tests/wpt/tests/webnn/validation_tests/gatherElements.https.any.js b/tests/wpt/tests/webnn/validation_tests/gatherElements.https.any.js
index 4c4b04490e8..e30e4a5a13b 100644
--- a/tests/wpt/tests/webnn/validation_tests/gatherElements.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/gatherElements.https.any.js
@@ -64,8 +64,8 @@ tests.forEach(
if (test.output) {
const output = builder.gatherElements(input, indices, options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const label = 'gatherElements_'
options.label = label;
diff --git a/tests/wpt/tests/webnn/validation_tests/gatherND.https.any.js b/tests/wpt/tests/webnn/validation_tests/gatherND.https.any.js
index a8bfa2b336b..697dda00776 100644
--- a/tests/wpt/tests/webnn/validation_tests/gatherND.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/gatherND.https.any.js
@@ -46,8 +46,8 @@ tests.forEach(test => promise_test(async t => {
context.opSupportLimits().gatherND.input.dataTypes.includes(
test.input.dataType)) {
const output = builder.gatherND(input, indices);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const label = 'gatherND_';
const options = {label: label};
diff --git a/tests/wpt/tests/webnn/validation_tests/gemm.https.any.js b/tests/wpt/tests/webnn/validation_tests/gemm.https.any.js
index cad1806b5ff..6115003d039 100644
--- a/tests/wpt/tests/webnn/validation_tests/gemm.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/gemm.https.any.js
@@ -164,8 +164,8 @@ tests.forEach(
}
if (test.output) {
const output = builder.gemm(a, b, test.options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const regrexp = new RegExp('\\[' + label + '\\]');
assert_throws_with_label(
diff --git a/tests/wpt/tests/webnn/validation_tests/gru.https.any.js b/tests/wpt/tests/webnn/validation_tests/gru.https.any.js
index 158384a4b78..e074a27648f 100644
--- a/tests/wpt/tests/webnn/validation_tests/gru.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/gru.https.any.js
@@ -300,8 +300,8 @@ tests.forEach(
options);
assert_equals(outputs.length, test.outputs.length);
for (let i = 0; i < outputs.length; ++i) {
- assert_equals(outputs[i].dataType(), test.outputs[i].dataType);
- assert_array_equals(outputs[i].shape(), test.outputs[i].shape);
+ assert_equals(outputs[i].dataType, test.outputs[i].dataType);
+ assert_array_equals(outputs[i].shape, test.outputs[i].shape);
}
} else {
const label = 'gru_xxx';
diff --git a/tests/wpt/tests/webnn/validation_tests/gruCell.https.any.js b/tests/wpt/tests/webnn/validation_tests/gruCell.https.any.js
index 7bbb9afcff0..b176b379330 100644
--- a/tests/wpt/tests/webnn/validation_tests/gruCell.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/gruCell.https.any.js
@@ -298,8 +298,8 @@ tests.forEach(
const output = builder.gruCell(
input, weight, recurrentWeight, hiddenState, test.hiddenSize,
options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const label = 'gru_cell_xxx';
options.label = label;
diff --git a/tests/wpt/tests/webnn/validation_tests/hardSigmoid.https.any.js b/tests/wpt/tests/webnn/validation_tests/hardSigmoid.https.any.js
index 8134863a311..f3a9ea0ba0e 100644
--- a/tests/wpt/tests/webnn/validation_tests/hardSigmoid.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/hardSigmoid.https.any.js
@@ -18,8 +18,8 @@ promise_test(async t => {
const options = {alpha: 0.5, beta: 1.0};
const input = builder.input('input', {dataType: 'float16', shape: [1, 2, 3]});
const output = builder.hardSigmoid(input, options);
- assert_equals(output.dataType(), 'float16');
- assert_array_equals(output.shape(), [1, 2, 3]);
+ assert_equals(output.dataType, 'float16');
+ assert_array_equals(output.shape, [1, 2, 3]);
}, '[hardSigmoid] Test building with options');
promise_test(async t => {
diff --git a/tests/wpt/tests/webnn/validation_tests/input.https.any.js b/tests/wpt/tests/webnn/validation_tests/input.https.any.js
index b5b257d8bb0..cc60c445670 100644
--- a/tests/wpt/tests/webnn/validation_tests/input.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/input.https.any.js
@@ -58,8 +58,8 @@ tests.forEach(
const builder = new MLGraphBuilder(context);
if (test.output) {
const inputOperand = builder.input(test.name, test.descriptor);
- assert_equals(inputOperand.dataType(), test.output.dataType);
- assert_array_equals(inputOperand.shape(), test.output.shape);
+ assert_equals(inputOperand.dataType, test.output.dataType);
+ assert_array_equals(inputOperand.shape, test.output.shape);
} else {
assert_throws_js(
TypeError, () => builder.input(test.name, test.descriptor));
diff --git a/tests/wpt/tests/webnn/validation_tests/instanceNormalization.https.any.js b/tests/wpt/tests/webnn/validation_tests/instanceNormalization.https.any.js
index 618be23fdec..f09e67da414 100644
--- a/tests/wpt/tests/webnn/validation_tests/instanceNormalization.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/instanceNormalization.https.any.js
@@ -193,8 +193,8 @@ tests.forEach(
.instanceNormalization.input.dataTypes.includes(
test.input.dataType)) {
const output = builder.instanceNormalization(input, test.options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const regrexp = new RegExp('\\[' + label + '\\]');
assert_throws_with_label(
diff --git a/tests/wpt/tests/webnn/validation_tests/layerNormalization.https.any.js b/tests/wpt/tests/webnn/validation_tests/layerNormalization.https.any.js
index 97bb479f04d..445bace9651 100644
--- a/tests/wpt/tests/webnn/validation_tests/layerNormalization.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/layerNormalization.https.any.js
@@ -210,8 +210,8 @@ tests.forEach(
context.opSupportLimits().layerNormalization.input.dataTypes.includes(
test.input.dataType)) {
const output = builder.layerNormalization(input, test.options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const regrexp = new RegExp('\\[' + label + '\\]');
assert_throws_with_label(
diff --git a/tests/wpt/tests/webnn/validation_tests/leakyRelu.https.any.js b/tests/wpt/tests/webnn/validation_tests/leakyRelu.https.any.js
index c49ac659ef4..b64d7681d93 100644
--- a/tests/wpt/tests/webnn/validation_tests/leakyRelu.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/leakyRelu.https.any.js
@@ -17,8 +17,8 @@ promise_test(async t => {
const options = {alpha: 0.02};
const input = builder.input('input', {dataType: 'float32', shape: [1, 2, 3]});
const output = builder.leakyRelu(input, options);
- assert_equals(output.dataType(), 'float32');
- assert_array_equals(output.shape(), [1, 2, 3]);
+ assert_equals(output.dataType, 'float32');
+ assert_array_equals(output.shape, [1, 2, 3]);
}, '[leakyRelu] Build with options');
promise_test(async t => {
diff --git a/tests/wpt/tests/webnn/validation_tests/linear.https.any.js b/tests/wpt/tests/webnn/validation_tests/linear.https.any.js
index 816dad35039..d904b9290ff 100644
--- a/tests/wpt/tests/webnn/validation_tests/linear.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/linear.https.any.js
@@ -17,8 +17,8 @@ promise_test(async t => {
const options = {alpha: 1.5, beta: 0.3};
const input = builder.input('input', {dataType: 'float32', shape: [1, 2, 3]});
const output = builder.linear(input, options);
- assert_equals(output.dataType(), 'float32');
- assert_array_equals(output.shape(), [1, 2, 3]);
+ assert_equals(output.dataType, 'float32');
+ assert_array_equals(output.shape, [1, 2, 3]);
}, '[linear] Build with options');
promise_test(async t => {
diff --git a/tests/wpt/tests/webnn/validation_tests/lstm.https.any.js b/tests/wpt/tests/webnn/validation_tests/lstm.https.any.js
index 8cc2a014a7c..8d8175ecb09 100644
--- a/tests/wpt/tests/webnn/validation_tests/lstm.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/lstm.https.any.js
@@ -296,8 +296,8 @@ tests.forEach(
options);
assert_equals(outputs.length, test.outputs.length);
for (let i = 0; i < outputs.length; ++i) {
- assert_equals(outputs[i].dataType(), test.outputs[i].dataType);
- assert_array_equals(outputs[i].shape(), test.outputs[i].shape);
+ assert_equals(outputs[i].dataType, test.outputs[i].dataType);
+ assert_array_equals(outputs[i].shape, test.outputs[i].shape);
}
} else {
const label = 'lstm_xxx';
diff --git a/tests/wpt/tests/webnn/validation_tests/lstmCell.https.any.js b/tests/wpt/tests/webnn/validation_tests/lstmCell.https.any.js
index a739761d56e..a4e15af1b25 100644
--- a/tests/wpt/tests/webnn/validation_tests/lstmCell.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/lstmCell.https.any.js
@@ -523,8 +523,8 @@ tests.forEach(
test.hiddenSize, options);
assert_equals(outputs.length, test.outputs.length);
for (let i = 0; i < outputs.length; ++i) {
- assert_equals(outputs[i].dataType(), test.outputs[i].dataType);
- assert_array_equals(outputs[i].shape(), test.outputs[i].shape);
+ assert_equals(outputs[i].dataType, test.outputs[i].dataType);
+ assert_array_equals(outputs[i].shape, test.outputs[i].shape);
}
} else {
const label = 'lstm_cell_xxx';
diff --git a/tests/wpt/tests/webnn/validation_tests/matmul.https.any.js b/tests/wpt/tests/webnn/validation_tests/matmul.https.any.js
index 4f8a1ee59a3..86440e2b0f1 100644
--- a/tests/wpt/tests/webnn/validation_tests/matmul.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/matmul.https.any.js
@@ -109,8 +109,8 @@ tests.forEach(test => promise_test(async t => {
const inputB = builder.input('b', test.inputs.b);
if (test.output) {
const output = builder.matmul(inputA, inputB);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const label = 'matmul_123';
const options = {label};
diff --git a/tests/wpt/tests/webnn/validation_tests/pad.https.any.js b/tests/wpt/tests/webnn/validation_tests/pad.https.any.js
index b45f68ab014..ca11bd2c969 100644
--- a/tests/wpt/tests/webnn/validation_tests/pad.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/pad.https.any.js
@@ -82,8 +82,8 @@ tests.forEach(
if (test.output) {
const output = builder.pad(
input, test.beginningPadding, test.endingPadding, test.options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const regrexp = new RegExp('\\[' + label + '\\]');
assert_throws_with_label(
diff --git a/tests/wpt/tests/webnn/validation_tests/pooling-and-reduction-keep-dims.https.any.js b/tests/wpt/tests/webnn/validation_tests/pooling-and-reduction-keep-dims.https.any.js
index 3beee94cd44..969c5c61a49 100644
--- a/tests/wpt/tests/webnn/validation_tests/pooling-and-reduction-keep-dims.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/pooling-and-reduction-keep-dims.https.any.js
@@ -42,8 +42,8 @@ promise_test(async t => {
});
const newShape = [1, 1001];
const reshapeOutput = builder.reshape(conv2dOutput, newShape);
- assert_equals(reshapeOutput.dataType(), avgPool2dInput.dataType());
- assert_array_equals(reshapeOutput.shape(), newShape);
+ assert_equals(reshapeOutput.dataType, avgPool2dInput.dataType);
+ assert_array_equals(reshapeOutput.shape, newShape);
const graph = await builder.build({reshapeOutput});
const result = await context.compute(
graph, {
@@ -86,8 +86,8 @@ promise_test(async t => {
});
const newShape = [1, 1001];
const reshapeOutput = builder.reshape(conv2dOutput, newShape);
- assert_equals(reshapeOutput.dataType(), reduceMeanInput.dataType());
- assert_array_equals(reshapeOutput.shape(), newShape);
+ assert_equals(reshapeOutput.dataType, reduceMeanInput.dataType);
+ assert_array_equals(reshapeOutput.shape, newShape);
const graph = await builder.build({reshapeOutput});
const result = await context.compute(
graph, {
diff --git a/tests/wpt/tests/webnn/validation_tests/pooling.https.any.js b/tests/wpt/tests/webnn/validation_tests/pooling.https.any.js
index d862d807ab4..e02d41e996b 100644
--- a/tests/wpt/tests/webnn/validation_tests/pooling.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/pooling.https.any.js
@@ -305,8 +305,8 @@ tests.forEach(
kPoolingOperators.forEach((operatorName) => {
if (test.output) {
const output = builder[operatorName](input, test.options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const regrexp = new RegExp('\\[' + label + '\\]');
assert_throws_with_label(
@@ -320,8 +320,8 @@ tests.forEach(
const builder = new MLGraphBuilder(context);
const input = builder.input('input', {dataType, shape: [1, 3, 4, 4]});
const output = builder.maxPool2d(input);
- assert_equals(output.dataType(), dataType);
- assert_array_equals(output.shape(), [1, 3, 1, 1]);
+ assert_equals(output.dataType, dataType);
+ assert_array_equals(output.shape, [1, 3, 1, 1]);
}, `[maxPool2d] Test maxPool2d with data type ${dataType}`));
promise_test(async t => {
diff --git a/tests/wpt/tests/webnn/validation_tests/prelu.https.any.js b/tests/wpt/tests/webnn/validation_tests/prelu.https.any.js
index 94eb6995374..e3a43c61d8d 100644
--- a/tests/wpt/tests/webnn/validation_tests/prelu.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/prelu.https.any.js
@@ -59,8 +59,8 @@ tests.forEach(
const slope = builder.input('input', test.slope);
if (test.output) {
const output = builder.prelu(input, slope);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const label = 'prelu_123';
const options = {label};
@@ -80,8 +80,8 @@ promise_test(async t => {
const input = builder.input(`input`, {dataType, shape});
if (context.opSupportLimits().prelu.input.dataTypes.includes(dataType)) {
const output = builder.prelu(input, input);
- assert_equals(output.dataType(), dataType);
- assert_array_equals(output.shape(), shape);
+ assert_equals(output.dataType, dataType);
+ assert_array_equals(output.shape, shape);
} else {
assert_throws_js(TypeError, () => builder.prelu(input, input));
}
diff --git a/tests/wpt/tests/webnn/validation_tests/quantizeLinear.https.any.js b/tests/wpt/tests/webnn/validation_tests/quantizeLinear.https.any.js
index 2f0b21d225a..42b8ac4b1f2 100644
--- a/tests/wpt/tests/webnn/validation_tests/quantizeLinear.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/quantizeLinear.https.any.js
@@ -82,8 +82,8 @@ tests.forEach(
const zeroPoint = builder.input('zeroPoint', test.zeroPoint);
if (test.output) {
const output = builder.quantizeLinear(input, scale, zeroPoint);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const label = 'quantize_linear_123';
const options = {label};
diff --git a/tests/wpt/tests/webnn/validation_tests/reduction.https.any.js b/tests/wpt/tests/webnn/validation_tests/reduction.https.any.js
index b56306351f0..d872b7fb4f0 100644
--- a/tests/wpt/tests/webnn/validation_tests/reduction.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/reduction.https.any.js
@@ -63,8 +63,8 @@ function runReductionTests(operatorName, tests) {
if (test.output) {
const output = builder[operatorName](input, test.options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const regrexp = new RegExp('\\[' + label + '\\]');
assert_throws_with_label(
@@ -90,8 +90,8 @@ kReductionOperators.forEach((operatorName) => {
if (context.opSupportLimits()[operatorName].input.dataTypes.includes(
dataType)) {
const output = builder[operatorName](input);
- assert_equals(output.dataType(), dataType);
- assert_array_equals(output.shape(), []);
+ assert_equals(output.dataType, dataType);
+ assert_array_equals(output.shape, []);
} else {
assert_throws_js(TypeError, () => builder[operatorName](input));
}
diff --git a/tests/wpt/tests/webnn/validation_tests/resample2d.https.any.js b/tests/wpt/tests/webnn/validation_tests/resample2d.https.any.js
index df2b85d02de..1278143d232 100644
--- a/tests/wpt/tests/webnn/validation_tests/resample2d.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/resample2d.https.any.js
@@ -204,8 +204,8 @@ tests.forEach(
const options = test.options ?? {};
if (test.output) {
const output = builder.resample2d(input, options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const options = {...test.options};
if (options.label) {
@@ -232,8 +232,8 @@ promise_test(async t => {
if (context.opSupportLimits().resample2d.input.dataTypes.includes(
dataType)) {
const output = builder.resample2d(input);
- assert_equals(output.dataType(), dataType);
- assert_array_equals(output.shape(), shape);
+ assert_equals(output.dataType, dataType);
+ assert_array_equals(output.shape, shape);
} else {
assert_throws_js(TypeError, () => builder.resample2d(input));
}
diff --git a/tests/wpt/tests/webnn/validation_tests/reshape.https.any.js b/tests/wpt/tests/webnn/validation_tests/reshape.https.any.js
index 7e49cada67a..67c895be9b7 100644
--- a/tests/wpt/tests/webnn/validation_tests/reshape.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/reshape.https.any.js
@@ -72,8 +72,8 @@ tests.forEach(
const input = builder.input('input', test.input);
if (test.output) {
const output = builder.reshape(input, test.newShape);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const label = 'reshape_xxx';
const options = {label};
diff --git a/tests/wpt/tests/webnn/validation_tests/scatterElements.https.any.js b/tests/wpt/tests/webnn/validation_tests/scatterElements.https.any.js
index 15551b2bbe5..39e99ddfdfc 100644
--- a/tests/wpt/tests/webnn/validation_tests/scatterElements.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/scatterElements.https.any.js
@@ -105,8 +105,8 @@ tests.forEach(
if (test.output) {
const output =
builder.scatterElements(input, indices, updates, options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const label = 'a_scatter_elements'
options.label = label;
diff --git a/tests/wpt/tests/webnn/validation_tests/scatterND.https.any.js b/tests/wpt/tests/webnn/validation_tests/scatterND.https.any.js
index 5e28471fffa..e529aea52ee 100644
--- a/tests/wpt/tests/webnn/validation_tests/scatterND.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/scatterND.https.any.js
@@ -58,8 +58,8 @@ tests.forEach(test => promise_test(async t => {
if (test.output) {
const output = builder.scatterND(input, indices, updates);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const label = 'a_scatter_nd'
const options = {label};
diff --git a/tests/wpt/tests/webnn/validation_tests/slice.https.any.js b/tests/wpt/tests/webnn/validation_tests/slice.https.any.js
index 3fb3cdcd6f6..cc442d3d2b1 100644
--- a/tests/wpt/tests/webnn/validation_tests/slice.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/slice.https.any.js
@@ -74,8 +74,8 @@ tests.forEach(
if (test.output) {
const output = builder.slice(input, test.starts, test.sizes);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const label = 'slice_xxx';
const options = {label};
diff --git a/tests/wpt/tests/webnn/validation_tests/softmax.https.any.js b/tests/wpt/tests/webnn/validation_tests/softmax.https.any.js
index 4a5ee563070..eb7ebbd3070 100644
--- a/tests/wpt/tests/webnn/validation_tests/softmax.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/softmax.https.any.js
@@ -34,8 +34,8 @@ tests_without_axis.forEach(
let input = builder.input(`input`, test.input);
if (test.output) {
const output = builder.softmax(input);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const options = {
label: 'softmax_xxx',
@@ -89,8 +89,8 @@ tests.forEach(
let input = builder.input(`input`, test.input);
if (test.output) {
const output = builder.softmax(input, test.axis);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const label = 'softmax_xxx';
const options = {label};
diff --git a/tests/wpt/tests/webnn/validation_tests/split.https.any.js b/tests/wpt/tests/webnn/validation_tests/split.https.any.js
index c25f839168d..863e6a79c5f 100644
--- a/tests/wpt/tests/webnn/validation_tests/split.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/split.https.any.js
@@ -111,8 +111,8 @@ tests.forEach(
const outputs = builder.split(input, test.splits, test.options);
assert_equals(outputs.length, test.outputs.length);
for (let i = 0; i < outputs.length; ++i) {
- assert_equals(outputs[i].dataType(), test.outputs[i].dataType);
- assert_array_equals(outputs[i].shape(), test.outputs[i].shape);
+ assert_equals(outputs[i].dataType, test.outputs[i].dataType);
+ assert_array_equals(outputs[i].shape, test.outputs[i].shape);
}
} else {
const regrexp = new RegExp('\\[' + label + '\\]');
diff --git a/tests/wpt/tests/webnn/validation_tests/tile.https.any.js b/tests/wpt/tests/webnn/validation_tests/tile.https.any.js
index 6ad81cba4be..06733540917 100644
--- a/tests/wpt/tests/webnn/validation_tests/tile.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/tile.https.any.js
@@ -58,8 +58,8 @@ tests.forEach(
const input = builder.input('input', test.input);
if (test.output) {
const output = builder.tile(input, test.repetitions, test.options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const options = {...test.options};
if (options.label) {
diff --git a/tests/wpt/tests/webnn/validation_tests/transpose.https.any.js b/tests/wpt/tests/webnn/validation_tests/transpose.https.any.js
index a79e14008a6..67a05ce057c 100644
--- a/tests/wpt/tests/webnn/validation_tests/transpose.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/transpose.https.any.js
@@ -58,8 +58,8 @@ tests.forEach(
const input = builder.input('input', test.input);
if (test.output) {
const output = builder.transpose(input, test.options);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const options = {...test.options};
if (options.label) {
@@ -83,8 +83,8 @@ promise_test(async t => {
if (context.opSupportLimits().transpose.input.dataTypes.includes(
dataType)) {
const output = builder.transpose(input);
- assert_equals(output.dataType(), dataType);
- assert_array_equals(output.shape(), [4, 3, 2, 1]);
+ assert_equals(output.dataType, dataType);
+ assert_array_equals(output.shape, [4, 3, 2, 1]);
} else {
assert_throws_js(TypeError, () => builder.transpose(input));
}
diff --git a/tests/wpt/tests/webnn/validation_tests/where.https.any.js b/tests/wpt/tests/webnn/validation_tests/where.https.any.js
index 2f1941556b1..424d080c009 100644
--- a/tests/wpt/tests/webnn/validation_tests/where.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/where.https.any.js
@@ -99,8 +99,8 @@ tests.forEach(
context.opSupportLimits().where.falseValue.dataTypes.includes(
test.falseValue.dataType)) {
const output = builder.where(condition, trueValue, falseValue);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.shape);
+ assert_equals(output.dataType, test.output.dataType);
+ assert_array_equals(output.shape, test.output.shape);
} else {
const label = 'where_123';
const options = {label};